SNAT与DNAT公私网地址转换

前言

SNAT和DNAT是两种重要的网络地址转换技术,它们允许内部网络中的多个主机共享单个公共IP地址,或者将公共IP地址映射到内部网络中的特定主机。这些技术在构建企业级网络和互联网应用程序时非常重要,因为它们可以帮助保护内部网络安全,同时提供对外部网络的可访问性。

目录

前言

一、SNAT

1. 概述

2. SNAT原理与应用

3. SNAT转换前提条件

4. 案例演示

5. 公网地址未知

二、DNAT

1. 概述

2. DNAT原理与应用

3. DNAT转换前提条件

4. 案例演示


一、SNAT

1. 概述

SNAT(Source Network Address Translation)是一种将私有IP地址转换为公共IP地址的技术,通常用于将内部网络中的多个主机共享单个公共IP地址的情况。在SNAT过程中,路由器或防火墙会将内部主机的IP地址替换为公共IP地址,以便能够与互联网通信。当公共IP地址接收到响应时,路由器或防火墙会将响应转发到相应的内部主机。

2. SNAT原理与应用

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

SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映射

3. SNAT转换前提条件

① 局域网各主机已正确设置IP地址、子网掩码、默认网关地址

② Linux网关开启IP路由转发 linxu系统本身是没有转发功能 只有路由发送数据

4. 案例演示

公网ip有限,利用SNAT技术实现私网地址都可以访问公网 

环境准备:

① 三台服务器:7-0客户端、7-1网关、7-2服务端

② 硬件要求:7-0和7-2只需一块网卡、7-1需要两块网卡

③ 网络模式要求:7-0为NAT模式、网卡ens33为NAT模式、网卡ens36为仅主机模式、7-2为仅主机模式

④ IP地址要求:7-0为192.168.190.100/24,网关为192.168.190.101;7-1ens33网卡地址为192.168.190.101/24,网关为192.168.190.101、ens36为12.0.0.254/24,网关为12.0.0.254;7-2为12.0.0.10/24,网关为12.0.0.254

图示:

操作:

① 关闭三台机器的防火墙和selinux,并安装httpd服务

