【SNAT和DNAT的原理与应用】

news2024/11/24 5:16:54

目录

  • 一、SNAT原理与应用
    • 1、SNAT概述
    • 2、SNAT的应用环境
    • 3、进行SNAT转换后的情况
  • 二、SNAT实验
  • 三、DNAT
    • 1、DNAT策略概述
    • 2、DNAT 实验


一、SNAT原理与应用

1、SNAT概述

SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由)
SNAT原理:修改数据包的源地址。

2、SNAT的应用环境

局域网共享上网
在这里插入图片描述

SNAT的配置策略

SNAT转换前提条件:
1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址

2.Linux网关开启IP路由转发

临时打开:
echo 1 > /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1    
# 实现立即生效服务,重启后就还是关闭服务

永久打开:
vim /etc/sysctl.conf         #内核参数的修改
net.ipv4.ip_forward = 1 		  #将此行写入配置文件,默认值为0,修改为1是打开

sysctl -p 		          #加载服务   #读取修改后的配置

3、进行SNAT转换后的情况

在这里插入图片描述

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

iptables -t nat -A POSTROUTUNG -s 192.168.1.0/24 -o  ens0   -j  SNAT --to  12.0.0.1                     
                                   内网ip            外网网卡               

或者
iptables -t nat -A POSTROUTUNG -s 192.168.1.0/24 -o  ens0   -j  SNAT --to-source  12.00.1-12.0.0.10
                                                                                   外网ip或者地址池
-t 指定nat表

-A 指定哪个链里面修改

-s 指定对哪个源地址进行修改

-o 指定修改完后再哪个出站网卡

-j 指定类型

--to 转换成一个固定的外网ip地址

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

iptables -t nat -A POSTROUTUNG -s 192.168.1.0/24 -o ens0 -j MASQUERADE  
#做随机转换的,非固定

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

二、SNAT实验

在这里插入图片描述

在这里插入图片描述

systemctl stop firewalld
setenforce 0
#在做实验之前要将防火墙全部关闭

1、配置外网web服务器
在这里插入图片描述

cd /etc/sysconfig/network-scripts/
#进入修改ip地址

在这里插入图片描述

#设置完后重启启动网卡和阿帕奇服务
systemctl restart network

systemctl restart httpd

网站服务设置完毕
在这里插入图片描述

2、设置内网客户端

在这里插入图片描述

systemctl restart network
#设置完后重启网卡

3、设置网关服务器

设置网关服务器时要添加两张网卡

在这里插入图片描述

4、配置内网ip
在这里插入图片描述

5、配置外网ip

在这里插入图片描述

配置好外网和内网ip
在这里插入图片描述

6、在网关服务器上面装个软件

yum install -y iptables*
#将所有以iptables开头的软件都安装
systemctl start iptables.service
#开启服务
systemctl enable iptables.service 
#实现kai

在网关服务器上清空所有相关的原先规则

iptables -F && iptables -t nat -F
#删除相关的规则

在这里插入图片描述

7、添加新的规则让网关服务器可以允许转发内网ip

iptables -t filter -A FORWARD -s 192.168.80.0/24 -j ACCEPT 
#允许192.168.80 网段的都允许转发

在这里插入图片描述

8、在配置文件里设置,设置完后就可以让内网ping通外网服务器

 vim /etc/sysctl.conf 
#进入配置文件里设置

net.ipv4.ip_forward = 1
#写入后,让他可以进行地址的转换

在这里插入图片描述
在这里插入图片描述
内网可以ping通外网,可以实现转发
在这里插入图片描述

9、查看外网服务器访问的记录
在这里插入图片描述

10、在网关服务器中添加nat地址转换规则

在这里插入图片描述
在这里插入图片描述

由原来的私网ip变成了公网ip来进行访问

在这里插入图片描述

三、DNAT

1、DNAT策略概述

DNAT原理与应用:
DNAT 应用环境:在Internet中发布位于局域网内的服务器
DNAT原理:修改数据包的目的地址。

DNAT转换前提条件:
1.局域网的服务器能够访问Internet
2.网关的外网地址有正确的DNS解析记录
3.Linux网关开启IP路由转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1 	

sysctl -p 			

在这里插入图片描述

2、DNAT 实验

DNAT环境准备:三台主机,一台私网主机、一台公网主机、一台做DNAT转换的网关服务器

