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 23:06
下一篇 2017-06-13 09:50

相关推荐

  • 开发团队的效率

    我之前写过一篇叫《加班与效率》的文章,从概念上说了一些我对“效率”的认识,但是那篇文章趋于概念化,对于一些没有经历过这样的环境的同学来说,可能会觉得太抽象了。很早以前就想写一篇更具体一点的,可执行的文章与《加班与效率》这篇文章相辉映,并再把我两年前在杭州QCon上的那个“鼓吹工程师文化”的《建一支强大的小团队》(新浪微盘)的观点再加强一下。 但是我遇到了一些…

    Linux干货 2016-08-15
  • 计算机组成与Linux基础

    一 计算机组成 冯诺依曼体系 计算机处理数据和指令一律用二进制表示 指令和数据不加混合存储在同一存储器中 顺序执行程序每一条指令 计算机硬件由运算器、控制器、存储器、输入设备以及输出设备组成 计算机组成部分 CPU:含有指令集,对程序进行运算和判断并分为两个主要单元分别为算术逻辑单元和控制单元。其中算术逻辑单元主要负责程序运算与判断,控制单元负责协调组件与个…

    Linux干货 2017-07-30
  • N22-℡浮生.若夢 ╮第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离 网桥:是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,       不是共享一条背板总线,可隔离冲突域…

    Linux干货 2016-11-28
  • Linux-文件系统挂载:mount的用法

     文件系统挂载  本章详细介绍文件系统挂载、卸载(mount,umount);  如何通过mount命令挂载使用文件系统、挂载常用参数、以及开机自动挂载(/etc/fstab)。    挂载描述:             挂载:将额外文件系…

    2017-06-19
  • Shell脚本之流程控制语句

    Shell脚本之流程控制语句 1、 if语句 (1)if 条件;then        action1 else        action2 fi  注意:shell里没有缩进要求。 (2)if 条件1;then   …

    Linux干货 2017-04-16
  • gawk基础

    gawk程序是Unix中原始awk程序的GNU版本。gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令。在gawk编程语言中,可以完成下面的事情: (1)定义变量来保存数据; (2)使用算数和字符串操作符来处理数据; (3)使用结构化编程概念(比如if-then语句和循环)来为数据处理增加处理逻辑; (4)通过提取数据文件中的数…

    Linux干货 2017-05-22