Linux系统之iptables应用SNAT与DNAT
目录
SNAT
一.SNAT的原理介绍
1.应用环境
2.SNAT原理
3.SNAT转换前提条件
二.开启SNAT
1.临时打开
2.永久打开
三.SNAT的转换
1.固定的公网IP地址
2.非固定的公网IP地址(共享动态IP地址)
四.SNAT实验
1.实验环境准备
2.配置web服务器(192.168.100.100)
3.配置网关服务器(192.168.100.101、12.0.0.1)
4.配置win10客户端(12.0.0.10)
5.web服务器网络测试
6.Win10客户端的网络测试
7.网关服务器开启SNAT的命令
8.使用win10客户端来访问web服务器的apache网站
9.配置网关服务器的iptables规则
10.清除记录再次使用Win10客户机进行访问web服务器
DNAT
一.DNAT的原理介绍
1.应用环境
2.DNAT原理
3.DNAT转换前提条件
二.DNAT的转换
1.发布内网的Web服务
2.发布时修改目标端口
三.DNAT实验
1.实验环境准备
2.配置网关服务器(192.168.192.110、12.0.0.254)
3.配置web服务器(192.168.192.100)
4.配置win10客户端(12.0.0.200)
5.网关服务器开启SNAT
6.外网客户端访问内网服务端
7.配置网关服务器的iptables规则
8.除记录再次使用Win10客户机进行访问web服务器
四.SNAT和DNAT的区别
五.iptables规则的备份与还原
1.备份
2.还原
3.设置规则
六.tcpdump:Linux抓包
SNAT
一.SNAT的原理介绍
1.应用环境
局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)
2.SNAT原理
源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映谢
数据包从内网发送到公网时,SNAT会把数据包的源IP由私网IP转换成公网IP
当响应的数据包从公网发送到内网时,会把数据包的目的IP由公网IP转换为私网IP
3.SNAT转换前提条件
- 局域网各主机已正确设置IP地址、子网掩码、默认网关地址
- Linux网关开启IP路由转发
- linxu系统本身是没有转发功能,只有路由发送数据

二.开启SNAT
1.临时打开
echo 1 >/proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip forward=1
2.永久打开
vim /etc/ sysctl. conf
net. ipv4.ip_ forward = 1 #将此行写入配置文件sysctl -P #读取修改后的配置
三.SNAT的转换
1.固定的公网IP地址
#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1可换成单独IP 出站外网网卡 外网IPiptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10内网IP 出站外网网卡 外网IP或地址池
2.非固定的公网IP地址(共享动态IP地址)
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADEiptables -t nat -A POSTROUTING -s 12.0.0.0/24 -d 192.168.100.0/24 -j MASQUERADE一个IP地址做SNAT转换,一般可以让内网 100到200 台主机实现上网
四.SNAT实验

1.实验环境准备
web服务器IP地址:192.168.100.100(内网)
关闭防火墙和selinux、开启http服务
网关服务器内网iIP地址:192.168.100.101
外网IP地址:12.0.0.1
关闭防火墙和selinux、开启http服务
win10客户端IP地址:12.0.0.10
VMware的虚拟网络编辑器中默认nat1模式网段:192.168.100.0,nat2模式网段:12.0.0.0
注意查看真机的网段与虚拟机所设网段是否一致
2.配置web服务器(192.168.100.100)
第一步:设置网络连接模式为VMnet1

第二步: 开启虚拟机终端,配置网卡ens33如下
vim /etc/sysconfig/network-scrips/ifcfg-ens33
#修改网卡配置文件

第三步:关闭防火墙和selinux、安装并开启http服务
yum install httpd -y #安装httpd
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
systemctl start httpd #开启httpd
systemctl status httpd #查看状态


3.配置网关服务器(192.168.100.101、12.0.0.1)
第一步:设置网络连接模式为VMnet1与2

第二步: 开启虚拟机终端,配置网卡ens33并复制修改ens36
使用ifconfig命令查看新加网卡为ens36或ens37等
vim /etc/sysconfig/network-scrips/ifcfg-ens33
cd /etc/sysconfig/network-scrips
cp ifcfg-ens33 ifcfg-ens36
vim /etc/sysconfig/network-scrips/ifcfg-ens36
systemctl restart network
ifconfig


