iptables网络地址转换SNAT DNAT

80 阅读2分钟

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解析记录

  1. Linux网关开启IP路由转发

实际配置

SNAT

在配置SNAT和DNAT之前,需要开启Linux系统中的地址转发功能,否则数据无法通过防火墙转发出去。

改/etc/sysctl.conf配置文件件,将ip_forward的值设置为1

net.ipv4.ip_forwaed=1             //将此行中的0改为1

[root@localhost /]#sysctl -p     //重新读取修改后的配置

image.png

在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链中。 image.png 在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。