在 firewalld 中为指定 IP 添加白名单

在 firewalld 中为特定 IP 地址添加白名单(允许该 IP 访问所有或特定服务/端口),可以使用以下几种方法:

方法1:为特定 IP 开放所有访问(不推荐生产环境)

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP地址" accept'
sudo firewall-cmd --reload

例如允许 192.168.1.100:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
sudo firewall-cmd --reload

方法2:为特定 IP 开放特定端口

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP地址" port port="端口号" protocol="tcp/udp" accept'
sudo firewall-cmd --reload

例如允许 192.168.1.100 访问 TCP 端口 22 (SSH):

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

方法3:为特定 IP 开放特定服务

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP地址" service name="服务名" accept'
sudo firewall-cmd --reload

例如允许 192.168.1.100 访问 HTTP 服务:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="http" accept'
sudo firewall-cmd --reload

方法4:为 IP 段添加白名单

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP段/掩码" accept'
sudo firewall-cmd --reload

例如允许 192.168.1.0/24 整个子网:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
sudo firewall-cmd --reload

查看现有的富规则

sudo firewall-cmd --list-rich-rules

删除白名单规则

sudo firewall-cmd --permanent --remove-rich-rule='完整规则内容'
sudo firewall-cmd --reload

例如删除之前添加的 SSH 规则:

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept'
sudo firewall-cmd --reload

注意事项

  1. family="ipv4" 也可以改为 family="ipv6" 用于 IPv6 地址
  2. 永久规则必须使用 --permanent 参数并执行 --reload
  3. 规则添加后可以使用 --list-rich-rules 验证
  4. 生产环境中建议尽可能限制访问范围(特定服务/端口而非全部)
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