SNAT与DNAT策略及应用
SNAT策略
SNAT(Source Network Address Translation)源地址转换
作用:是linux防火墙的一种地址转换操作,也是iptables命令中的一种数据包控制类型,其作用是指定条件修改数据包源IP地址。可以解决局域网共享上网的问题,通过网卡服务器通过两块网卡ens0,ens1分别连接Internet和局域网。
SNAT:源地址转换,代理内部客户端访问外部网络
目标地址不变,重新改写源地址,并在本机建立NAT表项,当数据返回时,根据NAT表将目的地址数据改写为数据发送出去时候的源地址,并发送给主机,目前基本都是解决内网用户用同一个公网IP地址上网的情况。
SNAT的数据流向过程:
首先进入PREROUTING,发现不是本网段的地址,而后开始查找路由表(查找路由的过程在PREROUTING和FORWARD之间),于是经过FORWARD链进行转发,在通过POSTROUTING时进行NAT转换。在这个流程中,NAT转换的步骤在POSTROUTING链上实现,之所以不再PREROUTING上做NAT是因为数据包在进来之前,还不知道是本网段地址还是外网地址。
SNAT应用
永久开启路由转发
vi /etc/sysctl.conf ..... net.ipv4.ip_forward=1 sysctl -p '查看'
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
临时开启路由转发
echo 1 >/proc/sys/net/ipv4/ip_forward
1
1
设置SNAT
SNAT策略只能用于nat表的POSTROUTING链,使用iptables命令编写SNAT策略时,需要结合
“–to-source 192.168.2.1”
通过分析得知,需要针对局域网PC访问Internet的数据包采取SNAT策略,将源地址改成网关的公网ip地址。
注:若想SNAT策略长期有效,将相关命令写入到rc.local配置文件。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT--to-source 192.168.2.1 iptables -T nat -L POSTROUTING 查看 注: iptables -t nat -I POSTROUTING -o 外网网卡 -s 内网网段 -j SNAT --to-source 外网ip地址 #适用于外网ip地址固定场景
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
DNAT策略
典型应用是在Internet发布企业内部服务器,处理数据包的切入时机在路由选择之前(PREROUTING)进行。主要操作是将访问网关外网接口ip地址(公用地址)的数据包目标地址修改为实际提供服务的内部服务器IP地址(私有地址)。
DNAT:目标地址转换,将内部服务器发布至外部网络
和SNAT相反,源地址不变,重新修改目标地址,在本机建立NAT表项,当数据返回时,根据NAT表将源地址修改为数据发送过来时的目标地址,并发给远程主机在DNAT的基础上,可以根据请求数据包的端口做PNAT(端口转换,也称为端口映射),可以根据请求数据包不同的端口改写不同的目标地址,从而发送给不同的主机这在用一个公网地址做不同服务时用的比较多,而且相对来说,用NAT的方式可以隐藏后端服务器的真实地址,比较安全。
DNAT的数据流向过程
在DNAT中,NAT要在PREROUTING链上做。在数据进入主机后,路由选择过程是在PREROUTING和FORWARD之间的,所以应该先做地址转换之后再进行路由选择,而后经过FORWARD链,最后从POSTROUTING链出去。
DNAT应用
开启路由转发
vi /etc/sysctl.conf
.....
net.ipv4.ip_forward=1
sysctl -p
1
2
3
4
5
6
1
2
3
4
5
6
设置DNAT策略
使用iptables命令设置DNAT策略时,需要结合'–to-destination IP地址' 选项来指定内部服务器IP地址如'-j DNAT --to-destination 192.168.1.5'
iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.1 -j DNAT --to-destination 192.168.1.5 iptables -t nat -L PREROUTING 查看
- 1
- 2
- 1
- 2