1、配置网关服务器

在这里插入图片描述

2、去wed服务端进行设置

在这里插入图片描述

在这里插入图片描述

3、设置客户端主机
在这里插入图片描述

4、所有主机关闭防火墙

systemctl disable  --now firewalld
#将所有主机进行关闭防火墙

5、修改文件,加载转发服务

vim /etc/sysctl.conf 
#修改配置文件,开启转发服务

在这里插入图片描述
在这里插入图片描述

tcpdump抓包工具的使用方法
yum install -y tcpdump ##下载工具
tcpdump tcp -i ens32 -t -s 0 -c 100 and dst port !22 and src net 192.168.60.0/24 -w xxx.cap保存

(1)tcp:ip icmp arp rarp 和 tcp udp icmp 只写协议选项等都要放到第一个参数的位置,用来过滤数据包的类型

(2-i ens32:只抓经过接口ens33的包

(3-t:不显示时间戳

(4-s 0:抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓取完整的数据包

(5-c 100:只抓取100个数据包

(6)and:表示“与”的意思可以不加

(7)dst port !22:不抓取目标端口是22的数据包

(8)src net 192.168.60.0/24:数据包的源网段地址

(9-w ./xxx.cap:保存成cap文件方便ethereal(即wireshark)分析

进行抓包,ctrl+c 退出抓包状态,生成抓包文件
在这里插入图片描述

在桌面上生成的一个抓包文件
在这里插入图片描述

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

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

相关文章

网络知识点之-静态路由

静态路由(英语:Static routing)是一种路由的方式,路由项(routing entry)由手动配置,而非动态决定。与动态路由不同,静态路由是固定的,不会改变,即使网络状况已…

进程控制(总)

目录 进程创建 fork函数初识: 写时拷贝: fork常规用法: fork调用失败的原因: 进程终止 进程退出场景: 进程常见退出方法: _exit函数 exit函数 return退出: 进程等待 进程等待的必…

UE5实现模型压平效果

文章目录 1.实现目标2.实现过程2.1 实现原理2.2 蓝图实现2.3 闪面问题与压平精度3.参考资料1.实现目标 模型压平功能是GIS系统中的一个常用功能,可以用于模型的替换,数据的对比等。本文在UE5中通过修改材质的方式实现,实现模型压平的功能,包括常规建模的StaticMesh,以及C…

2023年网络安全竞赛——Windows操作系统渗透测试Server2124

任务五:Windows操作系统渗透测试 任务环境说明: 服务器场景:Server2124(关闭链接)服务器场景操作系统:Windows(版本不详)通过本地PC中渗透测试平台Kali对服务器场景Server2124进行系统服务及版本扫描渗透测试,并将该操作显示结果中1433端口对应的服务版本信息作为Fla…

【C++ 学习 ⑥】- C++ 动态内存管理详解

目录 一、new 表达式和 delete 表达式的工作机理 二、operator new 和 operator delete 函数 2.1 - 标准库定义 2.2 - 重载 三、定位 new 表达式 四、常见面试题 4.1 - malloc/free 和 new/delete 的区别 4.2 - 内存泄漏 在 C 中,new 和 delete 既是关键字&…

Linux系统c语言socket实现TCP通信

socket通信用到的函数 int socket( int af, int type, int protocol); af:一个地址描述。仅支持AF_INET格式,也就是说ARPA Internet地址格式。 type:指定socket类型。新套接口的类型描述类型,如TCP(SOCK_STREAM&#…

IMX6ULL裸机篇之DDR3参数配置分析

一. DDR3L 初始化简介 上一篇博文进行了 DDR参数的初始化,通过一个 execl表进行配置,生成脚本文件。文章网址如下: IMX6ULL裸机篇之DDR3初始化_凌雪舞的博客-CSDN博客 本文对 DDR的参数配置进行详细的说明。即对 "Register Configur…

前端026_菜单模块_新增功能

菜单模块_新增功能 1、需求分析2、新增组件实现3、列表引用新增组件4、关闭弹出窗口5、校验表单数据6、提交表单数据6.1、Mock 添加新增模拟接口6.2、Api 调用接口6.3、测试新增功能1、需求分析 菜单管理中有两处有 新增 按钮: 条件区域的是新增一级菜单,传递的参数是0。列表…

java多线程同步技术基础

说明 当程序中出现多个进程对同一资源进行操作时,因为对数据的操作非常密集,可能会对资源过度操作,这时就需要用到线程的同步技术。 以一个抢红包程序为例,红包数量为3个,开启5个线程来模拟抢红包行为,红…

[MAUI]在.NET MAUI中复刻苹果Cover Flow

文章目录 原理3D旋转平行变换 创建3D变换控件绘制封面图片应用3D旋转应用平行变换绘制倒影创建绑定属性 创建绑定数据创建布局计算位置计算3D旋转 创建动效项目地址 Cover Flow是iTunes和Finder中的一个视图选项,允许用户使用水平滚动的图像查看他们的音乐库或文件。…

使用Qt Creator编写窗体程序并打包发布

1、设置编辑器显示语言为中文(个人习惯) 2、新建窗体应用程序 3、简单修改一下代码 3.1 双击ui文件进入设计模式 3.2 从左侧组件中直接将需要使用的组件拖拽到窗体中 3.3 添加槽函数 选中按钮,右键菜单中 点击 转到槽,头文件和.cpp文件会自动添加对…

中间件_RabbitMQ五种消息模型

文章目录 1.简单消息队列模型2.Work工作队列模型3.发布订阅模型3.1.Fanout广播3.2.Direct路由3.3.Topics通配符 RabbitMQ官方文档 RabbitMQ 提供了5种常用消息模型。但是其实3、4、5这三种都属于订阅模型,只不过进行路由的方式不同。 1.简单消息队列模型 简单消息队…

C语言入门篇——编译篇

目录 1、程序环境 1.1 ANSI C 标准 1.2程序的翻译环境和执行环境 1.3运行环境 2、预处理详解 2.1、预定义符号 2.2、#define 2.2.1#define定义表示符 2.2.2#define定义宏 2.2.3#define替换规则 2.4#和## 2.2.5带副作用的宏参数 2.2.6宏和函数对比 3、#undef 4、…

项目1:登录功能设计

需求 后端接口设计MySQL表常用功能模块 后端总和前端实现方案 home页面 需求 实现一个登录功能 实现的功能 注册(邮箱注册) 登录(邮箱密码) 重置密码 查看操作记录(登录, 注册, 重置密码, 登出. 都算操作) 登出 后端接口设计 1. 人机验证 只要下面出现 人机验证 的功能都需要使…

容器化:MySQL

1 缘起 开启容器化之路。 2 容器化MySQL 2.1 查看MySQL镜像 docker search mysql2.2 指定版本:5.7.30 通过官网查看:https://hub.docker.com/ docker pull mysql:5.7.302.3 路径挂载 容器路径挂载到宿主机。 新建宿主机路径 mkdir -p /home/xind…

ElasticSearch-索引和文档的创建修改删除

目录 一、创建索引 二、查看索引 三、索引是否存在 四、删除索引 五、创建文档 六、查看文档 七、更新文档 八、文档是否存在 九、删除文档 一、创建索引 # 创建一个默认的索引,默认是标准分词器的索引 PUT /es_db2# 创建一个默认为ik分词器的索引 PUT /e…

十万条数据,后端不分页咋办!(如何优化长列表渲染)

十万条数据,后端不分页咋办!(如何优化长列表渲染) 长列表是什么? 我们通常把一组数量级很大的数据叫做长列表,比如渲染一组上千条的数据,我们以数组的形式拿到这些信息,然后遍历渲…

Rust快速安装

Rust依赖C编译,Rust官方推荐的安装方式是利用VisualSudio安装C环境,VisualStuidio用过的都懂,庞大无比、卡顿、下载还贼慢(我当时装了一上午好像),因此我们通过其它方式配置C 安装C环境 下载MinGW 64 win32 seh Mingw官网&…

Java的并发集合框架

文章目录 一、并发集合框架1. 简介2. 接口Iterable2. 接口Collection3. 接口List4. 接口Set5. 接口Queue6. Deque 二、非阻塞队列1. 概念2. ConcurrentHashMap使用(1)简介(2)验证HashMap不是线程安全的(3)验…

ld文件中指定变量在flash中的地址定义

本文说的是在gcc环境中,Keil或IAR可能有自己的使用方法。 我们在定义变量时,有时候需要把变量定义放到flash中的固定位置或区域,此时需要修改工程中的链接文件(link file,ld文件)。 方法一 修改ld文件中的…