V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
amrom
V2EX  ›  Linux

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

  •  
  •   amrom · 2020-07-06 09:56:46 +08:00 · 3483 次点击
    这是一个创建于 1603 天前的主题,其中的信息可能已经有所发展或是发生改变。

    [背景]

    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 ~]# 
    
    
    9 条回复    2020-07-06 19:09:38 +08:00
    xyjincan
        1
    xyjincan  
       2020-07-06 10:05:45 +08:00
    好像是 docker 自动添加防火墙策略了
    LokiSharp
        2
    LokiSharp  
       2020-07-06 10:06:47 +08:00 via iPhone
    docker 是绕过防火墙的
    Yut
        3
    Yut  
       2020-07-06 10:09:44 +08:00
    看看 docker 的 mapping?
    wooyuntest
        4
    wooyuntest  
       2020-07-06 10:10:42 +08:00
    docker 直接更新了 iptables firewalld 的本质也是在 iptables 上面封装了一层,所以 firewall-cmd list 是看不到 docker 占用的端口的
    amrom
        5
    amrom  
    OP
       2020-07-06 10:19:02 +08:00
    @wooyuntest 我百度到也是这样说的,这个怎么处理,重启 docker 也不行吗?
    zpf124
        6
    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
        7
    qwerthhusn  
       2020-07-06 10:36:58 +08:00
    dockers 容器启动的时候会自己向 iptables 添加规则
    但是之前经常会出现添加 iptables 失败的情况,导致容器起不来
    haozxuan001
        8
    haozxuan001  
       2020-07-06 16:18:14 +08:00
    简单来说,是因为 docker 隔离网络资源造成的;
    处理方式:
    1 、先确定 docker 启动的 container 的启动模式(有无指定 network 参数),默认 bridge 时是会进行网络隔离的,这时候要想防火墙规则生效,只能在 forward 链中操作(优雅的方式是自己建立一个 DOCKER-USER 链,如果你的 docker 版本够高默认是有的,将规则写在此链中,并应用在 FORWARD 链即可)
    2 、如果是 host 模式(宿主机模式)即不进行网络隔离,直接使用宿主机网络的,添加规则和虚机无异
    tomychen
        9
    tomychen  
       2020-07-06 19:09:38 +08:00
    nat 的问题把 nat 也取消了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4142 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:17 · PVG 18:17 · LAX 02:17 · JFK 05:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.