使用firewall-cmd同端口白名单访问,黑名单转发至其他端口

中二管理员
发布于 2025-04-05 / 32 阅读
0
0

使用firewall-cmd同端口白名单访问,黑名单转发至其他端口

firewalld 中可以通过 富规则(rich rules)端口转发(forward-port) 实现相同功能。以下是详细步骤:


1. 添加白名单IP并允许访问指定端口

假设目标端口为 12345,白名单IP为 192.168.1.10010.0.0.5,使用富规则放行白名单IP的流量:

# 添加白名单规则(按需重复添加其他IP)

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="12345" protocol="tcp" accept'

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="12345" protocol="tcp" accept'

2. 配置端口转发(非白名单IP流量转到54321)

将非白名单IP的流量从 12345 转发到 54321

# 添加转发规则(NAT)

sudo firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toport=54321

# 启用防火墙的伪装(NAT必备)

sudo firewall-cmd --permanent --add-masquerade

3. 开放目标端口

确保需要访问的端口在防火墙中开放:

# 开放12345端口(白名单直接访问)

sudo firewall-cmd --permanent --add-port=12345/tcp

# 开放54321端口(转发后的目标端口)

sudo firewall-cmd --permanent --add-port=54321/tcp

---

4. 重新加载防火墙配置

sudo firewall-cmd --reload

5. 验证配置

查看当前生效的规则:

# 检查富规则

sudo firewall-cmd --list-rich-rules

# 检查转发规则

sudo firewall-cmd --list-forward-ports

# 检查开放的端口

sudo firewall-cmd --list-ports

---

最终效果

  • 白名单IP访问 12345:直接放行。

  • 其他IP访问 12345:流量自动转发到 54321


注意事项

1. 伪装(Masquerade):端口转发必须启用伪装(类似NAT),否则流量无法正确路由。

2. 规则优先级:富规则的优先级高于转发规则,白名单IP优先匹配放行。

3. 多IP处理:如果白名单IP较多,可以批量生成富规则,或在脚本中循环添加。

4. 临时规则:若未加 --permanent,规则重启后会失效;正式配置需保留此参数。

通过这种方式,即可用 firewall-cmd 实现基于白名单的端口访问控制和流量转发。


评论