iptables的DNAT、SNAT配置

DNAT:目的地址转换。当外网主机访问内网的某台服务器的时候,如果直接暴露服务器的IP于公网,可能会遭受各种各样的攻击,而DNAT的主要作用就是在服务器前面添加一台防火墙。将防火墙的地址公布出去,让外网客户端通过访问防火墙的地址就可以访问到本地服务器。这样就起到了保护服务器的目的;

SNAT:源地址转换。内网主机在访问互联网的时候所有源地址都转换为防火墙的外网地址,起到隐藏内网客户机的目的。同时,也解决了IPV4公网地址不够用的需求。

一、实验需求

通过三台服务器模拟iptables的DNAT、SNAT的配置。

二、实验环境

三台服务器:

  1. 内网服务器:提供httpd服务。IP:192.168.11.137

  2. 外网客户端:用于访问内网服务器。IP:172.16.251.247

  3. iptables防火墙:用一台虚拟机开启核心转发功能来模拟,用于实现DNAT和SNAT的功能。

    • IP1:192.168.11.144(内网服务器网关)

    • IP2:172.16.250.151(外网客户端网关)

    拓扑如下:

    iptables的DNAT、SNAT配置

三、实验配置

DNAT配置

  1. 内网服务器配置:

    1. 安装httpd,vsftpd和samba服务:

     yum install -y httpd vsftpd samba 
    1. 配置默认网关为192.168.11.144

     route add default gw 192.168.11.144
  2. 外网客户端配置:

    1. 配置默认网关:

     route add default gw 172.16.250.151
  3. iptables主机配置:

    1. 开启核心转发功能:

     echo 1 > /proc/sys/net/ipv4/ip_forward
    1. 此时外网主机和内网主机就能够相互ping通了;

    2. 配置DNAT:

     iptables -t nat -A PREROUTING -d 172.16.250.151 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.137

    注意:

    DNAT需要在PREROUTING链做转发策略。

    1. 此时通过外网主机访问内网服务器的httpd服务就可以成功了,此处采用在内网主机和iptables的172.16.250.151网口进行抓包分析DNAT工作过程:

      1. 内网服务器抓包截图:

        iptables的DNAT、SNAT配置

        可以看到源地址为172.16.251.247,目的地址为192.168.11.137

      2. iptables抓包截图:

        iptables的DNAT、SNAT配置

        我们访问的目的地址为172.16.250.151,而此处看到源地址为172.16.251.247,而目的地址却为192.168.11.137。可以证明我们访问172.16.250.151的80端口被转发到192.168.11.137的80端口上了。此处证明在DNAT的过程中源地址是永久不变的,而目的地址会根据策略而发生变化。

SNAT配置

注意:此处外网和内网位置做调换,即如下拓扑图的形式:外网成为服务器,而内网为访问服务的客户端

iptables的DNAT、SNAT配置

  1. iptables主机配置策略如下:

     ##首先清空刚才的DNAT策略## iptables -t nat -F iptables -t nat -A POSTROUTING -s 172.16.251.147 -j SNAT --to-source 192.168.11.144
  2. 此时外网服务端可以正常访问到外网httpd服务,此时在外网主机和防火墙的192.168.11.144进行抓包分析SNAT的工作过程:

    1. 外网主机抓包:

      iptables的DNAT、SNAT配置

      此处我们是通过内网客户端172.16.251.147访问的外网的httpd服务,此处可以看到源地址和目的地址为:

      • 源地址:192.168.11.144.50076

      • 目的地址:192.168.11.137.80

      证明源地址已经被转换为防火墙的外网网口了。

    2. 防火墙内网172.16.251.247抓包分析:

      iptables的DNAT、SNAT配置

      • 源地址:172.16.251.247.50080

      • 目的地址:192.168.11.137.80

      此处证明报文在进入防火墙的时候源地址还没有发生变化。说明源地址是从防火墙出去之前发生的转换。

原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/77968

(1)
王子豪王子豪
上一篇 2017-06-11
下一篇 2017-06-13

相关推荐

  • httpd-2.4 功能生动实现 (Blog 13)

    CentOS 7 与 CentOS 6 访问控制区别、虚拟主机

    2017-12-01
  • Linux的初步认识

         Linux的哲学思想 (1)一切都是一个文件(包括硬件) (2)小型,单一用途的程序 (3)链接程序,共同完成复杂的任务 (4)避免令人困惑的用户界面 (5)配置数据储存在文本中 1.Linux分为普通用户和root用户 普通用户:权利非常有限对系统的损害比较小 root用户:被称作为超级用户,对系统接近完整的控制,对…

    2017-05-20
  • Linux开学一周的学习心得

    Linux,这个名字第一次听到是通过张超老师给我讲解,因为我在学校学的是金融数学,平时对这方面没有太多接触。当时对Linux就知道是个系统,随后在网上搜了搜,了解也不太多。 直到今天已经来马哥教育一星期了,刚入学的这一星期上课,都是一些基本的命令,感觉学着还蛮有意思,教学的安排也非常合理,我们大家学一天还能自己动手操作一天,既能专心听课,又能把学到的知识巩固…

    2017-07-15
  • 优质代码的十诫

    1.- DRY: Don’t repeat yourself. DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让…

    Linux干货 2015-04-01
  • grub文件文件修复

    首先我们先破坏一下grub文件 这里我们先查看一下电脑是哪块硬盘启动的 这里我们就直接破坏硬盘的二进制数据,以达到grub的破坏。 要记住我们只能破坏前446字节,也就是bootloader。后面64字节是分区表。 我们可以查看一下前512字节的二进制文件 hexdump -C -n 512 /dev/sda 先破坏/boot/grub/stage1的前44…

    2017-07-28
  • 图解Linux终端类型

    个人浅见 欢迎指正

    Linux干货 2016-10-16