• 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)分析

  • 相关阅读:
    【观察】从广州白云精“绣”“智”理实践,看AI赋能智慧城市升级正当时
    你真的了解JAVA中对象和类、this、super和static关键字吗
    3D 毛玻璃晶质见证卡
    c++ - 第15节 - 二叉树进阶
    科技资讯|AirPods Pro基于定位控制的自适应音频功能
    【JavaEE进阶系列 | 从小白到工程师】JavaEE中的枚举类使用介绍
    Leetcode:整数转罗马数字
    redis场用命令及其Java操作
    微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.2 全文检索查询
    餐饮大单品「真香」,却没有穿透周期的能力
  • 原文地址:https://blog.csdn.net/shitianyu6/article/details/126904495