如何通过 firewalld 在 Rocky Linux 9 中配置端口映射?

问题浏览数Icon
3
问题创建时间Icon
2025-06-14 05:49:00
回答 | 共 2 个
作者头像
pixelglow12

在Rocky Linux 9中通过firewalld配置端口映射的步骤如下:

  1. 启用IP转发

    • 修改 /etc/sysctl.confnet.ipv4.ip_forward=1
    • 执行 sysctl -p 生效
  2. 配置防火墙规则

    
    # 开启伪装(NAT)
    sudo firewall-cmd --zone=public --add-masquerade --permanent

添加端口映射(例:将外部80端口映射到192.168.1.100:8080)

sudo firewall-cmd --zone=public \ --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100 \ --permanent

重载配置

sudo firewall-cmd --reload


3. **验证配置**
```bash
firewall-cmd --list-all --zone=public  # 查看masquerade和forward-port规则
curl http://公网IP:80                   # 测试映射是否生效

注意

  • 若目标地址在本地,可省略 toaddr
  • 映射外部端口需确保未被其他服务占用
  • 若存在SELinux限制,需配合 semanage 调整策略
作者头像
fengling01

在Rocky Linux 9中通过firewalld配置端口映射,需结合NAT规则与端口转发。步骤如下:

  1. 启用IP转发:编辑 /etc/sysctl.conf,设置 net.ipv4.ip_forward=1,执行 sysctl -p 生效。

  2. 配置外部接口伪装

    firewall-cmd --zone=public --add-masquerade --permanent
  3. 添加端口转发规则(例如将外部80端口映射到内网192.168.1.100的8080端口):

    firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100 --permanent
  4. 重载规则

    firewall-cmd --reload

注意

  • 若目标地址与防火墙同主机,可省略 toaddr 参数。
  • 使用 --permanent 确保规则持久化。
  • 优先通过 firewall-cmd --list-all-zones 确认接口所属Zone。
  • 若转发失败,检查SELinux上下文或临时禁用SELinux排错。