SNAT 使用:

SNAT:源地址转换,是Linux防火墙的一种地址转换操作,也是iptables命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的源IP地址。

SNAT策略只能用在nat表的POSTROUTING链中,使用iptables命令编写SNAT策略时,需要结合“--to-source  IP地址”选项来指定修改后的源IP地址。

例如:Linux网关服务器通过eth0和eth1分别连接Internet和局域网,其中eth0的IP地址为218.29.30.31,eth1的IP地址为192.168.1.1。现在要求在Linux网关服务器上配置规则,使用局域网内的所有用户可以通过共享的方式访问互联网。可执行以下操作。

1) 开启路由转发.

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

开启路由转发功能:

永久开启:

修改/etc/sysctl.conf文件加入以下内容:

net.ipv4.ip_forward = 1

完成后执行:

sysctl -p #重新加载配置文件使之生效

临时开启:

echo 1> /proc/sys/net/ipv4/ip_forward #临时开启方式1
sysctl -w net.ipv4.ip_forward=1       #临时开启方式2

2) 在iptables的POSTROUTING中编写SNAT规则。

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31

注意:

在某些情况下,网关的外网IP地址可能不是固定的,例如使用ADSL宽带接入时,针对这这种需求,iptables提供了一个名为MASQUERASE(伪装)的数据包控制类型,MASQUERADE相当于SNAT的一个特例,同样用来修改数据包的源IP地址只不过它能够自动获取外网接口的IP地址。

参照上一个SNAT案例,若要使用MASQUERADE伪装策略,只需要去掉SNAT策略中的“--to-source IP地址”。然而改为“-j MASQUERADE”指定数据包的控制类型。对于ADSL宽带连接来说,连接名称通常为ppp0,ppp1等。操作如下

[root@localhost /]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

 

DNAT使用:

DNAT:目标地址转换,是Linux防火墙的另一种地址转换操作,同样也是iptables命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的目标IP地址,目标端口。

DNAT策略与SNAT策略非常相似,只不过应用方向反过来了。SNAT用来修改源地址IP,而DNAT用来修改目标IP地址,目标端口;SNAT只能用在nat表的POSTROUTING链,而DNAT只能用在nat表的PREROUTING链和OUTPUT链中。

例如:公司内部局域网内搭建了一台web服务器,IP地址为192.168.1.7,现在需要将其发布到互联网上,希望通过互联网访问web服务器。那么我们可以执行如下操作。

1)在iptables的PREROUTING中编写DNAT规则。

[root@localhost /]#iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.7:80

2)再例如:公司的web服务器192.168.1.7需要通过互联网远程管理,由于考虑到安全问题,管理员不希望使用默认端口进行访问,这时我们可以使用DNAT修改服务的默认端口。操作如下:

[root@localhost /]#iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j DNAT --to-destination 192.168.1.7:22

3)在外网客户端浏览器中访问网关服务器的外网接口,可以发现访问的居然是内网192.168.1.7的web服务器的网页。而在使用sshd连接2346端口时,居然可以远程连接到192.168.1.7服务器上。

用DNAT我们也可以做负载均衡,其实lvs就是用DNAT做的负载均衡

DNAT让防火墙把所有到它自己HTTP端口的包转发给LAN内部真正的Web服务器。目的地址也可以是一个范围,这样的话,DNAT会为每次请求随机分配一个机器,这样我们可以用这个dnat做负载平衡。

 

好了 我们通过以上案例讲解了DNAT和SNAT, 以后有机会可以去尝试在自家做做这些实验,不过现在好多路由器都已经集成了这些功能,可以在路由器设置界面轻松完成。

posted on 2021-01-06 09:48  EZgod  阅读(389)  评论(0编辑  收藏  举报