Linux防火墙:SNAT和DNAT地址转换操作

news2024/11/27 4:30:09

目录

一、NAT

1、NAT概念

2、NAT分类

二、SNAT

1、SNAT概念 

2、SNAT源地址转换过程

3、已知外网地址的SNAT操作

3.1 配置网关服务器

3.1.1 添加网卡

3.1.2 配置ens33网卡

3.1.3 配置ens36网卡

3.1.4 重启网卡并查看网卡是否生效

3.1.5 开启路由转发功能

3.1.6 配置防火墙策略

3.2 配置内网客户端

3.3 配置外网服务器

3.4 测试

 4、未知或外网地址不固定时的SNAT操作

4.1 重新配置网关服务器的iptables规则

4.2 测试

三、DNAT

1、DNAT概念 

2、DNAT源地址转换过程

3、DNAT的相关操作

3.1 重新配置网关服务器的iptables规则

3.2 测试


一、NAT

1、NAT概念

在Linux 的 iptables 中,NAT(Network Address Translation)用于修改数据包的源或目标 IP 地址,以实现网络地址转换。它允许将私有网络内部的 IP 地址映射到公共网络中使用的 IP 地址,从而使得内部网络可以与外部网络进行通信

2、NAT分类

  • SNAT(Source NAT):也称为源地址转换,它用于修改数据包的源 IP 地址。当数据包离开本地网络时,它会被替换成路由器的外部接口 IP 地址,从而隐藏了内部网络的真实 IP 地址
  • DNAT(Destination NAT):也称为目标地址转换,它用于修改数据包的目标 IP 地址。当数据包进入本地网络时,它会被重写为指向内部主机的 IP 地址,这样可以将外部请求导向内部服务器
  • MASQUERADE:这是一种特殊形式的 SNAT,它用于动态地将内部私有 IP 地址映射到外部公共 IP 地址。MASQUERADE 适用于连接到 Internet 的场景,其中内部主机的 IP 地址通常是动态分配的
  • REDIRECT:这种类型的 NAT 用于将数据包重定向到同一台机器上的不同端口。这在端口转发和代理服务器设置中非常有用

二、SNAT

1、SNAT概念 

SNAT(Source NAT),也称为源地址转换,源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络

SNAT策略的原理:

  • 源地址转换
  • 修改数据包的源地址

2、SNAT源地址转换过程

  • 数据包从内网发送到公网时,SNAT会把数据包的源地址由私网IP转换成公网IP
  • 当相应的数据包从公网发送到内网时,会把数据包的目的地址由公网IP转换为私网IP
  • 当内网有多台主机访问外网时,SNAT在转换时会自动分配端口,不同内网主机会通过端口号进行区分

3、已知外网地址的SNAT操作

运用SNAT策略将局域网中的客户端IP封装为网关服务器的外网IP,访问web服务器的http服务 

3.1 配置网关服务器

前提:关闭所有机器的firewalld防火墙和核心防护,开启iptables防火墙

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
[root@localhost ~]#systemctl start iptables.service
#所有机器下载httpd服务并开启
[root@localhost ~]#yum install -y httpd
[root@localhost ~]#systemctl start httpd
3.1.1 添加网卡

3.1.2 配置ens33网卡
[root@localhost ~]#cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]#vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.10
NETMASK=255.255.255.0
GATEWAY=172.16.12.2
3.1.3 配置ens36网卡
[root@localhost ~]#cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]#vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=11.0.0.10
NETMASK=255.255.255.0
GATEWAY=11.0.0.10
3.1.4 重启网卡并查看网卡是否生效
[root@localhost ~]#systemctl restart network
[root@localhost ~]#ifconfig

3.1.5 开启路由转发功能
[root@localhost ~]#sysctl -a|grep ip_forward
[root@localhost ~]#echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
[root@localhost ~]#sysctl -p

3.1.6 配置防火墙策略
#将内网地址通过ens36网口,都转为11.0.0.10的外网地址
[root@localhost ~]#iptables -t nat -A POSTROUTING -s 172.16.12.0/24 -o ens36 -j SNAT --to 11.0.0.10
#在出口的地方加指定POSTROUTING,指定源网段 172.16.12.0/24,指定出口网卡ens36
[root@localhost ~]#iptables -t nat -vnL

3.2 配置内网客户端

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.12.12 
NETMASK=255.255.255.0
GATEWAY=172.16.12.10
[root@localhost ~]#systemctl restart network
#将想要的内容写入外网服务器的网站文件中
[root@localhost ~]#echo "欢迎使用内网客户端" > /var/www/html/index.html

3.3 配置外网服务器

