情形:内部的服务器能被外面的机器访问,Linux作为网关上要进行双向地址转换。
假设:外部的ip为202.xx.xxx.xx/29,内部的服务器192.168.10.100/24
Gateway_IP为网关的外部ip地址,Gateway_LAN为网关的内部ip地址
#在外网卡上增加一个IP地址,使网关能接收到发送给202.xx.xxx.xx的数据包。
ip addr add 202.xx.xxx.xx/29 dev eth0
#将发送给202.xx.xxx.xx的数据包,转换成发送给192.168.10.100的,
#并负责将后续的应答包转换回来,但由192.168.10.100发起的连接不会进行处理。
iptables -t nat -A PREROUTING -d 202.xx.xxx.xx --to 192.168.10.100 -j DNAT
#将由192.168.10.100发起连接的数据包,转换成由202.xx.xxx.xx发出,
#并负责将后续的应答包转换回来,否则从192.168.10.100发起的连接不会被转换
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.100 \
--to 202.xx.xxx.xx -j SNAT
#从内部发送给192.168.10.100的要进行转换为从网关发出的,
#否则内部的机器无法连接202.xx.xxx.xx,因为返回的数据包不经过网关就发送回去了
iptables -t nat -A POSTROUTING -d 192.168.10.100 -s 192.168.10.100/24 \
--to $Gateway_LAN -j SNAT
#伪装,共享上网,
iptables -t nat -A POSTROUTING -j SNAT -o eth0 -s 192.168.10.100/24 \
--to $Gateway_IP
阅读(1363) | 评论(1) | 转发(0) |