firewalld(7)NAT、端口转发

news2024/11/26 17:47:37

简介

在前面的文章中已经介绍了firewalld了zone、rich rule等规则设置,并且在iptables的文章中我们介绍了网络防火墙、还有iptables的target,包括SNAT、DNAT、MASQUERADE、REDIRECT的原理和配置。那么在这篇文章中,将继续介绍在firewalld中的NAT的相关配置使用。

实验环境

和我们在做iptables网络防火墙以及rich rule时的环境是一模一样,内部区域为192.168.140.0/24网段,firewalld配置在主机B上,分为内部trusted区域,和外部public区域。其中主机A的网关是主机B 192.168.140.250,主机B的网关是主机C模拟的公网192.168.170.128。
​​​​​

在配置NAT之前要确保我们的系统已经开启了IP转发功能,我在iptables配置部分已经开启了IP转发功能。开启方式如下

若要永久性地开启内核转发,可以编辑 /etc/sysctl.conf 文件并确保 net.ipv4.ip_forward 的值为 1。然后运行下面的命令使其生效

sysctl -p
已经开启了IP转发

SNAT

SNAT(Source Network Address Translation,源网络地址转换)是一种网络地址转换(NAT)技术,它用于在数据包离开本地网络(通常是私有网络)并发送到外部网络(如互联网)时,改变数据包的源IP地址。SNAT允许一个或多个内部(私有)IP地址被映射到一个或多个外部(公共)IP地址上,这样外部网络就只能看到转换后的公共IP地址,而无法直接看到原始的内部IP地址。

配置基本SNAT基于masquerade

此时我们public的zone没有开启masquerade功能,masquerade就是流量从出接口发出去的时候会转换为该接口的ip地址
我们给public配置masquerade,此时从该zone对应物理接口发出去的数据包就会进行地址转换,转换为出接口的IP地址

测试

在主机A上ping主机C,此时已经可以ping通,那么主机C上看到的地址是多少呢?因为默认情况下,我们主机A的网关是主机B,主机B的网关是主机C,而主机C只知道和主机B的直连网段的路由,并不知道主机C的地址。此时可以通,说明主机C回包的地址就是我们配置了SNAT后的出口ip地址,即192.168.170.200
在主机C上看到的回包地址为192.168.170.200,和我们配置的是一样的。

我们在配置masquerade的时候并不能手动指定转换的源IP地址,那么如果需要手动指定源IP地址呢?就和我们配置iptables的时候一样,可以直接配置SNAT指定出口地址。那么就需要使用--direct的方式来配置了。

配置--direct的SNAT

由于我们已经将firewalld的后端配置为iptables了,当我们使用--direct时,其实就是配置的是iptables。和我们iptables中的策略方式是一样的

通过--direct参数直接配置防火墙,从192.168.140.248来的目的地址端口为80的流量将源地址转换为192.168.170.201

测试:

主机A通过http访问主机C,此时主机C看到的地址应该是192.168.170.201
这里我们看到了主机C已经收到了主机A发来的数据包,源地址为192.168.170.201。说明我们的NAT配置已经生效了。

DNAT

DNAT(Destination Network Address Translation,目标网络地址转换),它用于将到达NAT设备(如防火墙、路由器)的流量的目标IP地址从一个地址转换为另一个地址。在DNAT场景中,外部网络(或称为“公共”网络)上的设备尝试访问NAT设备上的某个IP地址(通常是NAT设备的外部IP地址或公共IP地址),但实际上,这些流量被重定向到NAT设备后面的内部网络(或称为“私有”网络)上的某个设备。

配置DNAT

firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>]
如上图所示,配置将发送到public的40022端口的tcp数据包转发至192.1678.140.248的22端口,注意,前面我们已经开起了该区域的masquerade,配置完成后需要--reload。此时当发送的数据包到达ens36接口地址的40022端口,就会将数据包转发至192.168.140.248 22端口。

测试

此时已经通过40022端口ssh到了140.248主机上

配置DNAT基于rich rule

rich rule中关于DNAT配置的相关参数如下
forward-port port=<PORTNUM> protocol=tcp|udp [to-port=<PORTNUM>] [to-addr=<ADDRESS>]
通过使用rich rule配置DNAT,将50022端口转发至192.168.140.248的22端口

测试

此时已经通过50022端口连接到140.248上了。

REDIRECT

