这是本人为了记录笔记而搜集整理的!!!!
目录
SNAT的数据流向过程:
MASQUERADE(地址伪装)
SNAT与MASQUERADE的区别:
MASQUERADE例子:
DNAT(目标地址址转换):
DNAT的数据流向过程:
SNAT+DNAT注意事项:
——查看NAT表:
iptables -t nat -nvL
——查看iptables配置
vim /etc/sysconfig/iptables
SNAT(源地址转换):
- 主要应用于内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做地址转换,将内部地址的私有IP转换为公网的公有IP,主要用于内部共享IP访问外部。
- SNAT策略只能用在nat表的POSTROUTING链,使用iptables命令编写SNAT策略时,需要结合‘--to-source IP’选项来指定修改后的源IP地址
SNAT的数据流向过程:
- 数据包首先进入prerouting,发现不是本网段的地址,而后开始查找路由表(查找路由的过程在prerouting和forword之间),于是经过forword链进行转发,在通过postrouting时进行NAT转换。
- 在这个流程中,NAT转换的步骤在postrouting链上实现,之所以不再prerouting上做nat是因为数据包在进来之前,还不知道是本网段地址还是外网地址
MASQUERADE(地址伪装)
- 是snat中的一种特例,可以实现自动化的SNAT。
SNAT与MASQUERADE的区别:
- SNAT可以NAT成一个地址,也可以NAT成多个地址,但是,对于SNAT,不管是几个地址,必须明确的指定要SNAT的ip,
- 假如当前系统用的是ADSL动态拨号方式,那么每次拨号,出口ip192.168.5.3都会改变,而且改变的幅度很大,不一定是192.168.5.3到192.168.5.5范围内的地址,这个时候如果按照现在的方式来配置iptables就会出现问题了,因为每次拨号后,服务器地址都会变化,而iptables规则内的ip是不会随着自动变化的,每次地址变化后都必须手工修改一次iptables,把规则里边的固定ip改成新的ip,这样是非常不好用的。
- MASQUERADE就是针对这种场景而设计的,他的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT。
MASQUERADE例子:
- iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
- 如此配置的话,不用指定SNAT的目标ip了,不管现在eth0的出口获得了怎样的动态ip,MASQUERADE会自动读取eth0现在的ip地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。
DNAT(目标地址址转换):
- 是Linux防火墙的另一种地址转换操作,同样也是iptables命令中的数据包控制类型,其作用是—根据指定条件修改数据包的目标IP地址和目标端口
- 当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。
- DNAT策略只能用在nat表的PREROUTING链,使用使用iptables命令编写DNAT策略时,需要结合‘--to-destination IP地址’选项来指定内部服务器的IP地址
DNAT的数据流向过程:
- 在DNAT中,NAT要在prerouting链上做。之前提到过,在数据进入主机后,路由选择过程是在prerouting和forword之间的,所以应该先做地址转换之后,再进行路由选择,而后经过forword,最后从postrouting出去
SNAT+DNAT注意事项:
- SNAT策略只能用在nat表的POSTROUTING链;
- SNAT将内部地址的私有IP转换为公网的公有IP;
- SNAT用于内部共享IP访问外部。
- DNAT策略只能用在nat表的PREROUTING链;
- DNAT主要用于内部服务对外发布;