Linux 防火墙关闭了,为什么还是可以访问

2020-07-06 09:56:46 +08:00
 amrom

[背景]

centos8 主机一个,firewalld 正常运行,使用 firewall-cmd list 查看,端口 32768 并不在列表内,使用 docker 起的一个应用占用了 32768 端口.

[疑问]

按照一般情况,32768 端口不在 firewall-cmd list 的列表内,所以应该是端口关闭了,但是现象是通过浏览器访问这个端口的服务仍然正常

[解决过程]

重启了 firewalld 重启了 docker 无法解决

各位有没有遇到这种情况,怎么解决

附录:

root@vultrguest ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-07-06 01:35:35 UTC; 17min ago
     Docs: man:firewalld(1)
 Main PID: 34371 (firewalld)
    Tasks: 2 (limit: 5048)
   Memory: 26.5M
   CGroup: /system.slice/firewalld.service
           └─34371 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

Jul 06 01:41:39 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t nat -D OUTPUT' failed: iptables: Bad rule (does a matching rule exist in that chain?).
Jul 06 01:41:39 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER' failed: iptables v1.8.4 (nf_tables):  CHAIN_USER_DEL failed (Device or r>
Jul 06 01:41:39 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION-STAGE-1' failed: iptables v1.8.4 (nf_tables):  CHAIN_USER_DEL f>
Jul 06 01:41:39 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -F DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.
Jul 06 01:41:40 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -X DOCKER-ISOLATION' failed: iptables: No chain/target/match by that name.
Jul 06 01:41:40 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker_gwbridge -o docker_gwbridge -j ACCEPT' failed: iptables: Bad rule (does >
Jul 06 01:41:40 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i br-3f83ec033cb1 -o br-3f83ec033cb1 -j DROP' failed: iptables: Bad rule (does a >
Jul 06 01:41:40 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule ex>
Jul 06 01:41:41 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule ex>
Jul 06 01:41:43 vultrguest firewalld[34371]: WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -t filter -nL DOCKER-INGRESS' failed: iptables: No chain/target/match by that name.
lines 1-20/20 (END)
[root@vultrguest ~]# firewall-cmd --list-ports

[root@vultrguest ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@vultrguest ~]# 

3324 次点击
所在节点    Linux
9 条回复
xyjincan
2020-07-06 10:05:45 +08:00
好像是 docker 自动添加防火墙策略了
LokiSharp
2020-07-06 10:06:47 +08:00
docker 是绕过防火墙的
Yut
2020-07-06 10:09:44 +08:00
看看 docker 的 mapping?
wooyuntest
2020-07-06 10:10:42 +08:00
docker 直接更新了 iptables firewalld 的本质也是在 iptables 上面封装了一层,所以 firewall-cmd list 是看不到 docker 占用的端口的
amrom
2020-07-06 10:19:02 +08:00
@wooyuntest 我百度到也是这样说的,这个怎么处理,重启 docker 也不行吗?
zpf124
2020-07-06 10:31:26 +08:00
@linjinbao66 不想给外部访问访问端口的权限就在开放端口的时候指定监听的 ip,比如

-p 127.0.0.1:37461:80
-p 192.168.0.100:8080:80
qwerthhusn
2020-07-06 10:36:58 +08:00
dockers 容器启动的时候会自己向 iptables 添加规则
但是之前经常会出现添加 iptables 失败的情况,导致容器起不来
haozxuan001
2020-07-06 16:18:14 +08:00
简单来说,是因为 docker 隔离网络资源造成的;
处理方式:
1 、先确定 docker 启动的 container 的启动模式(有无指定 network 参数),默认 bridge 时是会进行网络隔离的,这时候要想防火墙规则生效,只能在 forward 链中操作(优雅的方式是自己建立一个 DOCKER-USER 链,如果你的 docker 版本够高默认是有的,将规则写在此链中,并应用在 FORWARD 链即可)
2 、如果是 host 模式(宿主机模式)即不进行网络隔离,直接使用宿主机网络的,添加规则和虚机无异
tomychen
2020-07-06 19:09:38 +08:00
nat 的问题把 nat 也取消了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/687461

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX