iptables_nat篇(三)

target:SNAT,DNAT,MASQUERADE

     互联网是由众多局域网组织连接起来的,但是私网地址不能直接访问互联网,如果每台主机都配置公网地址就不够用了,因此需要用到地址转换功能,有两种情况:

  • 作为服务器端,要接受客户端的请求,而客户端访问的是公网地址,而服务器端是私网地址,于是需要将公网地址转换为对应的私网地址,这就是所谓的DNAT
  • 作为客户端,比如公司内部的局域网内的主机需要访问互联网,就需要通过网关路由出去,除了添加路由,我们可以将这些主机配置的私网地址转换为网关的地址,这就是SNAT
      说明:SNAT和DNAT可以不仅可以针对单个地址做转换,也可以针对连续的地址做转换;并且可以针对端口做nat,但是这些都是静态的ip地址转换,若是以dhcp获取的地址怎么办?此时需要用MASQUREADE来转换,它可以自动识别来源地址自动判断后做转换,也可以做静态ip地址的转换,但是开销比较大,因此,如果是静态地址,不建议使用MASQUREADE方式进行转换

Examples

       目标:模拟一个公网环境和一个私网环境,然后私网通过防火墙的SNAT访问互联网,公网通过防火墙DNAT访问私网主机上的服务
       环境准备:vmware上面准备三台主机,其中第一台(host1)当做防火墙,配置两个网卡,分别连接公网和私网,第二台(host2)作为互联网上的主机,第三台(host3)作为本地局域网内的一台主机,172.16段可以上互联网,192.168不可以上互联网。将其中两个卡做桥接,另外两个卡做vmnet,以达到网络隔离的作用,如图:



HOST1:

 eno16777736 (桥接):172.16.52.10/16  172.16.0.1

         eno33554984(vmnet2) :192.168.1.2/24 

HOST2: 

          eno16777736(桥接) :172.16.52.59/16 172.16.0.1

HOST3:

            eno16777736 (vmnet2) :192.168.1.4/24 192.168.1.2

            将host1的第二章网卡地址作为自己的网关


eg:

host3:

        #ping 192.168.1.2  通

       #ping 172.16.52.10 通  

            由于host1是linux主机,只要是收到ping包,每个网卡都会予以响应,地址是内核的,与网卡无关

       #ping 172.16.52.59  不通

           由于没有开启转发功能,192.168.1.4上没有到172网段的路由,因此不通

解决办法:

host1:

     #iptables -t nat  -A POSTROUTING   -s  192.168.1.0/24  -j  SNAT  --to-source  172.16.52.10

     ///此处做了SNAT源地址转换,主要发生在本地局域网的主机想要通过唯一的路由器主机访问公网,应用在nat表的POSTROUTING链上 ,参数为 --to-source,一般做了SNAT后,回来不用做DNAT,因为它会自动做的,其实是在请求时就生成一个ID号,回来的时候根据这个ID号判断出主机地址,自动做DNAT。

   测试:在host3上面  ping  172.16.52.59 本来是不通的,但是前提是host3上面需要host上第二张网卡的网关,就可以ping通了,还记的上面吗,即使加了网关也是ping不通的,因为没有做nat,但是在host2上面ping 192.168.1.4不通,需要做DNAT,接着往下。。。

host1:

   #iptables -t nat -F 

     ///为了防止其他规则的干扰,将防火墙清空

    #iptables -t nat -A PREROUTING  -d  172.16.52.10   -p  tcp  --dport  22   -j   DNAT  --to-destination  192.168.1.4[:port]

     ///这里做了DNAT,后面的的端口如果省略不写,就表示和前面一样,DNAT表示开放本地的服务给其他网段的主机访问,默认也是自动生成SNAT表

   测试:在 host2上面   ssh  172.16.52.10  ,成功登陆,会发现ifconfig执行结果为  192.168.1.4,说明DNAT成功,不能用ping,因为ping是要经过路由表,这里是NAT只和内核有关,与网关无关,并且还可以通过抓包工具  tcpdump   -i   enoxxxxx    -nn   host  ip   来分析来往的ip地址


MASQUERADE:

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

   MASQUERADE命令的功能和SNAT一样,不过是解决动态的源地址IP的SNAT问题,测试方法和SNAT一样,并且也可以通过tcpdump来装包分析。虽然比较方便,但是相对于SNAT来说有额外的开销,因此静态地址的转换建议少使用。

  

    

    

       

     


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值