Linux之iptables(NAT表)讲解篇

这是本人为了记录笔记而搜集整理的!!!!

目录

SNAT的数据流向过程:

MASQUERADE(地址伪装)

SNAT与MASQUERADE的区别: 

MASQUERADE例子:

DNAT(目标地址址转换):

DNAT的数据流向过程:

SNAT+DNAT注意事项:


——查看NAT表:

iptables -t nat -nvL

——查看iptables配置 

vim /etc/sysconfig/iptables 

Linux之iptables(NAT表)讲解篇_第1张图片


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主要用于内部服务对外发布;

你可能感兴趣的:(Linux系统安全基础,linux,p2p,运维)