第三步:关闭防火墙和selinux、安装并开启http服务
yum install httpd -y #安装httpd
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
systemctl start httpd #开启httpd
systemctl status httpd #查看状态


4.配置win10客户端(12.0.0.10)
第一步:设置网络连接模式为VMnet2

第二步:配置iIP地址和网关为下图所示

5.web服务器网络测试

6.Win10客户端的网络测试

7.网关服务器开启SNAT的命令
vim /etc/sysctl.conf
添加内容:
net.ipv4.ip_forward = 1可以使用sysctl -p读取修改后的配置

8.使用win10客户端来访问web服务器的apache网站

查看web服务器的访问日志,显示访问的ip为win10客户机的ip
tail /var/log/httpd/access_log

9.配置网关服务器的iptables规则
第一步:查看网关服务器的iptables规则并清除
iptables -nL #查看规则
iptables -nL -t nat #查看规则
iptables -F #清除iptables的规则
iptables -F -t nat #清除iptables的规则


第二步:添加 SNAT转换∶固定的公网IP地址
iptables -t nat -A POSTROUTING -s 12.0.0.0/24 -o ens33 -j SNAT --to-source 192.168.100.101

10.清除记录再次使用Win10客户机进行访问web服务器
第一步:清除浏览器缓存数据

第二步:再次使用win10客户端来访问web服务器的apache网站

第三步:查看web服务器的访问日志,可以看到现在显示的访问ip为网关地址的ip,是我使用iptables配置的ip
tail /var/log/httpd/access_log

从 原外网客户机IP地址 变为 网关服务器内网网关地址
DNAT
一.DNAT的原理介绍
1.应用环境
在Internet中发布位于局域网内的服务器
2.DNAT原理
- 目标地址转换
- 修改数据包的目标地址
3.DNAT转换前提条件
- 局域网的服务器能够访问Internet
- 网关的外网地址有正确的DNS解析记录
- Linux网关开启IP路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysct1 -p
二.DNAT的转换
1.发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.80.11入站|外网网卡 | 外网ip 内网服务器ipiptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80-j DNAT --to 192.168.80.11-192.168.80.20
2.发布时修改目标端口
#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 250-jDNAT --to 192.168.100.102:22
三.DNAT实验

1.实验环境准备
web服务器IP地址:192.168.192.100(内网)
关闭防火墙和selinux、开启http服务
网关服务器内网iIP地址:192.168.192.110
外网IP地址:12.0.0.254
关闭防火墙和selinux、开启http服务
win10客户端IP地址:12.0.0.200
VMware的虚拟网络编辑器中默认nat1模式网段:192.168.192.0,nat2模式网段:12.0.0.0

2.配置网关服务器(192.168.192.110、12.0.0.254)
第一步:设置网络连接模式为VMnet1与2

第二步: 开启虚拟机终端,配置网卡ens33并复制修改ens36
使用ifconfig命令查看新加网卡为ens36或ens37等
vim /etc/sysconfig/network-scrips/ifcfg-ens33
cd /etc/sysconfig/network-scrips
cp ifcfg-ens33 ifcfg-ens36
vim /etc/sysconfig/network-scrips/ifcfg-ens36
systemctl restart network
ifconfig


第三步:关闭防火墙和selinux、安装并开启http服务
yum install httpd -y #安装httpd
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
systemctl start httpd #开启httpd
systemctl status httpd #查看状态

3.配置web服务器(192.168.192.100)
第一步:设置网络连接模式为VMnet1

第二步:开启虚拟机终端,配置网卡ens33如下
vim /etc/sysconfig/network-scrips/ifcfg-ens33
#修改网卡配置文件


第三步:关闭防火墙和selinux、安装并开启http服务
yum install httpd -y #安装httpd
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux
systemctl start httpd #开启httpd
systemctl status httpd #查看状态


4.配置win10客户端(12.0.0.200)
第一步:设置网络连接模式为VMnet2

第二步:配置iIP地址和网关为下图所示

5.网关服务器开启SNAT
vim /etc/sysctl.conf
添加内容:
net.ipv4.ip_forward = 1sysctl -p
#验证

6.外网客户端访问内网服务端
第一步:清除浏览器缓存数据

第二步:使用win10客户端来访问web服务器的apache网站

第三步:查看web服务器的访问日志,显示访问的ip为win10客户机的ip

