[login] 简单操作使 CentOS 支持 Fullcone NAT 阅读这篇文章,你可能需要了解什么是 Fullcone NAT > 摘自网络 > 1.Full Cone:IP Port不受限 Full Cone仅仅做单纯的地址转换,不正确进出的包做限定。 > 2.Restricted Cone:IP受限,Port不受限 Restricted Cone NAT会对进出的包稍加限制。从内部送发出的包的目的IP会被记住。 仅仅有这些以前收过包的地址能够发送包进入NAT。其他地址发送的包都会被限制。 > 3.Restricted Port Cone:IP,Port均受限 Restricted Port Cone NAT相对于Restricted Cone NAT添加了port这层限制。 > 4.Symmetric NAT:Port,IP均受限,且对每一个外部主机或port的会话都会映射为不同的port(洞) Symmetric NAT是4种中最为严谨的。前3种做地址转换时,不管包送往何处,NAT内部同一个内部地址都相应到同一个外部地址。而Symmetric NAT则每个内部地址相应到不同的外部地址。Symmetric NAT仅仅同意先由私有网络内的使用者发送包到的外部地址能够回传封包。 简单来说,如果你有需求让每个设备都能和公网上的设备进行游戏联机,那Fullcone NAT/ NAT 1你是必须要的。 目前基本上所有路由器都支持Fullcone NAT了,但是服务器基本上内核都不会启用Fullcone NAT这个东西。我之前用wireguard组网的时候,发现没办法和朋友联机,因此研究了如何让Linux服务器支持Fullcone NAT。 我们可以使用 [Chion82](https://github.com/Chion82 "Chion82") 写的一个模块,让Linux服务器支持Fullcone NAT。 以下教程基于 CentOS 7.7 64bit,使用的源代码是 [https://github.com/Chion82/netfilter-full-cone-nat](https://github.com/Chion82/netfilter-full-cone-nat "https://github.com/Chion82/netfilter-full-cone-nat") 我们先安装一下基本的依赖,请注意你的服务器的内核需要安装完整的kernel,tools,devel,headers yum install gcc gcc-c++ autoconf autogen libmnl libmnl-devel libtool-devel libtool -y 获取所需要的源代码 ``` git clone git://git.netfilter.org/libnftnl.git git clone git://git.netfilter.org/iptables.git git clone https://github.com/Chion82/netfilter-full-cone-nat.git ``` 编译 libnftnl 并安装 ``` cd libnftnl sh autogen.sh ./configure make make install ``` 编译 netfilter-full-cone-nat模块 ``` cd ~/netfilter-full-cone-nat make modprobe nf_nat insmod xt_FULLCONENAT.ko ``` 编译iptables 1.8.4 ``` cp ~/netfilter-full-cone-nat/libipt_FULLCONENAT.c ~/iptables/extensions/ ln -sfv /usr/sbin/xtables-multi /usr/bin/iptables-xml ./autogen.sh PKG_CONFIG_PATH=/usr/local/lib/pkgconfig export PKG_CONFIG_PATH ./configure make make install ``` 更新 iptables ``` #先关闭iptables systemctl stop iptables #删除原来的iptables rm -rf /sbin/iptables rm -rf /sbin/iptables-restore rm -rf /sbin/iptables-save #复制你自己编译的iptables cd /usr/local/sbin cp /usr/local/sbin/iptables /sbin/ cp /usr/local/sbin/iptables-restore /sbin/ cp /usr/local/sbin/iptables-save /sbin/ #检验iptables版本 iptables -V ``` 设置开机自动加载Fullcone模块 ``` kernel=`uname -r` cp ~/netfilter-full-cone-nat/xt_FULLCONENAT.ko /lib/modules/$kernel/ depmod echo "modprobe xt_FULLCONENAT" > /etc/sysconfig/modules/xt_FULLCONENAT.modules chmod 755 /etc/sysconfig/modules/xt_FULLCONENAT.modules reboot lsmod | grep xt_FULLCONENAT(有项目) ``` iptables 设置 fullcone 规则 ``` iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT #same as MASQUERADE iptables -t nat -A PREROUTING -i eth0 -j FULLCONENAT #automatically restore NAT for inbound packets service iptables save ``` [/login] 该部分仅登录用户可见 最后修改:2022 年 03 月 30 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