一、SNAT原理与应用

1、SNAT应用环境

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

2、SNAT原理

修改数据包的源地址

3、SNAT转换前提条件

  • 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
  • Linux网关开启IP路由转发

3.1 临时打开IP路由转发:

echo 1 >/proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip forward=1

3.2 永久打开IP路由转发:

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1             #将此行写入配置文件sysctl -P               #读取修改后的配置

4、SNAT转换

4.1 SNAT转换1:固定的公网IP地址:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens36 j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens36 -j SNAT --to-source 12.0.0.1-12.0.0.10-S 内网IP
-o 出站外网网卡
source 外网IP或地址池

4.2 SNAT转换2:非固定的公网IP地址(共享动态IP地址) :

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

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

5、SNAT转换实例操作:实现内网主机通过一个固定的公网IP地址上网

web服务器IP:12.0.0.16、关闭防火墙和selinux、开启http服务
网关服务器内网IP(ens33):192.168.2.100;外网IP(ens36):12.0.0.1;linux网关打开IP路由转发、开启http服务
win10客户端IP:192.168.2.13
VMware的虚拟网络编辑器中默认vmnet1模式网段:192.168.2.0,VMnet2模式网段:12.0.0.0

实验目的:

实现内网主机Win10访问Web服务器时将IP地址192.168.2.13转换为12.0.0.34访问,在web服务器的日志文件中查看PC端的访问地址是否发生改变,即实现SNAT转换

5.1 Linux网关服务器的相关配置

5.1.1 添加网卡,并设置ens33、ens37的IP地址

  

  

5.1.2 iptables的安装

5.1.3 linux网关服务器打开IP路由转发

5.1.4 在linux网关服务器上做SNAT转换

  

5.2 内网PC端win10设置内网IP以及网关

5.3 外网Linux的web服务器的相关设置

5.3.1 设置外网web服务器的IP地址

5.3.2 安装httpd服务,并开启httpd服务,关闭防火墙和selinux

5.4 测试

5.4.1 内网PC端ping外网和网关测试

5.4.2 内网访问httpd测试

5.4.3 查看外网web服务器的日志文件tail /var/log/httpd/access_log,查看访问网址是否修改为12.0.0.1,即SNAT转换是否成功

二、DNAT原理与应用

1、DNAT转换前提条件:

局域网的服务器能够访问Internet

网关的外网地址有正确的DNS解析记录

Linux网关开启IP路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -P

2、DNAT转换1:发布内网的Web服务

#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.2.100
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.2.100
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.2.100入站|外网网卡 | 外网                  内网服务器ipiptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80-j DNAT --to 192.168.2.11-192.168.2.20

3、DNAT转换2:发布时修改目标端口

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

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

小知识扩展:
• 主机型防火墙主要使用INPUT、OUTPUT链,设置规则时一-般要详细的指定到端口

• 网络型防火墙主要使用FORWARD链,设置规则时很少去指定到端口,一般指定到IP地址或者到网段即可

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

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

iptables-save > /opt/ipt.txt

2、导入(还原)规则

iptables-restore < /opt/ipt.txt

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

systemctl stop iptables     #停止iptables服务会清空掉所有表的规则
systemctl start iptables        #启动iptables服务会自动还原/etc/sysconfig/iptables 中的规则

四、Linux抓包

tcpdump tcp-i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

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