7.配置网关服务器的iptables规则
第一步:查看网关服务器的iptables规则并清除
iptables -nL #查看规则
iptables -nL -t nat #查看规则
iptables -F #清除iptables的规则
iptables -F -t nat #清除iptables的规则


第二步:添加SNAT与DNAT规则
iptables -t nat -A POSTROUTING -s 192.168.192.0/24 -o ens36 -j SNAT --to 12.0.0.254
iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 8080 -j DNAT --to 192.168.192.100:80
iptables -nL -t nat

8.清除记录再次使用Win10客户机进行访问web服务器
第一步:清除浏览器缓存数据

第二步:再次使用win10客户端来访问web服务器的apache网站,输入网关地址即可

四.SNAT和DNAT的区别
从定义上讲,SNAT是原地址转换,DNAT是目标地址转换。区分这两个功能可以简单的由服务的发起者是谁来区分,内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip。
五.iptables规则的备份与还原
1.备份
默认备份文件/etc/sysconfig/iptables
iptables-save > /opt/ibf.txt
#重定向输入到opt目录下新文件ibf.txt中

2.还原
iptables-restore < /opt/ibf.txt
#快速还原可以使用
iptables -nL
#查看最初状态
iptables -F
#删除模拟丢失规则
iptables -nL
#查看是否为空iptables-restore < /opt/ibf.txt
#快速还原
iptables -nL
#查看是否还原
3.设置规则
#重定向输入到默认配置文件当中
iptables-save >/etc/sysconfig/iptables #重启防火墙
systemctl stop iptables
systemctl start iptables#查看规则
iptables -nL
iptables -nL -t nat
六.tcpdump: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
- tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
- -i ens33 ∶只抓经过接口ens33的包
- -t ∶不显示时间戳
- -s 0 ∶ 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
- -c 100 ∶只抓取100个数据包
- dst port ! 22 ∶不抓取目标端口是22的数据包
- src net 192.168.1.0/24 ∶数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机
- -w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析
相关文章:
Linux系统之iptables应用SNAT与DNAT
目录 SNAT 一.SNAT的原理介绍 1.应用环境 2.SNAT原理 3.SNAT转换前提条件 二.开启SNAT 1.临时打开 2.永久打开 三.SNAT的转换 1.固定的公网IP地址 2.非固定的公网IP地址(共享动态IP地址) 四.SNAT实验 1.实验环境准备 2.配置web服务器(192.168.100.100…...
2023美赛ABCDEF思路汇总
注:以下每个题思路仅是个人所想所做,不代表他人。由于时间仓促完成这么多,难免有不足之处,还请谅解。 文章目录A题第一大问第二大问B题第一问第二问第三问C题第一问第二问第三问第四问D题第一问第二问第三问第四问第五问E题第一问…...
Damask和abaqus晶体塑性联合仿真培训通知
一 软件介绍 DAMASK 是一个统一的多物理晶体塑性模拟包。连续体力学边值问题的求解需要连接每个材料点的变形和应力的本构响应,该问题在 DAMASK 中基于晶体可塑性使用各种本构模型和均质化方法能够被有效解决。除此之外,孤立地处理力学已不足以研究新兴的先进高强度…...
用javascript分类刷leetcode17.栈(图文视频讲解)
目录 Stack的特点:先进后出(FILO) 使用场景:十进制转2进制 函数调用堆栈 js里没有栈,但是可以用数组模拟 42/2 42%20 21/2 21%21 10/2 10%20 5/2 5%21 2/2 2%20 1/2 1%21 stack: [0,1,0,1,0,1] res: 1 0 1 …...
转换大小写与完成字符串反转
问题 编写一个程序,实现字符串的大小写转换并倒序输出,如输入为“HelloWord”,输出为“DROwOLLEH”。 方法 需要掌握char与int的转换,需要将helloord大写输出和W小写输出,不能直接使用toUpperCase方法。因此可以使用ch…...
大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——InputFormat数据输入
3.1.1切片与MapTask并行度决定机制 1、问题引出 MapTask的并行度决定Map阶段的任务处理并发度,进而影响到整个Job的处理速度。 思考:1G的数据,启动8个MapTask,可以提高集群的并发处理能力。那么1K的数据,也启动8个M…...
【Opencv 系列】 第4章 直方图
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1、直方图的定义、意义、特征2、直方图:2.1 灰度直方图2.2 彩色直方图前言 提示:以下是本篇文章正文内容,下面案例可供参考 …...
C#反射原理
一、前言反射(Reflection)的内容在博客中已经写了一篇,什么是反射,反射的使用,反射优缺点总结;在面试中突然被问道反射的原理,按照理解反射就是在Reflection命名空间和对象的Type对象获取类的方…...
python+vue微信小程序的线上服装店系统
服装行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,服装行业也在发生着变化,单就服饰这一方面,利用手机购物正在逐步进入人们的生活。传统的购物方式,不仅会耗费大量的人力、时间,有时候还会出错。小程序系统伴随智能手机为我们提供了新的方向。手机线上服装…...
众德全自动批量剪辑工具,批量去重伪原创视频,全自动合成探店带货等视频
众德全自动批量剪辑工具已连续更新两年,服务了大大小小的自媒体公司工作室共200多个,成就了几百个草根创业者,实现月入10万,自从创办众德传媒之前,我一直坚信自媒体才是年轻草根创业者的出路,不需要技术门槛…...
【项目精选】基于网络爬虫技术的网络新闻分析(论文+源码+视频)
基于网络爬虫技术的网络新闻分析主要用于网络数据爬取。本系统结构如下: (1)网络爬虫模块。 (2)中文分词模块。 (3)中3文相似度判定模块。 (4)数据结构化存储模块。 &…...
华为OD机试 - 任务混部(JS)
任务混部 题目 公司创新实验室正在研究如何最小化资源成本,最大化资源利用率,请你设计算法帮他们解决一个任务混部问题:有taskNum项任务,每个任务有开始时间(startTime),结束时间(endTime),并行度(parallelism)三个属性,并行度是指这个任务运行时将会占用的服务…...
Matlab搭建AlexNet实现手写数字识别
Matlab搭建AlexNet实现手写数字识别 个人博客地址 文章目录Matlab搭建AlexNet实现手写数字识别环境内容步骤准备MNIST数据集数据预处理定义网络模型定义训练超参数网络训练和预测代码下载环境 Matlab 2020aWindows10 内容 使用Matlab对MNIST数据集进行预处理,搭建…...
比较全面的HTTP和TCP网络传输的单工、全双工和半双工
文章目录单工、全双工、半双工1. 单工2. 半双工3. 全双工HTTP协议的工作模式TCP协议的工作模式本文参考: 图解网络传输单工、半双工、全双工 - 知乎 (zhihu.com) 问:HTTP是单工的还是双工的还是半双工的 - 简书 (jianshu.com) 关于TCP全双工模式的解释_忙…...
CSS Houdini
前言 最近看了几篇文章,是关于 CSS Houdini 的。作为一个前端搬砖的还真不知道这玩意,虽然不知道的东西挺多的,但是这玩意有点高大上啊。 Houdini 是一组底层 API,它们公开了 CSS 引擎的各个部分,从而使开发人员能够通…...
C++引用
这里写目录标题引用引用的基本使用引用做函数参数引用作为函数返回值引用的本质常量引用引用与指针的区别&的三种作用引用 引用的基本使用 作用: 给变量起别名 语法: 数据类型 &别名 原名 引用的本质是给变量起别名,因此࿰…...
YOLOv6-目标检测论文解读
文章目录摘要问题算法网络设计BackboneNeckHead标签分配SimOTA(YOLOX提出):TAL(Task alignment learning,TOOD提出)损失函数分类损失框回归损失目标损失行业有用改进自蒸馏图像灰度边界填充量化及部署实验消…...
【factoryio】使用SCL编写 <机械手控制> 程序
使用虚拟工厂软件和博图联合仿真来编写【scl】机械手控制程序 文章目录 目录 文章目录 前言 二、程序编写 1.机械手运行部分 2.启动停止部分 3.急停复位部分 三、完整代码 总结 前言 在前面我们一起写过了许多案例控制的编写,在这一章我们一起来编写一下一个…...
QT学习记录散件
fromLocal8Bit() qt中fromLocal8Bit()函数可以设置编码。 因为QT默认的编码是unicode,不能显示中文的 而windows默认使用(GBK/GB2312/GB18030) 所以使用fromLocal8Bit()函数,可以实现从本地字符集GB到Unicode的转换,从…...
[SSD科普之1] PCIE接口详解及应用模式
PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。一、PCI-E x1/x4/x8/x16插槽模式PCI-E有 x1/…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
