我已启用firewalld并配置如下:
loopback (active)
target: DROP
icmp-block-inversion: no
interfaces: lo
sources:
services:
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="127.0.0.0/8" port port="8080" protocol="tcp" drop
rule family="ipv4" destination address="127.0.0.1" port port="8080" protocol="tcp" drop
然而,运行curl -I localhost:8080
返回HTTP/1.1 200 OK
而不是阻塞。
当使用以下规则禁用firewalld并启用iptables时:
iptables -I OUTPUT -o lo -p tcp --dport 8080 -j DROP
请求被阻止!
为什么 Firewalld 没有按预期工作?配置是运行时永久的并重新加载。
答案1
这应该有效。这就是 RH 中解释的所有内容文章。不是每个人都有 RH 帐户,但我找不到另一篇文章。
我更改了文章中的原始命令(以修复错误--dports
并满足 OP 需求)。
sudo firewall-cmd --direct --add-passthrough ipv4 -I OUTPUT -d 127.0.0.0/8 -p tcp --dport 8080 -j REJECT
RH 文章没有提及 ipv6,但当然,在您的情况下,您lo
还需要阻止通过 ipv6 访问您的可能性:
sudo firewall-cmd --direct --add-passthrough ipv6 -I OUTPUT -d ::1/128 -p tcp --dport 8080 -j REJECT