CentOS使用iptables搭建NAT网关
环境说明:
- 本次搭建使用2台VM虚拟机,一台配置NAT网关,另一台作为使用这个搭建的NAT网关上网的测试客户机。
- 网关服务器配置2个网卡(一个使用桥接模式,一个使用仅主机模式),测试机只有一个网卡使用仅主机模式。
- 两台机器都使用的
CentOS release 6.5 (Final)
操作系统。
打开IP转发功能:
# 重启失效
echo 1 > /proc/sys/net/ipv4/ip_forward
# 或者这样,重启不失效
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf && sysctl -p
建立nat 伪装:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
# 或者只建立特定子网的NAT伪装
iptables -t nat -A POSTROUTING -s 192.168.83.0/24 -o eth1 -j MASQUERADE
建立转发:
iptables -A FORWARD -i eth0 -j ACCEPT
# 或者建立特定子网的转发
iptables -A FORWARD -s 192.168.83.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
保存iptables配置,查看检查防火墙规则:
service iptables save
iptables -nL
最简单的网关就配置好了。可以按实际情况加上各种转发规则。
需要使用这个NAT网关上网的机器添加默认路由(系统一般都默认出第一个默认网关):
# 添加使用我们搭建的网关上网
route add default gw 192.168.83.128
# 查看路由表
route -n
查询自己的本地公网IP地址信息:https://www.nowapi.com/api/ip.local
curl "http://api.k780.com/?app=ip.local&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json"
NAT网关搭建好后,可能还会有将指定端口数据转发给内网机器的需求。只需在nat链表添加类似如下规则:
# 网关9999端口收到的数据会转发给192.168.83.100的3306端口
-A PREROUTING -p tcp -m tcp --dport 9999 -j DNAT --to-destination 192.168.83.100:3306
参考资料:
暂无评论,快来抢沙发。