[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y

② 配置7-0客户端,修改网卡ip为192.168.190/24,网关192.168.190.101,重启网卡 

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens3316 IPADDR=192.168.190.10017 NETMASK=255.255.255.018 GATEWAY=192.168.190.101
[root@localhost ~]# systemctl restart network

③  配置7-2客户端,修改网卡ip为12.0.0.10,网关12.0.0.254,重启网卡 

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens3316 IPADDR=12.0.0.1017 NETMASK=255.255.255.018 GATEWAY=12.0.0.254
[root@localhost ~]# systemctl restart network

④ 配置7-1网关服务器,分别配置ens33和ens36网卡信息,并开启路由转发功能

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens3316 IPADDR=192.168.190.10117 NETMASK=255.255.255.018 GATEWAY=192.168.190.101[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens3613 UUID=0927995e-64e0-49fb-b8ea-7809b06fc6b9
#删除以上内容12 NAME=ens3614 DEVICE=ens3616 IPADDR=12.0.0.25417 NETMASK=255.255.255.018 GATEWAY=12.0.0.254[root@localhost ~]# vim /etc/sysctl.conf
11 net.ipv4.ip_forward=1                     #开启路由转发
[root@localhost ~]# sysctl -p                #刷新配置文件
net.ipv4.ip_forward = 1 

 ⑥ 模拟环境中机器间默认是互通的,但生产环境内网和外网没有SNAT的情况下是不通的,这里的源地址为192.168.190.100,正常情况下私网ip是不会出现在公网中

7-0内网机器:
[root@localhost ~]# curl 12.0.0.107-2公网服务器:
[root@localhost ~]# tail -f /var/log/httpd/access_log 
192.168.190.100 - - [19/Feb/2024:18:44:28 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

⑦ 在7-1中添加防火墙规则使得来源于192.168.30.0/24网段的所有从ens36网阿卡流出数据的ip全部NAT为12.0.0.254。然后再使用7-0去curl7-2服务端并在服务端实时查看日志

7-1网关服务器:
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.190.0/24 -o ens36 -j SNAT --to 12.0.0.254
#将源IP地址为192.168.190.0/24网段的内部主机数据包进行SNAT地址转换,使用公网IP地址12.0.0.254作为源IP地址,并通过ens36接口进行转发
7-0客户机:
[root@localhost ~]# curl 12.0.0.10
7-2服务器:
[root@localhost ~]# tail -f /var/log/httpd/access_log 
192.168.190.100 - - [19/Feb/2024:18:44:28 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"
12.0.0.254 - - [19/Feb/2024:18:50:45 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

此时,可以看见日志源ip已转换为公网地址

5. 公网地址未知

可以将内部网络中的数据包源IP地址转换为外部网络接口的IP地址,以便能够通过外部网络进行访问。这样做的好处是可以隐藏内部网络的真实IP地址,增强安全性,同时也可以避免公网IP地址不足的问题。

7-1网关服务器:
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.190.0/24 -o ens36 -j SNAT --to MASQUERADE
#转换后的源IP地址为ens36接口的IP地址,并使用MASQUERADE方式进行转换;MASQUERADE方式是一种特殊的SNAT方式,它会动态地将内部网络中的IP地址转换为外部网络接口的IP地址,这样可以方便地处理不同的内部网络IP地址转换到同一个外部IP地址的情况。可以理解为伪装。

二、DNAT

1. 概述

DNAT(Destination Network Address Translation)是一种将公共IP地址转换为私有IP地址的技术,通常用于将公共IP地址映射到内部网络中的特定主机。在DNAT过程中,路由器或防火墙会将公共IP地址替换为内部主机的私有IP地址,以便能够将请求转发到正确的主机。当内部主机接收到请求时,它会将响应发送回路由器或防火墙,后者会将响应的源地址转换为公共IP地址,以便将响应发送回请求方。

2. DNAT原理与应用

DNAT应用环境:在Internet中发布位于局域网内的服务器

DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。

3. DNAT转换前提条件

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

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

③ Linux网关开启IP路由转发  

4. 案例演示

为提高服务器安全性,从公网访问的用户只能通过nat转换地址才可访问内网中的服务器

环境准备:

① 三台服务器:7-0客户端、7-1网关、7-2服务端

② 硬件要求:7-0和7-2只需一块网卡、7-1需要两块网卡

③ 网络模式要求:7-0为NAT模式、网卡ens33为NAT模式、网卡ens36为仅主机模式、7-2为仅主机模式

④ IP地址要求:7-0为192.168.190.100/24,网关为192.168.190.101;7-1ens33网卡地址为192.168.190.101/24,网关为192.168.190.101、ens36为12.0.0.254/24,网关为12.0.0.254;7-2为12.0.0.10/24,网关为12.0.0.254

图示:

① 网关服务器配置规则

[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 80  -j DNAT --to 192.168.190.101
#将到达本机的目标IP地址为12.0.0.254,目标端口为80的TCP数据包进行DNAT地址转换,将目标IP地址转换为192.168.190.101。

② 实时查看7-0的/var/log/httpdd/access_log日志,使用7-2公网地址直接curl内网的7-0,可以看到日志中源地址

7-2公网客户端:
[root@localhost ~]# curl 192.168.190.100
7-0内网服务端:
[root@localhost ~]# tail -f /var/log/httpd/access_log
12.0.0.10 - - [19/Feb/2024:21:19:23 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"

总结:

SNAT和DNAT都是NAT的一种形式,用于在不同网络之间转换IP地址,以实现网络安全、网络连接和网络管理的目的 。

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

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

相关文章

安全名词解析-攻防演练

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 攻防演练 01 攻防演练 《网络安全法》中明确提出,“定期组织关键信息基础设施的运营者进行网络安全应急演练,提高应对网络安全事件的水平和协同配合能力。”攻防演练目前已经…

0、电源管理入门之开篇即巅峰

目录 1. 电源状态介绍 2. Linux 电源管理的组成 3. ARM SoC中PCSA与SCP 4. SoC设计中的电源管理 “人是铁饭是钢,一顿不吃饿得慌”,对于嵌入式设备而言,没有电一切都白瞎,特别是带电池的终端嵌入式设备,对电能的管理尤其重要,也是我们调试设备的一个重点。可以说…

linux高级作业

作业需求 1、openEuler 二进制方式安装MySQL 8.0.x。 二、备份数据库 3.备份数据库school到/backup目录 4.备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 5.直接将MySQL数据库压缩备份 第一题 1、openEuler 二进制方式…

爬虫知识--01

爬虫介绍 # 爬虫的概念: 通过编程技术(python:request,selenium),获取互联网中的数据(app,小程序,网站),数据清洗(xpaht,lxml)后存到库中(mysql,redis,文件,excel&#x…

如何选择合适的三防平板?

一、随着移动互联网的快速发展,平板电脑作为一种轻便、易携带的移动设备已经成为了人们生活中必不可少的一部分。在一些特殊的工作环境下,例如工地、野外等场景,常规的平板电脑可能无法满足使用要求,因此人们需要选择一款具有防水…

【漏洞复现-通达OA】通达OA get_file.php 任意文件下载漏洞

一、漏洞简介 通达OA get_file.php文件存在任意文件下载漏洞,攻击者通过漏洞可以读取服务器敏感文件。 二、影响版本 ● 通达OA2011 三、资产测绘 ● hunterapp.name"通达 OA" ● 特征 四、漏洞复现 GET /module/AIP/get_file.php?MODULE/&A…

docker 服务的启动命令

Docker 服务的启动命令主要涉及 Docker Daemon 的启动和管理。Docker Daemon 是在后台运行的服务进程,负责管理 Docker 容器的创建、运行、停止等操作。根据你使用的操作系统,启动 Docker 服务的命令可能有所不同。 对于 Linux 系统 使用 systemctl (适…

如何在Excel中冻结行或列标题?这里提供两种方法

随着数据的增长,许多Excel工作表可能会变得很大,因此冻结行和列标题或冻结窗格非常有用,以便在滚动工作表时将标题锁定到位。在Excel中,可以冻结行标题和列标题,也可以只冻结一个。这不会影响将要打印的单元格。列标题…

Excel常用快捷键(持续更新)

引言 excel是我们办公中经常使用的工具,古语言“工欲善其事必先利其器”。excel是一个好的工具,但是工具里面有很多常用的快捷键,若我们熟记这些快捷键,便可以提高我们的工作效率。本文为持续更新,望有助于搬砖。 1、C…

SICTF Round#3 wp web

web hacker sql无列名注入; 提示查询username参数,flag在flag表中; 传参测试发现,union select 可用,空格被过滤可以使用/**/代替 ,or也被过滤了且无法大小写、双写等绕过,导致无法查询flag表…

微信小程序swiper 视频中间大,两边小,轮播滑到中间视频自动播放组件教程

静态效果&#xff1a; 进入下面小程序可以体验效果&#xff0c;点击底部 看剧 栏目 一、创建小程序组件 二、代码 1、WXML <view class"swiper-wrapper" style"background-image:url(/asset/image/hot-banner.jpg);background-size: 100% 100%;">…

正整数A+B(PTA团体天题练习题)细节题刨析

哎呀&#xff0c;又是看似简单的AB模型&#xff0c;这题确实也是AB&#xff0c;不过这个题让我debug1个多小时才找出来问题所在&#xff0c;服了&#xff0c;真是所谓细节决定成败&#xff0c;这题也挺值得记录下来的&#xff0c;话不多嗦&#xff0c;看题 题的目标很简单&…

RK3568平台开发系列讲解(Linux系统篇)内核中断机制

🚀返回专栏总目录 文章目录 一、注册中断处理程序二、下半部的概念2.1、Tasklet作为下半部2.2、工作队列作为下半部2.3、Softirq作为下半部沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中断是设备中止内核的一种方法,告诉内核发生了有趣或重要的事情。这些在Linu…

docker环境常用容器安装

目录 1.安装partainer 2.安装myql 3.安装redis 4.安装Minio 5.安装zibkin 6.安装nacos 7.安装RabbitMq 8.安装RocketMq 8.1启动service 8.2修改对应配置 8.3启动broker 8.4启动控制台 9.安装sentinel 10.安装elasticsearch 11.安装Kibana 12.安装logstash/file…

《UE5_C++多人TPS完整教程》学习笔记14 ——《P15 创建我们自己的子系统(Creating Our Own Subsystem)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P15 创建我们自己的子系统&#xff08;Creating Our Own Subsystem&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&…

three.js 3D可视化地图

threejs地图 可视化地图——three.js实现 this.provinceInfo document.getElementById(provinceInfo); // 渲染器 this.renderer new THREE.WebGLRenderer({antialias: true }); this.renderer.setSize(window.innerWidth, window.innerHeight); this.container.appendChild…

Open CASCADE学习|TopoDS_Vertex与gp_Pnt相互转化

目录 gp_Pnt TopoDS_Vertex 关系和转换 使用场景 在Open CASCADE Technology (OCCT)中&#xff0c;TopoDS_Vertex和gp_Pnt是两种不同的数据类型&#xff0c;用于表示三维空间中的点。它们有不同的用途和特性&#xff1a; gp_Pnt gp_Pnt是OCCT几何库&#xff08;Geom&…

php伪协议之phar

一.phar协议 用于将多个 PHP 文件、类、库、资源&#xff08;如图像、样式表&#xff09;等打包成一个单独的文件。这个归档文件可以像其他 PHP 文件一样被包含&#xff08;include&#xff09;或执行。PHAR 归档提供了一种方便的方式来分发和安装 PHP 应用程序和库&#xff0c…

机器学习中为什么需要梯度下降

在机器学习中&#xff0c;梯度下降是一种常用的优化算法&#xff0c;用于寻找损失函数的最小值。我们可以用一个简单的爬山场景来类比梯度下降的过程。 假设你被困在山上&#xff0c;需要找到一条通往山下的路。由于你是第一次来到这座山&#xff0c;对地形不熟悉&#xff0c;你…

Python——元组

一、元组特性介绍 元组和列表⼀样&#xff0c;也是⼀种序列类型的数据。 唯⼀的不同是&#xff0c;元组是相对不可变的。 二、⾼效创建元组 In [1]: t1 () # 创建 空 元素的元组In [2]: type(t1) Out[2]: tuple有元素的元组实际上是使⽤英⽂的逗号创建的 In [3]:…