|
本帖最后由 qfnuzlr 于 2018-5-13 09:01 编辑
源码及作者博客
https://github.com/Chion82/netfilter-full-cone-nat
https://blog.chionlab.moe/2018/02/09/full-cone-nat-with-linux/
编译:
修改 include/netfilter.mk ,加入下面的代码- $(eval $(call nf_add,IPT_FULLCONENAT,CONFIG_NETFILTER_XT_TARGET_FULLCONENAT, $(P_XT)xt_FULLCONENAT))
- IPT_BUILTIN += $(IPT_FULLCONENAT-y) $(IPT_FULLCONENAT-m)
修改 package/kernel/linux/modules/netfilter.mk,加入下面的代码- define KernelPackage/ipt-fullconenat
- TITLE:=Netfilter full-cone NAT support
- KCONFIG:= \
- CONFIG_NETFILTER_IP_NF_TARGET_FULLCONENAT \
- CONFIG_NETFILTER_XT_TARGET_FULLCONENAT \
- CONFIG_NF_CONNTRACK_EVENTS=y
- FILES:=$(foreach mod,$(IPT_FULLCONENAT-m),$(LINUX_DIR)/net/$(mod).ko)
- AUTOLOAD:=$(call AutoProbe,$(notdir $(IPT_FULLCONENAT-m)))
- $(call AddDepends/ipt,+kmod-nf-nat)
- endef
- $(eval $(call KernelPackage,ipt-fullconenat))
把附件的 651-netfilter-add-xt_FULLCONENAT-target.patch 复制到 target/linux/generic/hack-(内核版本) 中
把附件的 800-fullconenat-target.patch 复制到 package/network/utils/iptables/patches/ 中
make menuconfig 选择 Kernel modules - Netfilter extensions - kmod-ipt-fullconenat,后编译
使用:
先禁用 OpenWrt 自带的 MASQUERADE NAT (Symmetric NAT):在 网络-防火墙 基本设置中去掉 WAN 区域的“IP 动态伪装”选项,保存
禁用 NAT 后会断网,然后在自定义规则中加两行规则启用 Full cone NAT:
- iptables -t nat -A zone_wan_prerouting -j FULLCONENAT
- iptables -t nat -A zone_wan_postrouting -j FULLCONENAT
验证:使用“NAT类型检测工具”(自行搜索)测试,测试时要关闭 Windows 防火墙
|
|