可以使用重定向机制使内部运行在非标准端口上的 如Web 服务可以访问,而无需用户在 URL 中指定端口。因此,URL 更简单,提供更好的浏览体验,而非标准端口仍然在内部使用或用于特定的要求。

 例如我本机开启了一个服务是2017端口的,但是我对外发布的时的端口可能是443或者80,我这里用8080来举例,那么用户只需要访问我对应的8080端口就可以直接访问到我内部的2017端口。这个和DNAT的端口转换机制相似。

配置REDIRECT

firewall-cmd --zone=public --add-forward-port=port=<standard_port>:proto=tcp:toport=<non_standard_port> --permanent
此时如果仔细观察上图就会发现,该配置与我们前面配置的DNAT配置相比就少了IP地址字段。

测试

此时已经可以通过8080端口正常访问

同样的我们也可以通过rich rule 方式配置

配置REDIRECT rich rule方式

如上图所示,我们按照前面REDIRECT的方式配置richrule ,将40080端口转到2017端口

测试

此时已经可以正常访问。

总结

本篇文章我们介绍了firewall中配置NAT的方式,更加详细的配置方式和原理可以参考前面iptables中NAT相关的文章iptables(11)target(SNAT、DNAT、MASQUERADE、REDIRECT)

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

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

相关文章

电气-伺服(6)脉冲控制

一、脉冲模式原理&#xff1a; 运动控制器输出脉冲信号给伺服驱动器 伺服驱动器工作于位置模式 伺服驱动器内部要完成三闭环&#xff08;位置闭环 、速度闭环、电流环&#xff09; 脉冲和伺服控制环&#xff1a;脉冲的个数作用于位置环。脉冲的频率作用于速度环 二、脉冲的两…

【论文阅读】LLM+3D (1)

文章目录 1. 【CoRL 2023】SayPlan: Grounding Large Language Models using 3D Scene Graphs for Scalable Robot Task Planning动机摘要和结论引言模型框架3.1 Problem Formulation3.2 Preliminaries 2. ShapeLLM: Universal 3D Object Understanding for Embodied Interacti…

【Unity小知识】UnityEngine.UI程序集丢失的问题

问题表现 先来说一下问题的表现&#xff0c;今天在开发的时候工程突然出现了报错&#xff0c;编辑器提示UnityEngine.UI缺少程序集引用。 问题分析与解决&#xff08;一&#xff09; 既然是程序集缺失&#xff0c;我们首先查看一下工程项目是否引用了程序集。在项目引用中查找一…

解决uni-app中全局设置页面背景颜色只有部分显示颜色的问题

