firewalld(7)NAT、端口转发

简介

在前面的文章中已经介绍了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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cpp随笔——如何实现一个简单的进程心跳功能

什么是进程的心跳 在我们日常后台服务程序运行中,一般是调度模块&#xff0c;进程心跳以及进程监控共同工作&#xff0c;进而实现实现服务的稳定运行,在前面我们介绍过如何去实现一个简单的调度模块,而今天我们所要介绍的就是如何实现进程的心跳&#xff0c;首先什么是进程的心…

MCU中如何利用串口通信,增加AT指令框架

第一步&#xff0c;通过串口与PC端建立通信第二步&#xff0c;根据PC端发来的AT指令&#xff0c;MCU执行相应代码 主要是解析PC端发来的字符串&#xff0c;也就是获取字符串、处理字符串、以及分析字符串。 1. 串口通信 用到的是DMA串口通信&#xff0c;收发字符串数据时&…

什么是JavaScript中的箭头函数(arrow functions)?

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介什么是JavaScript中的箭头函数&#xff08;arrow functions&#xff09;&#xff1f;1. 引言2. 箭头函数的语法2.1 基本语法2.2 示例 3. 箭头函数的特点3.1 简洁的语法3.2 没有this绑定3.3 不能用作构造函数3.4 没有arguments对象3…

基于SpringBoot的就业信息管理系统

你好&#xff0c;我是计算机学姐码农小野&#xff01;如果你对就业信息管理系统感兴趣或有相关需求&#xff0c;欢迎私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBootMySql 工具&#xff1a; MyEclipse、Tomcat 系统展示…

隐私信息管理体系认证:守护个人信息,筑牢隐私防线

在数字化浪潮汹涌的当下&#xff0c;个人信息安全问题愈发凸显其重要性。随着互联网技术的飞速发展&#xff0c;我们的隐私信息如同裸露在阳光下的沙滩&#xff0c;稍有不慎就可能被不法分子窃取或滥用。因此&#xff0c;构建一个完善的隐私信息管理体系&#xff0c;成为了保障…

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

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

软件测评机构:关于软件验收测试作用与实施步骤全解析

软件验收测试是指在软件项目交付给用户之前进行的一系列测试活动&#xff0c;其主要目的是验证软件是否符合用户需求和设计规范&#xff0c;以确保软件的质量和稳定性。 软件验收测试在软件开发生命周期的最后阶段进行&#xff0c;起到了至关重要的作用。它能够帮助客户确认软…

AI PC(智能电脑)技术分析

一文看懂AI PC&#xff08;智能电脑&#xff09; 2024年&#xff0c;英特尔、英伟达等芯片巨头革新CPU技术&#xff0c;融入AI算力&#xff0c;为传统PC带来质的飞跃&#xff0c;引领智能计算新时代。 2024年&#xff0c;因此被叫作人工智能电脑&#xff08;AI PC&#xff09;…

【elementui】记录解决el-tree开启show-checkbox后,勾选一个叶结点后会自动折叠的现象

第一种解决方案&#xff1a;设置default-expand-keys的值为当前选中的key值即可 <el-treeref"tree"class"checkboxSelect-wrap":data"treeData"show-checkboxnode-key"id":expand-on-click-node"true":props"defau…

MATLAB——循环语句

一、for end语句 在该语法中&#xff0c;循环变量是用于迭代的变量名&#xff0c;它会在每次循环迭代中从向量或矩阵中取出一列的值。数值向量或者矩阵则表示了循环变量可以取值的范围&#xff0c;通常根据实际需要事先给定。一旦循环变量遍历完数值向量或者矩阵中的所有值&…

初试成绩占比百分之70!计算机专硕均分340+!华中师范大学计算机考研考情分析!

华中师范大学&#xff08;Central China Normal University&#xff09;简称“华中师大”或“华大”&#xff0c;位于湖北省会武汉&#xff0c;是中华人民共和国教育部直属重点综合性师范大学&#xff0c;国家“211工程”、“985工程优势学科创新平台”重点建设院校&#xff0c…

苹果公司的Wifi定位服务(WPS)存在被滥用的风险

安全博客 Krebs on Security 2024年5月21日发布博文&#xff0c;表示苹果公司的定位服务存在被滥用风险&#xff0c;通过 "窃取"WPS 数据库&#xff0c;可以定位部队行踪。 相关背景知识 手机定位固然主要依赖卫星定位&#xff0c;不过在城市地区&#xff0c;密集的…

YOLOv10全网最新创新点改进系列:融合GSConv+Slim Neck,双改进、双增强,替换特征融合层实现, 轻量化涨点改进策略,有效涨点神器!

YOLOv10全网最新创新点改进系列&#xff1a;融合GSConvSlim Neck&#xff0c;双改进、双增强&#xff0c;替换特征融合层实现&#xff0c; 轻量化涨点改进策略&#xff0c;有效涨点神器&#xff01; 所有改进代码均经过实验测试跑通&#xff01;截止发稿时YOLOv10已改进40&…

vue中的坑·

常规 1.使用watch时&#xff0c;immediate true会在dom挂载前执行 2.使用this.$attrs和props 可以获取上层非原生属性&#xff08;class/id&#xff09; 多层次嵌套引用 设置的时候直接赋值&#xff0c;修改的时候即使用的双向绑定加上$set / nextick / fouceUpdate都不会同步…

MySQL表的练习

二、创建表 1、创建一个名称为db_system的数据库 create database db_system; 2、在该数据库下创建两张表&#xff0c;具体要求如下 员工表 user 字段 类型 约束 备注 id 整形 主键&#xff0c;自增长 id N…

探索设计的未来:了解设计师对生成式人工智能(AIGC)工具的采用

在数字化浪潮的推动下&#xff0c;设计行业正经历着一场革命性的变革。随着生成式人工智能&#xff08;AIGC&#xff09;技术的发展&#xff0c;设计师们迎来了前所未有的机遇与挑战。这些工具不仅重塑了传统的设计流程&#xff0c;还为设计师们提供了更广阔的创意空间和更高效…

vue模板语法v-html

模板语法v-html vue使用一种基于HTML的模板语法&#xff0c;使我们能够声明式的将其组件实例的数据绑定到呈现的DOM上&#xff0c;所有的vue模板都是语法层面的HTML&#xff0c;可以被符合规范的浏览器和HTML解释器解析。 一.文本插值 最基本的数据绑定形式是文本插值&#…

理解神经网络的通道数

理解神经网络的通道数 1. 神经网络的通道数2. 输出的宽度和长度3. 理解神经网络的通道数3.1 都是错误的图片惹的祸3.1.1 没错但是看不懂的图3.1.2 开玩笑的错图3.1.3 给人误解的图 3.2 我或许理解对的通道数3.2.1 动图演示 1. 神经网络的通道数 半路出嫁到算法岗&#xff0c;额…

【算法训练记录——Day41】

Day41——动态规划Ⅲ 1.理论基础——代码随想录2.纯01背包_[kamacoder46](https://kamacoder.com/problempage.php?pid1046)3.leetcode_416分割等和子集 背包&#xff01;&#xff01; 1.理论基础——代码随想录 主要掌握01背包和完全背包 物品数量&#xff1a; 只有一个 ——…