CentOS 7 多IP环境下的 Firewalld 防火墙配置指南

admin
本文针对CentOS 7多IP环境,详细介绍了Firewalld防火墙的配置方法,通过区域划分、IP绑定及端口管理,实现多网段的精细化流量控制,有效提升服务器网络的安全性与隔离性。

在CentOS 7系统中,默认使用的防火墙管理工具是 firewalld,相比于传统的 iptablesfirewalld 动态防火墙守护进程提供了更好的网络区域管理,能够更灵活地处理多IP或多网卡场景。

当服务器拥有多个IP地址(例如用于负载均衡、多服务部署或内外网隔离)时,正确配置防火墙至关重要,以防止误封或未授权访问,本文将详细介绍在CentOS 7多IP情况下,如何使用 firewalld 进行精细化配置。

基础概念:区域与接口

firewalld 的核心概念是“区域”,默认情况下,firewalld 会将网络接口分配到不同的区域中(如 publicinternal)。

CentOS 7 多IP环境下的 Firewalld 防火墙配置指南

  • 多网卡场景:通常将不同的网卡(如 eth0eth1)分别指定到不同的区域,该区域内的所有IP都会继承该区域的防火墙策略。
  • 单网卡多IP场景:需要在配置规则时,通过源地址(source address)来指定特定的IP进行放行或限制。

场景一:多网卡多IP配置(按接口隔离)

如果你的服务器有两块网卡,分别对应内网和外网,这是最简单的配置方式,你只需将网卡绑定到对应的区域即可。

假设环境:

  • eth0 (IP: 192.168.1.100) -> 对外服务
  • eth1 (IP: 10.0.0.100) -> 内部服务

配置步骤:

  1. 将网卡绑定到区域:eth0 加入 public 区域(允许外网访问):

    firewall-cmd --zone=public --add-interface=eth0 --permanent
  2. 添加放行规则(以HTTP服务为例): 仅允许外部IP访问 eth0 上的 80 端口:

    firewall-cmd --zone=public --add-service=http --permanent
  3. 将网卡绑定到区域:eth1 加入 internal 区域(仅限内网访问):

    firewall-cmd --zone=internal --add-interface=eth1 --permanent
  4. 重新加载防火墙:

    firewall-cmd --reload

这样配置后,eth0 上的所有IP都会受到 public 区域规则的约束,eth1 上的所有IP则会受到 internal 区域规则的约束。

场景二:单网卡绑定多个IP(按IP精细化控制)

如果只有一个网卡 eth0,但上面绑定了多个IP(168.1.100168.1.101),且你需要将不同的服务分别开放给不同的IP,就需要使用 firewalld 的“富规则”。

假设环境:

  • eth0 上有两个IP:168.1.100 (运行Web服务) 和 168.1.101 (运行SSH服务)。
  • 现在默认区域是 public

配置步骤:

  1. 开放默认端口(如SSH的22端口): 假设我们要允许所有人访问 168.1.101 的SSH,但限制 168.1.100 不能直接访问SSH。

    注意:firewalld 没有直接“拒绝特定IP访问特定端口”的简单开关,通常做法是先开放所有,再用富规则排除。

  2. 使用富规则(Rich Rule)指定特定IP: 命令语法为 --add-rich-rule

    示例 A:允许特定IP访问特定端口 允许 168.1.101 访问本机的 22 端口:

    firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码