Linux里的防火墙(中):使用iptables实现DNAT和SNAT

来源:互联网 发布:淘宝店招950x120 编辑:程序博客网 时间:2024/05/18 01:02

SNAT(源地址转换) 和 DNAT(目标地址转化)都是为了解决网络地址不足而演变出的技术。


相关概念:

SNAT:源地址转换,顾名思义,就是为了将ip数据包里的源地址替换成我们希望替换掉的地址。
DNAT:目标地址转换,是为了将IP数据包中的目标地址转换成我们希望替换掉的地址。



它们的应用:
SNAT 
(一)想象一下,一个公司申请到了一个公网Ip,现在公司内有30台电脑,都处于192.168.0.0网段,现在希望访问
互联网,由于192网段属于私有地址,无法在公网上公开。那么现在唯一的方法就是利用这一个公网地址来实现
30台电脑来访问互联网。那么就需要
1 )网关一个,配置公网ip假设是64.152.22.14
2)通过集线器或者交换机将192网段连接到1)上的网关上
3)通过网关,实现SNAT将所有192网段的请求都转变为64.152.22.14的请求。
那么使用iptables怎么实现?

分析:
1)需要用到nat表
2)需要在POSTROUTING里面设置

iptables实现:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 64.152.22.14


(二)另一种情况,假如公司是通过ppp拨号上网,这个时候它的外网地址就是动态的,不确定自己的外网地址。那么这个时候,我们需要用到地址伪装,将所有的内网地址都自动伪装成动态外网地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE



DNAT
(一)假设一个公司只有一个外网ip,这个时候,它内部有l两台服务器192.168.0.1  192.168.0.2,分别是http, mysql,希望将这两台服务器都共享到外网,那么这个时候就需要根据这两个服务的端口的不同来配置DNAT
分析:1)HTTP的端口80    MYSQL的端口3306
  2)需要用到net表
  3)需要在PREROUTING里设置

iptables实现:

iptables -t nat -A PREROUTING -d 64.152.22.14 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1iptables -t nat -A PREROUTING -d 64.152.22.14 -p tcp --dport 3306 -j DNAT --to-destination 192.168.0.1