firewalld实现NAT端口转发

1、准备工作

# 开启 NAT 转发

firewall-cmd --permanent --zone=public --add-masquerade

# 开放 DNS 使用的 80 端口,tcp# 必须,否则其它机器无法进行域名解析

firewall-cmd --zone=public --add-port=80/tcp --permanent

# 检查是否允许 NAT 转发

firewall-cmd --query-masquerade# 禁止防火墙 NAT 转发

firewall-cmd --remove-masquerade

2、 NAT 端口转发

端口转发可以将++++指定地址访问指定的端口++++** 时,将流量转发至**++++指定地址的指定端口++++。转发的目标如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。

2.1 将80端口的流量转发至8080

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

2.2 将80端口的流量转发至192.168.0.1

firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1 --permanent

2.3 将80端口的流量转发至192.168.0.1的8080端口

firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent

注意:nat端口转发完以后,一定要用"firewall-cmd --reload"重新加载配置才会真正的生效。

"--permanent"代表永久的意思,重启后同样会生效。

如果配置完以上规则后仍不生效,检查防火墙是否开启80端口,如果80端口已开启,仍无法转发,可能是由于内核参数文件sysctl.conf未配置ip转发功能,具体配置如下:

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

保存文件后,输入命令:"sysctl -p" 生效!

3、关闭NAT端口转发

#查看状态:

firewall-cmd --state

#删除开放的80端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent

#删除nat端口转发(本机80转到192.168.0.1:8080)

firewall-cmd --remove-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent

#列出所有的规则

firewall-cmd --list-all

相关推荐
云计算-Security3 分钟前
分组交换的可靠性来自哪里?
网络·智能路由器
裤兜里有钱8 分钟前
关于Xshell连接虚拟机Linux失败的主要原因
linux·运维·服务器
ward RINL16 分钟前
# GPT-5.6-sol vs GPT-5.5 新题实测:非弹性碰撞物理题和稳定路由算法
网络·gpt·算法
CoderYanger29 分钟前
视频切割脚本(Python版)
linux·开发语言·windows·后端·python·程序人生·职场和发展
辞旧 lekkk30 分钟前
CMake工程指南(一)
linux·运维·服务器·开发语言·qt·学习·萌新
wang_shu_mo_ran40 分钟前
网络编程(二):UDP数据报在客户端与服务端之间的传输
网络·网络协议·udp
humors22144 分钟前
【转帖】关于防范AI编程工具Claude Code安全后门隐患的风险提示
网络·安全·ai编程
jieyucx1 小时前
Windows11 & Linux 环境Docker部署与镜像拉取效率优化实战指南
linux·运维·docker
深度智能科技1 小时前
IPv6无网络访问权限怎么解决?【图文讲解】Win10/Win11 IPv6无网络访问权限完整修复实操教程
网络·ipv6·深度c盘清理·ipv6协议开启自动获取ip·ipv6无网络访问权限·上不了网怎么办·防火墙拦截ipv6
weixin_307779131 小时前
Linux下ClickHouse数据仓库故障系统化诊断脚本
linux·运维·clickhouse·自动化·数据库开发