本帖最后由 niyoudeyulj 于 2017-12-27 11:27 编辑
一、环境信息
可以连接外网的物理机,内网IP:192.168.124.10(eth0) 外网IP:10.0.81.82(eth1)
内网的物理机1,内网IP:192.168.124.81(eth0)
内网的物理机2,内网IP:192.168.124.82(eth0)
拓扑图:
如上图,只有外网的可以上网,内网的机器是无法上网的,我们在外网机器上设置iptables规则,实现nat映射,使外网的机器可以直接访问内网的服务器,内网服务器也可以上网。
二、iptables nat概念
本文主要讲iptables nat功能,其它相关iptables功能就不详细讲了,还请谅解。
SNAT :源地址转换,改变数据包的源地址;防火墙会使用外部地址,替换数据包的本地网络地址,这样使网络内部主机能够与网络外部通信
DNAT:DNAT策略与SNAT策略非常相似,只不过应用方向反过来了。SNAT用来修改源地址IP,而DNAT用来修改目标IP地址,目标端口;SNAT只能用在nat表的POSTROUTING链,而DNAT只能用在nat表的PREROUTING链和OUTPUT链中。 SNAT用于内网机器上网,DNAT主要实现外网IP和内网IP 一一映射 三、DNAT设置 以下命令都在外网机器上设置 1、需要开启ip_forward,实现转发 echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward=1 2、为防止其它iptbales 规则有影响,先全部清空;如果确认没问题,可以不用清空规则 iptables -F iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
3、设置dnat规则
给外网eth1网卡多配置两个IP
ifconfig eth1 eth1:1 10.0.81.101 netmask 255.255.0.0
ifconfig eth1 eth1:2 10.0.81.102 netmask 255.255.0.0
设置 10.0.81.101映射成192.168.124.81,10.0.81.102映射成192.168.124.82
iptables -t nat -A PREROUTING -d 10.0.81.101 -j DNAT --to-destination 192.168.124.81
iptables -t nat -A POSTROUTING -d 192.168.124.81 -j SNAT --to 192.168.124.10
iptables -t nat -A PREROUTING -d 10.0.81.102 -j DNAT --to-destination 192.168.124.82
iptables -t nat -A POSTROUTING -d 192.168.124.82 -j SNAT --to 192.168.124.10
4、检查映射是否成功,映射成功,没有问题
四、SNAT设置
设置DNAT以后,可以通过映射的IP访问内网的机器,但是内网的机器无法上网,需要设置SNAT
1、外网配置SNAT
iptables -t nat -A POSTROUTING -s 192.168.124.0/24 -o eno2 -j SNAT --to-source 10.0.81.82
2、内网机器配置网关
在外网配置完成以后,需要更改内网机器的网关,否则还是不同
route delete -net 0.0.0.0
route add default gw 192.168.124.10 dev eth0
3、检查,成功
通过以上设置,可以实现IP nat 映射,也可以实现内网上网,如有疑问,请联系。
|