IPtable之SNAT与DNAT相关推荐

  1. Docker 容器网络访问原理,SNAT和DNAT

    docker使用教程相关系列 目录 目录 容器网络访问原理图 网络访问的过程图 DOCKER SNAT与DNAT 容器访问外部实现 外部访问容器实现 容器网络访问原理图 首先我们会有这个 宿主机命名空 ...

  2. Linux系统的iptables防火墙、SNAT、DNAT原理与设置规则

    Linux的iptables防火墙.SNAT.DNAT 一.iptables概述 1.netfilter/iptables关系 2.四表五链 四表 五链 规则表之间的优先顺序 规则链之间的匹配顺序 二 ...

  3. 什么是SNAT、DNAT?

    什么是SNAT.DNAT? SNAT 企业内部的主机A想访问互联网上的主机C,首先将请求数据包(源:ipA,目标:ipC)发送到防火墙所在主机B,B收到后将数据包源地址改为本机公网网卡的ip(源:ip ...

  4. 【网络】SNAT和DNAT

    1.SNAT和DNAT都是网络地址转换技术,有什么不同? SNAT是"Source Network Address Translation"的缩写,指的是一种将源IP地址转换为另一 ...

  5. iptables 防火墙中的SNAT和DNAT

    目录 前言 一.SNAT策略 1.1 SNAT应用环境 1.2 SNAT原理 1.3 SNAT转换前提条件 1.4 SNAT转换流程 1.4 SNAT 应用 1.4.1 临时打开 1.4.2 永久打开 ...

  6. snat与dnat的区别

    原理上来讲nat 前导:NAT(Network AddressTranslation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程.(nat就是防火墙的nat表)实际上就 ...

  7. linux服务-iptables( snat 和dnat )

    iptables snat 和dnat说明 1.dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.比如,你的Web服务器在LAN内部,而且没有可在Internet上使用的真实IP地址,那就 ...

  8. SNAT和DNAT原理及配置方法

    文章目录 SNAT策略概述 DNAT策略概述 SNAT和DNAT配置 防火墙规则的备份和还原 SNAT策略概述 原理:修改数据包中的源IP地址 作用:可以实现局域网共享上网 配置的表及链:nat表中的 ...

  9. VMware之SNAT与DNAT

    今天之所以要说这两个概念,是因为我本人对于网络方面的知识也不是很懂,一直以来就是略知皮毛,尤其是对于路由转发这些概念更是头疼,然而今天恰巧看到了一篇文章,里面介绍了SNAT与DNAT,简单易懂,让我茅 ...

最新文章

  1. 调用webservice查询手机号码归属地信息
  2. c++ 纯虚成员函数+抽象基类
  3. Chika and Friendly Pairs
  4. 自定义SeekBar 实时显示百分比进度
  5. hadoop集群swap_hadoop集群调优-OS和文件系统部分
  6. Git生成patch及打patch到源代码
  7. http://www.cnblogs.com/ITtangtang/archive/2012/05/21/2511749.html
  8. ASP.NET 实践:锁定 ASP.NET 配置设定
  9. Kotlin基本类型
  10. windows anaconda 虚拟环境 与 系统变量冲突 pyinstaller 打包软件过大
  11. 怎么把多个音频合并成一个音频?
  12. 使用laravel搭建博客网站-博客的注册功能
  13. WIN10电脑端微信字体变模糊如何调节回来
  14. 阿里云服务器远程又链接不上 链接一下就闪烁一下又回到登陆界面,控制台重启一下才可以连接
  15. macd 公式 java_EMA指标和MACD指标的JAVA语言实现
  16. Vue中使用防抖与截流
  17. Android智能硬件开发心得总结(二)
  18. 科银资本 Jayden Wei 专访:全球首个区块链经济特区即将诞生
  19. (非)线性代数方程、(非)线性微分方程 含义
  20. 【LeetCode】图解KMP算法

热门文章

  1. localbus总线
  2. java 系统工具类 查询内存 CPU 系统基本信息 SysInfoUtils
  3. Sobel算子->方向滤波
  4. Design Development Workflow with Framer X 使用Framer X进行设计和开发工作流程 Lynda课程中文字幕
  5. python人物代码_Python设计王者荣耀人物结构(64)*
  6. 基于arduino 开发 esp32 点亮ili9341屏幕
  7. 百度提交死链的官方标准格式
  8. 网络中的pvid与native vlan(本征vlan)区别以及详解
  9. 如何用记事本写Java程序
  10. C++11:lambda表达式