在页面的style标签设置了背景色但是只显示一部分 <style lang="scss"> .content{background-color: #f7f7f7;height: 100vh; } </style>我们在app.vue里设置就行了 注意一定要是**page{}** <style>/*每个页面公共css */page{background-color:

结合数据索引结构看SQL的真实执行过程

引言 关于数据库设计与优化的前几篇文章中&#xff0c;我们提到了数据库设计优化应该遵守的指导原则、数据库底层的索引组织结构、数据库的核心功能组件以及SQL的解析、编译等。这些其实都是在为SQL的优化、执行的理解打基础。 今天这篇文章&#xff0c;我们以MySQL中InnoDB存…

【Cadence18】如何放置定位孔

在菜单的place->manually会出现Placement对话框&#xff0c; 在Advanced settings中勾选database和library 然后点击Placement list&#xff0c;下拉框中选择Mechanical symbols,勾选你要的定位孔 &#xff08;如下图的HOLE_1_6R00D2R70-PTH&#xff0c;注意&#xff1a;…

Windows 11内置一键系统备份与还原 轻松替代Ghost

面对系统崩溃、恶意软件侵袭或其他不可预见因素导致的启动失败&#xff0c;Windows 7~Windows 11内置的系统映像功能能够迅速将您的系统恢复至健康状态&#xff0c;确保工作的连续性和数据的完整性。 Windows内置3种备份策略 U盘备份&#xff1a;便携且安全 打开“创建一个恢…

平替向日葵:Windows远程桌面+动态IP获取器

对于需要远程办公的人员来说&#xff0c;向日葵是一个操作简便的选择&#xff0c;但其免费版功能受限&#xff0c;且由于数据需经过向日葵服务器转发&#xff0c;安全性也无法得到完全保障。为此&#xff0c;以下提供一个更为简单且免费的替代方案&#xff1a; 使用Windows自带…

一则 MySQL 子查询改写 SQL 优化小案例

一篇短小精悍的 SQL 优化案例&#xff01; 作者&#xff1a;马文斌&#xff0c;MySQL/Redis 爱好者~ 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本文约 600 字&#xff0c;预计阅读需要 2 分钟。 事情是这样的 近日…

CobaltStrike的内网安全

1.上线机器的Beacon的常用命令 2.信息收集和网站克隆 3.钓鱼邮件 4.CS传递会话到MSF 5.MSF会话传递到CS 1上线机器的Beacon的常用命令 介绍&#xff1a;CobaltStrike分为服务端和客户端&#xff0c;一般我们将服务端放在kali&#xff0c;客户端可以在物理机上面&#xff0…

React 19 竞态问题解决

竞态问题/竞态条件 指的是&#xff0c;当我们在交互过程中&#xff0c;由于各种原因导致同一个接口短时间之内连续发送请求&#xff0c;后发送的请求有可能先得到请求结果&#xff0c;从而导致数据渲染出现预期之外的错误。 因为防止重复执行可以有效的解决竞态问题&#xff0…

ChatGPT:SpringBoot解决跨域问题方法-手动设置请求头

ChatGPT&#xff1a;SpringBoot解决跨域问题方法-手动设置请求头 这里的设置响应头是为了发送请求方还是接收请求方 设置响应头是为了发送请求方。具体来说&#xff0c;添加 Access-Control-Allow-Origin 头部是为了告诉浏览器&#xff0c;哪些域名可以访问资源。当设置为 * 时…

鼠标自动点击器怎么用?鼠标连点器入门教程!

鼠标自动点击器是适用于Windows电脑的自动执行鼠标点击操作的工具&#xff0c;主要用于模拟鼠标点击操作&#xff0c;实现鼠标高速点击的操作。通过模拟鼠标点击&#xff0c;可以在用户设定的位置、频率和次数下自动执行点击动作。 鼠标自动点击器主要的应用场景&#xff1a; …

使用工业自动化的功能块实现大语言模型应用

大语言模型无所不能&#xff1f; 以chatGPT为代表的大语言模型横空出世&#xff0c;在世界范围内掀起了一场AI革命。给人的感觉似乎大模型语言无所不能。它不仅能够生成文章&#xff0c;图片和视频&#xff0c;能够翻译文章&#xff0c;分析科学和医疗数据&#xff0c;甚至可以…

矩阵键盘与密码锁

目录 1.矩阵键盘介绍​编辑 2.扫描的概念 3.代码演示&#xff08;读取矩阵键盘键码&#xff09; 4.矩阵键盘密码锁 1.矩阵键盘介绍 为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式&#xff0c;采用逐行或逐列的 “扫描”&#xff0c;就可以读出任何位置按键的状态…

C++ 视觉开发 六.特征值匹配

以图片识别匹配的案例来分析特征值检测与匹配方法。 目录 一.感知哈希算法(Perceptual Hash Algorithm) 二.特征值检测步骤 1.减小尺寸 2.简化色彩 3.计算像素点均值 4.构造感知哈希位信息 5.构造一维感知哈希值 三.实现程序 1.感知哈希值计算函数 2.计算距离函数 3…

Transformer和Mamba强强结合!最新混合架构全面开源,推理速度狂飙8倍

最近发现&#xff0c;将Mamba和Transformer模块混合使用&#xff0c;效果会比单独使用好很多&#xff0c;这是因为该方法结合了Mamba的长序列处理能力和Transformer的建模能力&#xff0c;可以显著提升计算效率和模型性能。 典型案例如大名鼎鼎的Jamba&#xff1a;Jamba利用Tr…

自定义流程表单开发优势体现在什么地方?

提质、增效、降本&#xff0c;应该是很多职场办公需要实现的发展目标。那么&#xff0c;应用什么样的软件平台可以实现&#xff1f;低代码技术平台、自定义流程表单开发是目前流行于职场行业中的软件产品&#xff0c;可视化操作界面、够灵活、易维护等优势特点明显&#xff0c;…

考到PMP证书后 如何获得PDU?

目前仅续证一次&#xff0c;也是在威班PMP考试后免费积攒的。其实获取PMP的渠道很多&#xff0c;网上也有很多售卖的&#xff0c;积攒起来也挺容易&#xff0c;不过在续证的时候千万不要找不明渠道来源的人去搞&#xff0c;不靠谱。续证期有三年的&#xff0c;三年时间积攒60PD…

理解机器学习中的潜在空间(Understanding Latent Space in Machine Learning)

1、什么是潜在空间&#xff1f; If I have to describe latent space in one sentence, it simply means a representation of compressed data. 如果我必须用一句话来描述潜在空间&#xff0c;它只是意味着压缩数据的表示。 想象一个像上面所示的手写数字&#xff08;0-9&…