开发者

Linux防火墙之SNAT和DNAT详解

开发者 https://www.devze.com 2025-09-28 09:57 出处:网络 作者: yucfkyu
目录1.SNAT是什么2.DNAT是什么SNAT的典型应用场景SNAT策略的工作原理如何用iptables实现地址转换准备任务过程客户机配置web配置网卡配置结束后,要通过iptables命令添加DNAT地址转换linux抓包技术--tcpdumpfirewalld
目录
  • 1.SNAT是什么
  • 2.DNAT是什么
  • SNAT的典型应用场景
  • SNAT策略的工作原理
  • 如何用iptables实现地址转换
    • 准备任务
    • 过程
    • 客户机配置
    • web配置
    • 网卡配置结束后,要通过iptables命令添加
  • DNAT地址转换
    • linux抓包技术--tcpdump
      • firewalld技术
        • firewalld 分为以下几个区域
      • 总结

        1.SNAT是什么

        SphpNAT又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。

        真实环境运用中私网可以通过路由转发,将数据包传送给公网IP地址的服务器,而公网地址无法将相应的数据包回还给私网地址的用户。此时二者之间需要一个媒介,就是一个建立在私网和公网之间的网关服务器,对其之间的数据包进行相应的处理。来完成私网IP与公网IP之间的建立联系 

        2.DNAT是什么

         DNAT:目的地址转换的作用是将一组本地内部android的地址映射到一组全球地址。通常来说,合法地址的数量比起本地内部的地址数量来要少得多。

        • 私网地址只能作为源地址来访问公网IP,而无法作为目标地址被其他主机访问
        • 所以DNAT将私网中web服务器映射到公网IP,使其公网IP作为目标地址被公网中主机进行访问

        简单来说:

        • SNAT是对源地址转换
        • DNAT是对目的地址转换

        SNAT的典型应用场景

        Linux防火墙之SNAT和DNAT详解

        SNAT策略的工作原理

        Linux防火墙之SNAT和DNAT详解

        SNAT源地址转换过程:

        • 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP。
        • 当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP。
        • 当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分。

        如何用iptables实现地址转换

        准备任务

        1.准备三台虚拟机

        Linux防火墙之SNAT和DNAT详解

        2.给网关服务器添加一张虚拟网卡

        Linux防火墙之SNAT和DNAT详解

        3.拓扑:

        Linux防火墙之SNAT和DNAT详解

        • test1:20.0.0.10 内网
        • test2:ens33: 20.0.0.254
        • ens36:12.0.0.254

        做SNAT的地址转换

        • test3:12.0.0.100 外网

        过程

        关闭防火墙

        编辑网卡信息

        首先ifconfig查看网卡名称(我这里是ens36)

        Linux防火墙之SNAT和DNAT详解

        cd /etc/sysconfig/network-scripts
        #进入该路径
        cp ifcfg-ens33 ifcfg-ens36
        #创建新网卡信息

        Linux防火墙之SNAT和DNAT详解

        TYPE=Ethernet
        DEVICE=ens36
        ONBOOhttp://www.devze.comT=yes
        BOOTPROTO=static
        IPADDR=12.0.0.254
        NETMASK=255.255.255.0
        #GATEWAY=20.0.0.2
        #DNS1=8.8.8.8
        

        Linux防火墙之SNAT和DNAT详解

        此处不用设置网关,因为要充当内网网关

        TYPE=Ethernet
        DEVICE=ens33
        ONBOOT=yes
        BOOTPROTO=static
        IPADDR=20.0.0.254
        NETMASK=255.255.255.0
        #GATEWAY=20.0.0.2
        #DNS1=8.8.8.8
        

        Linux防火墙之SNAT和DNAT详解

        客户机配置

        TYPE=Ethernet
        DEVICE=ens33
        ONBOOT=yes
        BOOTPROTO=static
        IPADDR=20.0.0.10
        NETMASK=255.255.255.0
        GATEWAY=20.0.0.254
        #DNS1=218.2.135.1
        

        Linux防火墙之SNAT和DNAT详解

        web配置

        TYPE=Ethernet
        DEIVCE=ens33
        ONBOOT=yes
        BOOTPROTO=static
        IPADDR=12.0.0.100
        NETMASK=255.255.255.0
        GATEWAY=12.0.0.254
        #DNS1=8.8.8.8
        

        Linux防火墙之SNAT和DNAT详解

        网卡配置结束后android,要通过iptables命令添加

        iptablesjs -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens36 -j SNAT --to 10.0.0.10
        
        • -t:指定表名
        • nat:地址转换的表名
        • -A:添加一条规则,在行尾追加
        • POSTROUTING:在出本机的时候添加一个地址转换的规则
        • -s:192.168.233.0/24 指定源IP地址
        • -j SNAT:指定控制类型
        • --to 10.0.0.10 所有源IP属于233.0这个网段,只要你是从ens36出来,都会把它们IP地址转换为10.0.0.10

        完成之后,  iptables -t nat -vnL查看

        • 最后,网关服务器要同意转发
        vim /etc/sysctl.conf

        Linux防火墙之SNAT和DNAT详解

        sysctl -p

        Linux防火墙之SNAT和DNAT详解

        立即启动

        客户端链接web端(内网链接外网)测试

        Linux防火墙之SNAT和DNAT详解

        Linux防火墙之SNAT和DNAT详解

        DNAT地址转换

        iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 20.0.0.10:80

        web端连接客户端测试

        Linux防火墙之SNAT和DNAT详解

        Linux防火墙之SNAT和DNAT详解

        实验结束

        Linux抓包技术--tcpdump

        • tcpdump为Linux自带的抓包工具
        • wireshark只适用于Windows

        抓包方式:

        • 1.指定抓包数量
        • 2.动态抓包,一致会获取包,除非人工停止
        tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and net 20.0.0.0/24 -w ./target.cap
        • tcpdump:抓包命令,固定开头
        • tcp:抓包的协议
        • -i:经过,只抓经过ens33的数据包
        • -t:不显示时间戳
        • -s0:抓完整的数据包
        • -c:指定抓包的个数
        • dst port:80 访问的是httpd的80端口
        • src net:192.168.233.0/24
        • -w:抓包的数据,保存位置。

        firewalld技术

        • firewalld:Centos7自带的,和iptables一样,也是包过滤防火墙
        • firewalld过滤,通过区域来进行配置
        • iptables 静态防火墙
        • firewalld 动态防火墙

        firewalld 分为以下几个区域

        • trusted :信任区,所有流量都可以传入
        • public :公共区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,也是firewalld的默认区域。
        • external:外部区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,默认通过此区域转发的ipv4流量地址,可以进行伪装
        • home 家庭区域:允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
        • internal:内部区域,默认值与home区域的作用相同
        • work 工作区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝
        • DMZ 隔离区 非军事区:允许ssh,其他的预定义好配置,其他的全部拒绝
        • block:限制区,拒绝所有流量
        • drop:丢弃区域,所有流量都会丢弃

        firewalld相关命令

        firewall-cmd --list-service

        查看区域内允许通过的服务

        Linux防火墙之SNAT和DNAT详解

        firewall-cmd --add-service=http --zone=public

        添加,浏览器20.0.0.10即可看到是否成功

        Linux防火墙之SNAT和DNAT详解

        firewall-cmd --remove-service=http --zone=public

        删除

        Linux防火墙之SNAT和DNAT详解

        firewall-cmd --add-service=http --add-service=ftp --zone=pubilc

        添加多个服务

        firewall-cmd --list-services

        查看

        firewall-cmd --add-service={ftp,http}

        添加多个的不同方法

        firewall-cmd --add-service={ftp,http} --zone=public --permanent

        永久生效

        firewall-cmd --remove-service=http --zone=public --permanent

        删除永久生效的项

        firewall-cmd --zone=public --add-port=80/tcp

        根据端口添加

        firewall-cmd --zone=public --remove-port=80/tcp

        移除

        firewall-cmd --zone=指定区域
        firewall-cmd --zone=public -add-port={3306,80,21}/tcp

        添加多个端口

        firewall-cmd --zone=public -add-port=30-35/tcp

        添加端口的范围

        firewall-cmd --list-all 查看

        Linux防火墙之SNAT和DNAT详解

        总结

        以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号