SNAT
SNAT原理与应用:.
SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由) SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映谢
SNAT转换前提条件:
1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址
2.Linux网关开启IP路由转发 linxu系统本身是没有转发功能 只有路由发送数据
DNAT
DNAT原理与应用:
DNAT应用环境:在Internet中发布位于局域网内的服务器 DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映谢。
DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录
- Linux网关开启IP路由转发
实际配置
SNAT
在配置SNAT和DNAT之前,需要开启Linux系统中的地址转发功能,否则数据无法通过防火墙转发出去。
改/etc/sysctl.conf配置文件件,将ip_forward的值设置为1
net.ipv4.ip_forwaed=1 //将此行中的0改为1
[root@localhost /]#sysctl -p //重新读取修改后的配置
在iptables的POSTROUTING中编写SNAT规则。
iptables -t nat -A POSTROUTING -s 192.168.91.0/24 -o en36 -j SNAT --to 12.0.0.1
在某些情况下,网关的外网IP地址可能不是固定的,列如使用ADSL宽带接入时,针对这这种需求,MASQUERADE相当于SNAT的一个特列,同样同来修改数据包的源IP地址只过过它能过自动获取外网接口的IP地址。
iptables -t nat -A POSTROUTING -s 192.168.91.0/24 -o en36 -j MASQUERADE
DNAT
SNAT用来修改源地址IP,而DNAT用来修改目标IP地址,目标端口;SNAT只能用在nat表的POSTROUTING链,而DNAT只能用在nat表的PREROUTING链和OUTPUT链中。
在iptables的PREROUTING中编写DNAT规则。
iptables -t nat -A PREROUTING -i eth36 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.91.102
对于从eth36接口进入、目标IP地址为12.0.0.1、目标端口为80、且使用TCP协议的数据包,将其目的地址转换为192.168.91.102,但端口号仍为80。