• SNAT和DNAT


    目录

    一、概念

    二、SNAT原理及应用

    1.应用场景

    2.SNAT策略的配置

    2.1 Linux网关开启IP路由转发

    2.2 SNAT转换------固定的公网IP地址

    2.3 SNAT转换------非固定的公网IP地址(共享动态IP地址)

    三、DNAT原理及应用

    1.DNAT转换前提条件

    2.DNAT转换——发布内网的Web服务

    3.DNAT转换2------发布时修改目标端口

    四、防火墙规则的备份和还原

    1.导出(备份)所有表的规则

    2.导入(还原)规则

    五、tcpdump—Linux抓包


    一、概念

            将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换功能称为SNAT,主要用于内部共享IP访问外部网络。

            公网IP的网关替代内部服务来接收外部的连接,然后在内部将公网IP转换为私网IP,此转换功能称为DNAT,主要用于内部服务对外发布。

    二、SNAT原理及应用

    1.应用场景

    局域网主机共享单个公网IP地址接入Internet。(私有IP不能在Internet中正常路由)

     SNAT源地址转换过程:

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

    2.SNAT策略的配置

    2.1 Linux网关开启IP路由转发

    1. 1.临时开启:
    2. echo 1 > /proc/sys/net/ipv4/ip_forward
    3. sysctl -w net.ipv4.ip_forward=1
    4. 2.永久开启
    5. vim /etc/sysctl.conf
    6. net.ipv4.ip_forward=1 #将此行写入配置文件
    7. sysctl -p #读取修改后的配置

    2.2 SNAT转换------固定的公网IP地址

    1. iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
    2. iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
    3. 内网IP 出站 外网网卡 外网IP或地址池

    2.3 SNAT转换------非固定的公网IP地址(共享动态IP地址)

    iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE

    扩展:
    一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网。

    三、DNAT原理及应用

    1.DNAT转换前提条件

    • 局域网的服务器能够访问Internet
    • 网关的外网地址有正确的DNS解析记录
    • Linux网关开启IP路由转发
    1. vim /etc/sysctl.conf
    2. net.ipv4.ip_forward=1 #将此行写入配置文件
    3. sysctl -p #读取修改后的配置

    2.DNAT转换——发布内网的Web服务

    1. #把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.10
    2. iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.10
    3. iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.10
    4. 入站 外网网卡 外网IP 内网服务器IP
    5. iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.10-192.168.80.20

    3.DNAT转换2------发布时修改目标端口

    1. #发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
    2. iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 8888 -j DNAT --to 192.168.80.10:22
    3. #在外网环境中使用SSH测试
    4. ssh -p 8888 root@12.0.0.1
    5. yum -y install net-tools #若没有 ifconfig 命令可提前使用 yum 进行安装
    6. ifconfig ens33

    扩展:
    主机型防火墙 主要使用 INPUT、OUTPUT 链,设置规则时一般要详细的指定到端口。
    网络型防火墙 主要使用 FORWARD 链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可。

    四、防火墙规则的备份和还原

    1.导出(备份)所有表的规则

    iptables-save > /opt/ipt.txt

    2.导入(还原)规则

    iptables-restore < /opt/ipt.txt

    将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则

    1. iptables-save > /etc/sysconfig/iptables
    2. systemctl stop iptables #停止iptables服务会清空掉所有表的规则
    3. systemctl start iptables #启动iptables服务会自动原/etc/sysconfig/iptables
    4. 中的规则

    五、tcpdump—Linux抓包

    • wireshark 抓包工具只在windows中使用。
    • tcpdump 可以在Linux系统中使用。
    1. tcpdump tcp -i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
    2. (1) tcp: ip icmp arp rarp和tcp、udp、icmp这些协议选项等都要放到第一个参数的位置,用来过滤数据包的类型
    3. (2)-i ens33 :只抓经过接口ens33的包
    4. (3)-t :不显示时间戳
    5. (4)-s 0 :抓取数据包时默认抓取长度为68字节。加上-s 0后可以抓到完整的数据包
    6. (5)-c 100 :只抓取100个数据包
    7. (6) dst port ! 22 :不抓取目标端口是22的数据包
    8. (7)src net 192.168.1.0/24 :数据包的源网络地址为192.168.1.0/24
    9. (8) -w ./target.cap :保存成cap文件,方便用ethereal (即wireshark)分析

  • 相关阅读:
    C盘清理指南(四)——垃圾清理工具
    【剑指 Offer】矩阵中的路径
    j1900软路由安装esxi6.7
    如果通过Java来完成大数据开发,需要学习哪些内容
    全量数据采集:不同网站的方法与挑战
    LeetCode:两数之和
    Dockerfile(5) - CMD 指令详解
    动画设计岗位怎么运用智能程序分析数据更清晰
    北邮22级信通院数电:Verilog-FPGA(5)第四第五周实验 密码保险箱的设计
    40、jenkins部署vue项目
  • 原文地址:https://blog.csdn.net/shitianyu6/article/details/126904495