内网机器B 通过网关A访问百度,设置如下:
网关A配置两个IP
公网ip IP:192.168.1.189/24 内网IP:1.1.1.1/24
开启路由
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf
sysctl -p
防火墙设置(主要在POSTROUTING链上设置)
将流经网关的数据包的源地址改为192.168.1.189
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j SNAT --to-source 192.168.1.189
保存防火墙规则到配置文件,不然下次重启就失效了。
iptables-save > /etc/sysconfig/iptables
内网机器配置 IP1.1.1.2/24
测试
1,指定数据包流出的网卡,执行。(流出的网卡必需是配有公网IP的网卡)
iptables -t nat -A POSTROUTING -o ens33 -s 1.1.1.0/24 -j SNAT --to-source 192.168.1.189
2,如果网关的IP是一个动态IP, 执行
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE
3,若果要从指定的端口转发出去,执行
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE --to-ports 80-1000
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -p udp -j MASQUERADE --to-ports 80-1000
这是不明智的选择,指定端口前必需指定使用的协议,所以最好别这样做。
但是使用随机端口是可以的,这也是默认的。
iptables -t nat -A POSTROUTING -s 1.1.1.0/24 -j MASQUERADE --random
网关A配置两个IP
公网ip IP:192.168.1.189/24 内网IP:1.1.1.1/24
网关A开启路由
echo \'net.ipv4.ip_forward=1\' > /etc/sysctl.conf
sysctl -p
网关防火墙设置(主要在PREROUTING链上设置)
iptables -t nat -A PREROUTING -d 192.168.1.189 -p tcp --dport 80 -j DNAT --to-destination 1.1.1.2:80
iptables -t nat -A PREROUTING -d 192.168.1.189 -j DNAT --to-destination 1.1.1.2
iptables-save > /etc/sysconfig/iptables
内网机器配置 IP1.1.1.2/24,并安装httpd服务
在客户端测试
1,NAT功能主要是玩的iptables的NAT表。
2,代理内网机器上网,需要设置的是POSTROUTING链
3,转发外网端口流量则是设置PREROUTING链
原文链接:使用iptables进行NAT转发,转载请注明来源!