[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=11.0.0.11 
NETMASK=255.255.255.0
GATEWAY=11.0.0.10
[root@localhost ~]#systemctl restart network

当修改完ens33网卡后,外网服务器的xshell会因为无网络而断联,这时候需要使用其他能联网的机器远程登录到外网服务器进行后续操作

#将想要的内容写入外网服务器的网站文件中
[root@localhost ~]#echo "欢迎使用外网服务器" > /var/www/html/index.html

3.4 测试

#内网客户端使用curl命令访问外网服务器的网站
[root@localhost ~]#curl 11.0.0.11

#查看源内网IP地址172.16.12.12是否转换为外网IP地址:11.0.0.10
[root@localhost ~]#tailf /var/log/httpd/access_log 

 4、未知或外网地址不固定时的SNAT操作

4.1 重新配置网关服务器的iptables规则

首先,其他配置与已知外网地址的SNAT操作一样,只需要改变网关服务器的防火墙测略即可

#先清空之前配置的防火墙策略
[root@localhost ~]#iptables -t nat -F
#如果外网地址未知或不固定的时候可以设置伪装
[root@localhost network-scripts]#iptables -t nat -A POSTROUTING -s 172.16.12.0/24 -o ens36 -j MASQUERADE

 4.2 测试

#内网客户端使用curl命令访问外网服务器的网站
[root@localhost ~]#curl 11.0.0.11

#查看源内网IP地址172.16.12.12是否转换为外网IP地址:11.0.0.10
[root@localhost ~]#tailf /var/log/httpd/access_log 

三、DNAT

1、DNAT概念 

DNAT(Destination NAT):也称为目标地址转换,它用于修改数据包的目标 IP 地址。当数据包进入本地网络时,它会被重写为指向内部主机的 IP 地址,这样可以将外部请求导向内部服务器

DNAT策略的原理:

  • 目标地址转换
  • 修改数据包的目标地址

2、DNAT源地址转换过程

  • 数据包从外网发送到内网时,DNAT会把数据包的目标地址由公网IP转换成私网IP
  • 当相应的数据包从内网发送到公网时,会把数据包的源地址由私网IP转换为公网IP

3、DNAT的相关操作

3.1 重新配置网关服务器的iptables规则

通过DNAT将外网服务器的提供的httpd服务映射到网关服务器ens36网卡,且端口为80上

首先,其他配置与之前的操作一样,只需要改变网关服务器的防火墙测略即可 

#把从ens36进来的要访问web服务的数据包目的地址转换为172.16.12.12
#指定目的地址为网关服务器的ens36外网网卡的IP地址,将外网服务器的地址映射到网关服务器的内网IP
#指定目的端口为html:80  这里可以修改映射为其它端口,加强安全性
[root@localhost ~]#iptables -t nat -A PREROUTING -i ens36 -d 11.0.0.10 -p tcp --dport 80  -j DNAT --to 172.16.12.10

3.2 测试

#查看外网服务端能否使用curl命令访问内网客户端的网站
[root@localhost ~]#curl 172.16.12.12

#查看内网客户端的日志
[root@localhost ~]#tailf /var/log/httpd/access_log 

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

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

相关文章

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构

目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费(门诊/住院)系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…

嵌入式面试:瑞芯微

文章目录 一、2024 秋招1.1 IIC的速率范围 :1.2 linux驱动子系统汇总 :1.3 linux关抢占情况汇总 :1.4 操作或者读写一个文件时,从用户态到内核态再到物理介质的流程(考点:虚拟文件系统) : 一、2024 秋招 1…

Model / View结构

红色部分是可以直接使用的。 QFileSystemModel; QFileSystemModel的使用: 头文件: QFileSystemModel* model nullptr; cpp文件: model new QFileSystemModel; model->setRootPath(QDir::currentPath()); ui->listView->setModel…

LDR6020打造最具有性价比的TYPE-C台式显示器方案

对于手里有TYPE-C接口电脑设备,又觉得自带屏幕太小,需要换用外接屏幕,或者需要多屏办公的用户。肯定要首选支持Type-c连接的显示器了。为什么呢?因为Type-c连接可以战未来,而不是仅仅能满足现在的需求。 首先介绍一下…

【vue+leaflet】vue项目中使用leaflet绘制室内平面图、leaflet.pm在平面图中绘制点、线、面图层(一)

效果图: 一,插件安装 npm i leaflet --save // 我的版本^1.9.4 npm i leaflet.pm --save // 我的版本^2.2.0附官网链接: leaflet官网: https://leafletjs.com/index.html leaflet.pm官网: https://www.npmjs.com/package/leaflet.pm?activeTabreadme 二,模块引入 因为我…

语义相关性评估指标:召回率、准确率、Roc曲线、AUC;Spearman相关系数、NDCG、mAP。代码及计算示例。

常规的语义相关性评价可以从检索、排序两个方面进行。这里只贴代码。详细可见知乎https://zhuanlan.zhihu.com/p/682853171 检索 精确率 def pre(true_labels[],pre_labels[]):""":param true_labels: 正样本索引:param pre_labels: 召回样本索引:return: 精…

nacos 2.3.1-SNAPSHOT 源码springboot方式启动(详细)附改造工程地址

文章时间是2024-2-18日,nacos默认develop分支,最新版是2.3.1-SNAPSHOT版本。 我们这里就以nacos最新版进行改造成springboot启动方式。 1. Clone 代码 nacos github地址:https://github.com/alibaba/nacos.git 根据上面git地址把源码克隆到…

wps快速生成目录及页码设置(自备)

目录 第一步目录整理 标题格式设置 插入页码(罗马和数字) 目录生成(从罗马尾页开始) ​编辑目录格式修改 第一步目录整理 1罗马标题 2罗马标题1一级标题 1.1 二级标题 1.2二级标题2一级标题 2.1 二级标题 2.2二级标题3一级标…

开源模型应用落地-工具使用篇-SLB(二)

一、前言 通过学习"开源模型应用落地"系列文章,我们成功地建立了一个完整可实施的AI交付流程。现在,我们要引入负载均衡,以提高我们的AI服务的性能和故障转移能力。本文将详细介绍如何使用腾讯云的负载均衡技术来将我们的AI服务部署…

网页脚本 bilibili004:字幕展示添加下载功能实现

效果 按钮显示 按钮hover 按钮点击 代码实现 在main函数中添加下载逻辑 getVideoName().then((resultObject) > {// 处理异步的Promise对象,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/thenaddDownloadButt…

Fiddler与wireshark使用

Fiddler解决三个问题 1、SSL证书打勾,解析https请求 2、响应回来乱码,不是中文 3、想及时中止一下,查看实时的日志 4、搜索对应的关键字 问题1解决方案: 标签栏Tools下 找到https,全部打勾 Actions里面 第一个 t…

沁恒CH32V30X学习笔记00--芯片概述

芯片概述 资源 系统框图 V303时钟树 V305/V307时钟 RISC-V4F 处理器 单精度浮点运算 处理器内部以模块化管理, 包含快速可编程中断控制器(PFIC) 内存保护 分支预测模式 扩展指令支持等单元 小端数据模式 多级硬件中断堆栈&#

ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整

文章目录 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整获取音频长度pydub获取音频长度获取时长精确到秒格式设定 mutagen获取音频长度 调整音量视频音量调整注意事项 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整 老王媳妇说上次那个pip挺好…

『运维备忘录』之 SSH 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等知识,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

OpenAI最新模型Sora到底有多强?眼见为实的真实世界即将成为过去!

文章目录 1. 写在前面2. 什么是Sora?3. Sora的技术原理 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感…

Linux-文件文件夹相关命令

目录 常见命令 1. 创建空目录:mkdir 文件夹名 2. 删除空目录:rmdir 文件夹名 3. 创建多级目录:mkdir -p 123/abc 4. 删除非空文件 rm -rf 文件夹名 5. 创建文件: touch 文件名.后缀 / vi 文件名.后缀 6. 删除文件&#x…

挑战杯 基于GRU的 电影评论情感分析 - python 深度学习 情感分类

文章目录 1 前言1.1 项目介绍 2 情感分类介绍3 数据集4 实现4.1 数据预处理4.2 构建网络4.3 训练模型4.4 模型评估4.5 模型预测 5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于GRU的 电影评论情感分析 该项目较为新颖,适合作为竞…

Spring Boot java -jar --spring.profiles.active=dev 失效问题

之前动态部署修改配置文件的情况不多&#xff0c;所以也没注意过&#xff0c;这个问题今天困扰了好久&#xff0c;经过多方查询后得到了解决办法 直接上代码 <profiles><profile><!-- 本地开发环境 --><id>dev</id><properties><profi…

Codeforces Global Round 6

CF1266A Competitive Programmer 题目 给出n个数,问对于每个数,是否可以将这个数的数位重新组合(可以有前导零), 使其可以被60整除,若可以,则输出red,否则,输出cyan 分析 首先来看被60整除需要满足什么条件&#xff0c;因为602*3*10&#x…

2024年 前端JavaScript入门到精通 第一天 笔记

主要讲解JavaScript核心知识&#xff0c;包含最新ES6语法&#xff0c;从基础到API再到高级。让你一边学习一边练习&#xff0c;重点知识及时实践&#xff0c;同时每天安排大量作业&#xff0c;加深记忆&#xff0c;巩固学习成果。 1.1 基本软件与准备工作 1.2 JavaScript 案例 …