CentOS 7如何设置防火墙端口转发

云静吖_7713

云静吖_7713

2026-08-08

830人浏览

原创

firewall-cmd --add-forward-port 必须配合启用 masquerade 和开启 ipv4 转发才能生效;缺一将导致 https 等 tcp 流量静默失败,且需 --permanent 加 --reload 才真正加载规则。

centos 7如何设置防火墙端口转发

firewall-cmd --add-forward-port 必须配合 IP 伪装

端口转发在 firewalld 中不会生效,除非对应 zone 已启用 masquerade。这不是可选项,是内核级依赖:没有地址伪装,Netfilter 就无法完成 DNAT/SNAT 链路闭环。
常见错误现象是执行了转发命令但流量完全无响应,firewall-cmd --list-all 显示规则存在,却查不到任何包计数 —— 八成没开伪装。

  • firewall-cmd --zone=public --add-masquerade --permanent(务必加 --permanent)
  • 确认开启:firewall-cmd --zone=public --query-masquerade 返回 yes
  • 如果用的是非 public zone(比如 external),所有命令都要显式指定 --zone=xxx
  • 别漏掉内核参数:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p

端口转发命令的 toaddr 和 toport 参数不能同时省略

--add-forward-port 的语法看似灵活,但参数组合有隐含约束:如果指定了 toaddr,toport 就必须明确给出;反之,若只写 toport 不写 toaddr,则默认转发到本机。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 转发到本机其他端口(如 80 → 8080):firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
  • 转发到另一台内网机器(如 30306 → 192.168.1.100:3306):firewall-cmd --add-forward-port=port=30306:proto=tcp:toaddr=192.168.1.100:toport=3306 --permanent
  • 错误写法:toaddr=192.168.1.100 单独出现 —— 这会默认用源端口(30306),但目标服务未必监听该端口

--permanent 不等于立即生效,reload 是硬性步骤

所有带 --permanent 的操作只是写入 XML 配置文件(如 /etc/firewalld/zones/public.xml),不触发运行时加载。不执行 firewall-cmd --reload,规则就只是磁盘上的文本。

  • 先加规则:firewall-cmd --add-forward-port=... --permanent
  • 再放行源端口(很多人漏这步):firewall-cmd --add-port=30306/tcp --permanent
  • 最后重载:firewall-cmd --reload
  • 验证是否加载成功:firewall-cmd --zone=public --list-all | grep forward

UDP 转发和 TCP 转发要分开配置

firewalld 不支持单条命令同时处理 TCP/UDP。即使你只想转发一个端口的两种协议,也得调用两次 --add-forward-port,且 proto 值必须分别写 tcp 和 udp。

  • 例如开放并转发 DNS 端口:firewall-cmd --add-port=53/tcp --permanent 和 firewall-cmd --add-port=53/udp --permanent
  • 对应转发:--add-forward-port=port=53:proto=tcp:toaddr=10.0.0.2:toport=53 和 --add-forward-port=port=53:proto=udp:toaddr=10.0.0.2:toport=53
  • 遗漏 UDP 会导致 DNS 查询超时,而 TCP 查询可能成功 —— 这类问题排查起来特别隐蔽
实际配置中最容易被忽略的是:转发目标机器自身的防火墙是否放行了对应端口,以及 SELinux 是否拦截了转发后的连接。这两点不在 firewalld 控制范围内,但直接决定转发是否真正通路。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
centos
centos

PHP中文网为大家提供centos相关信息,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,是免费的、开源的、可以重新分发的开源操作系统,PHP中文网提供centos相关文章,以及安装教程。

2023.06.16

3389

10

常见的linux系统有哪些
常见的linux系统有哪些

linux系统有Ubuntu、Fedora、CentOS、Debian、openSUSE、Arch Linux、Gentoo、Slackware、Linux Mint、Kali Linux。更多关于linux系统的文章详情请阅读本专题下面的文章。php中文网欢迎大家前来学习。

2023.10.27

6621

23

CentOS安装部署教程精选
CentOS安装部署教程精选

CentOS安装部署专题提供 CentOS Stream 9/10 服务器安装与初始化配置教程,涵盖 ISO 镜像下载、系统分区、最小化安装、网络配置、SSH远程连接、防火墙、软件源、时区同步、用户权限和常见安装故障排查,适合新手搭建 Linux 服务器环境及运维人员快速部署 CentOS 系统。

2026.05.29

194

10

CentOS运维命令大全
CentOS运维命令大全

CentOS运维命令专题整理 CentOS 服务器日常管理常用命令,覆盖系统信息查看、用户与权限管理、服务启动停止、进程监控、端口查看、日志分析、磁盘空间清理、软件包安装、定时任务配置和故障排查方法,帮助运维人员高效完成 CentOS 系统维护工作。

2026.05.29

188

10

CentOS建站环境搭建实战教程
CentOS建站环境搭建实战教程

CentOS建站环境专题围绕服务器网站部署场景,系统讲解在 CentOS 上安装和配置 Nginx、Apache、PHP、MySQL、MariaDB、PHP-FPM、SSL证书、网站目录权限、虚拟主机、反向代理和 WordPress 等常见建站环境,适合个人站长和运维人员搭建稳定 Web 服务。

2026.05.29

223

10

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

2026.10.21

20

15

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

2026.10.21

0

16

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

2026.10.21

0

16

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

120

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CentOS 官方文档
CentOS 官方文档

共0课时 | 0人学习

Linux网络安全之防火墙技术汇总
Linux网络安全之防火墙技术汇总

共31课时 | 4.2万人学习