本站文章绝大部分为作者原创,非商业用途转载无需作者授权,但务必在文章标题下面注明作者 满潇(Mr.Mangood)以及可点击的本博客地址超级链接 http://www.cnblogs.com/mangood/ 谢谢合作!

linux防火墙(四)—— SNET和DNET原理及应用

                    图(1)

一、SNAT策略

  应用环境:局域网主机共享单个公网IP地址接入Internet,简单的说就是企业内部局域网想访问外部服务器时,网关型防火墙需要开启的SNAT应用策略。

  SNAT策略原理:网关型防火墙把源地址转换,修改数据包的源地址。

  *未作SNAT转换时内网数据包通信的分析:

  图(2)中局域网以192.168.1.234的IP访问Web服务,发送数据包时,网络层会封装源地址和目标地址,当Web服务器进行HTTP应答时,找不到192.168.1.234的IP地址(私网地址不允许出现在公网),所以通讯中断。

  

                    图 (2)

  *进行SNAT转换后的数据包通信分析:

  图(3)中网关服务器应用了SNAT策略,当局域网访问外网的数据到达网关,会先进行路由选择,若发现数据包需要从外网接口eht0向外转发,则将其源IP地址修改为网关的外网接口地址218.29.30.31,然后再发送给目标Web服务器,相当于从网关服务器的公网IP地址提交数据访问请求,因为是公网IP,当Web服务器进行HTTP应答时,也可以正确返回响应数据包。

  

                    图 (3)

  *在上述地址转换的过程中,网关服务器会根据之前建立的SNAT映射,将响应数据包正确返回局域网中的源主机,因此,只要连接的第一个包被SNAT处理了,那么这个连接及对应数据流的其他包也会自动地进行SNAT处理,另一方面,Internet中的服务器并不知道局域网PC的实际IP地址,中间的转换完全由网关主机完成,一定程度上也起到了保护内部网络的作用。

二、设置SNAT规则

前提条件:

  局域网各主机正确设置IP地址和子网掩码

  局域网各主机正确设置默认网关地址

  Linux网关支持IP路由转发,即/etc/sysctl.conf文件中的net.ipv4.ip_forword = 1

(1)SNAT转换规则1:固定的外网IP地址

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

(2)SNAT转换规则2:非固定外网IP地址或ADSL

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

三、DNAT策略

  应用环境:在Internet中发布位于企业局域网内的服务器

  DNAT策略原理:目标地址转换,修改数据包的目标地址

  注意:企业所注册的网站域名必须对应公网IP地址

  *进行DNAT转换后的数据包通信分析:

  图(4)中,外网请求内网服务器时,目的地址是我们的公网IP 218.29.30.31,网关服务器发现你请求的是80端口,就把你的目的地址(我们的公网IP 218.29.30.31)修改为端口号为80端口的Web服务器192.168.1.6;当我们发送应答包的时候就用到了SNAT策略,这样一去一回,就构成了我们完整的通信过程。

  

                      图 (4)

四、设置DNAT规则

前提条件:

  局域网的Web服务器能够访问Internet

  网关的外网IP地址有正确的DNS解析记录

  Linux网关支持IP路由转发

(1)DNAT转换规则1:发内网Web服务

iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

(2)DNAT转换规则2:发布时修改目标端口

如果我想在外网访问我们内网服务器的22号端口,连接ssh的话不能直接把 --dport 80改为22,因为网关防火墙本身也有22号端口,我们可以对端口进行转化,把服务器的22号端口,通过网关防火墙转化为了250号端口,因此我们访问250号端口就是访问了服务器的22号端口。如下语句转换了IP的同时也转换了端口。

1 iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 250 -j DNAT --to-destination 192.168.1.6:22 #配置方法
2 ssh 218.29.30.31:250  #访问方法

 

posted @ 2016-11-02 20:36  Mr.Mangood  阅读(7622)  评论(2编辑  收藏  举报