Linux系统之iptables应用SNAT与DNAT

news2024/9/23 9:28:15

目录

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.1

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1
                                    可换成单独IP   出站外网网卡            外网IP


iptables -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 MASQUERADE


iptables -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											内网服务器ip

iptables -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 = 1
 
sysctl -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)分析
     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试3.测试方法的分类

3.测试分类 系统测试包括回归测试和冒烟测试 回归测试&#xff1a;修改了旧的代码后&#xff0c;重新测试功能是否正确&#xff0c;有没有引入新的错误或导致其它代码产生错误 冒烟测试&#xff1a;目的是确认软件基本功能正常&#xff0c;可以进行后续的正式测试工作 按是否…

什么是 RESTful 风格?

一、什么是 REST &#xff1f; REST即表述性状态传递&#xff08;英文&#xff1a;Representational State Transfer&#xff0c;简称REST&#xff09;是Roy Thomas Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式&#…

游戏开发 - 开发流程 - 收集

1.应用场景 主要用于了解&#xff0c;掌握游戏开发的整个流程。 2.学习/操作 1.文档阅读 复习课 | 带你梳理客户端开发的三个重点-极客时间 2.整理输出 2.1 游戏开发流程 -- 参考 按照游戏开发中的三大模块策划、程序、美术&#xff0c;画了一个图。 开发游戏的时候&#xff…

LeetCode171-Excel表列序号(进制转换问题)

LeetCode171-Excel表列序号1、问题描述2、解题思路&#xff1a;进制转换3、代码实现1、问题描述 给你一个字符串columnTitle,表示Excel表格中得列名称。返回该列名称对应得列序号。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 …

linux shell 入门学习笔记3 shebang

shebang 计算机程序中&#xff0c;shebang指的是出现在文本文件的第一行前两个字符#! 在Unix系统中&#xff0c;程序会分析shebang后面的内容&#xff0c;作为解释器的指令&#xff0c;例如 以#!/bin/sh 开头的文件&#xff0c;程序在执行的时候会调用/bin/sh&#xff0c;也就…

[软件工程导论(第六版)]第5章 总体设计(复习笔记)

文章目录5.1 设计过程5.2 设计原理5.2.1 模块化5.2.2 抽象5.2.3 逐步求精5.2.4 信息隐藏和局部化5.2.5 模块独立5.3 启发规则5.4 描绘软件结构的图形工具5.4.1 层次图5.4.2 HIPO图5.4.3 结构图5.5 面向数据流的设计方法目的 总体设计的基本目的就是回答“概括地说&#xff0c;系…

2.19 索引和事务

一.联合查询面试问题:聚合查询与联合查询的区别聚合查询是行与行之间的数据加工聚合函数 :count,sum,avg...group by 进行分组,指定列的值,相同的记录合并到同一个组,每个组又可以分别进行聚合查询分组还可以指定条件筛选,如果分组之前指定条件 用where,如果对分组之后指定条件…

< CSDN周赛解析:第 28 期 >

CSDN周赛解析&#xff1a;第 27 期&#x1f449; 第一题&#xff1a; 小Q的鲜榨柠檬汁> 题目解析> 解决方案&#x1f449; 第二题&#xff1a; 三而竭> 解析> 解决方案> 拓展知识&#x1f449; 第三题&#xff1a; 隧道逃生> 解析> 解决方案&#x1f449;…

【人工智能AI】四、NoSQL进阶《NoSQL 企业级基础入门与进阶实战》

帮我写一篇介绍NoSQL的技术文章&#xff0c;文章的标题是《四、NoSQL进阶》&#xff0c;不少于3000字。帮我细化到三级目录&#xff0c;使用markdown格式。这篇文章的目录是&#xff1a; 四、NoSQL 进阶 4.1 NoSQL 高可用 4.2 NoSQL 数据安全 4.3 NoSQL 性能优化 4.4 总结 四、…

Vue:extends继承组件复用性

提到extends继承&#xff0c;最先想到的可能是ES6中的class、TS中的interface、面向对象编程语言中中的类和接口概念等等&#xff0c;但是我们今天的关注点在于&#xff1a;如何在Vue中使用extends继承特性。 目录 Vue&#xff1a;创建Vue实例的方式 构造函数方式&#xff1…

3D点云处理:点云聚类--FEC: Fast Euclidean Clustering for Point Cloud Segmentation

文章目录 聚类结果一、论文内容1.1 Ground Surface Removal1.2 Fast Euclidean Clustering题外:欧几里得聚类Fast Euclidean Clustering二、参考聚类结果 原始代码中采用的是pcl中的搜索方式,替换为另外第三方库,速度得到进一步提升。 一、论文内容 论文中给出的结论:该…

java基础学习 day42(继承中构造方法的访问特点,this、super的使用总结)

继承中&#xff0c;构造方法的访问特点 父类的构造方法不会被子类继承&#xff0c;但可以通过super()调用父类的构造方法&#xff0c;且只能在子类调用&#xff0c;在测试类中是不能手动单写构造方法的。子类中所有的构造方法默认先调用父类的无参构造&#xff0c;再执行自己构…

vue3+ts+node个人博客系统(三)

一.主页顶部和中心面板布局 &#xff08;1&#xff09; 首先先去element-plus选择合适的布局el-container (2)在头部处编写相应的菜单栏el-menu,在这里要注意动态绑定路由的问题:default-active"$route.path"。将default-active设置为$route.path&#xff0c;el-me…

Java File类、IO流、Properties属性类

文章目录一、补充二、File类File类的含义创建多级文件File类的常见方法三、IO流IO流分类输入输出流FileOutputStreamInputStreamInputStream与OutputStream的实例ReaderWriterFileReader和FileWriter的实例缓冲流转换流序列化与ObjectInputStream、ObjectOutputStream打印流Pro…

MySQL 10:MySQL事务

MySQL 中的事务是由存储引擎实现的。在 MySQL 中&#xff0c;只有 InnoDB 存储引擎支持事务。事务处理可用于维护数据库的完整性&#xff0c;确保批处理的 SQL 语句要么执行要么根本不执行。事务用于管理 DDL、DML 和 DCL 操作&#xff0c;例如插入、更新和删除语句&#xff0c…

JVM10垃圾回收算法

1.什么是垃圾&#xff1f; 垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理&#xff0c;那么&#xff0c;这些垃圾对象所占的内存空间会一直保留到应用程序的结束&#xff0c;被保留的空间无法被其…

XLink 和 XPointer 简介

XLink 定义了一套标准的在 XML 文档中创建超级链接的方法。 XPointer 使超级链接可以指向 XML 文档中更多具体的部分&#xff08;片断&#xff09;。 您应当具备的基础知识 学习本教程前您应当具备的基础知识: HTML / XHTMLXML / XML 命名空间XPath 如果您希望首先学习这些项…

.NET7的AOT的使用

背景其实&#xff0c;规划这篇文章有一段时间了&#xff0c;但是比较懒&#xff0c;所以一直拖着没写。最近时总更新太快了&#xff0c;太卷了&#xff0c;所以借着 .NET 7 正式版发布&#xff0c;熬夜写完这篇文章&#xff0c;希望能够追上时总的一点距离。本文主要介绍如何在…

九龙证券|重大利好!期货公司打新再“解绑”:可直接参与首发网下配售!

时隔近7年&#xff0c;期货公司及其财物办理子公司参加首发证券网下询价和配售事务再次“解绑”。 2月17日&#xff0c;为适应全面实行股票发行注册制变革需求&#xff0c;中国证券业协会&#xff08;以下简称中证协&#xff09;发布《初次公开发行证券网下出资者办理规矩》&am…