V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Apol1oBelvedere
V2EX  ›  NAS

群晖防火墙在此三条规则下如何允许 Docker 能 Ping 通并访问外部网络?

  •  
  •   Apol1oBelvedere · 2023-01-13 21:29:16 +08:00 · 1844 次点击
    这是一个创建于 440 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的群晖防火墙策略如下:

    1. 允许局域网 192.168.1.1~255 访问;
    2. 允许大陆 IP 访问一些服务(已勾选各个 Docker 容器名称);
    3. 拒绝其他一切协议和 IP 访问;

    目前问题是 Docker 内 Bash 无法 ping 通外部域名 qq.com (导致 Docker Calibre-Web 的豆瓣刮削器插件获取信息失败),关闭第三条规则后则能 ping 通并获取数据。

    新增两条规则如下,仍无法 Ping 通,除非关闭第五条规则。

    1. 允许局域网 192.168.1.1~255 访问;
    2. 允许大陆 IP 访问一些服务(已勾选各个 Docker 容器名称);
    3. 允许所有 ICMP 协议访问;
    4. 允许所有 IGMP 协议访问;
    5. 拒绝其他一切协议和 IP 访问;

    该如何设置才行呢?

    9 条回复    2023-01-15 10:41:59 +08:00
    Apol1oBelvedere
        1
    Apol1oBelvedere  
    OP
       2023-01-13 21:58:48 +08:00
    下面是数据包监听:
    ~# tcpdump -i docker919c320 -nn
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on docker919c320, link-type EN10MB (Ethernet), capture size 262144 bytes
    21:56:56.751834 IP 172.17.0.2 > 8.8.8.8: ICMP echo request, id 170, seq 0, length 64
    21:57:01.766006 ARP, Request who-has 172.17.0.1 tell 172.17.0.2, length 28
    21:57:01.766136 ARP, Reply 172.17.0.1 is-at 02:42:39:7d:18:f5, length 28
    yaott2020
        2
    yaott2020  
       2023-01-14 10:28:59 +08:00 via Android
    能不能 ping ip ,还有,出站和入站没啥关系吧
    Apol1oBelvedere
        3
    Apol1oBelvedere  
    OP
       2023-01-14 11:09:40 +08:00
    @yaott2020 IP 也 ping 不通,我的群晖防火墙最后一条规则阻挡了大部分数据包,可能原因在这,但是我已经允许了 ICMP 协议了啊?
    yaott2020
        4
    yaott2020  
       2023-01-14 11:12:47 +08:00 via Android
    你的防火墙规则是入站还是出站
    Apol1oBelvedere
        5
    Apol1oBelvedere  
    OP
       2023-01-14 12:42:54 +08:00
    @yaott2020 群晖防火墙的设计和功能实现只管理入站,不管理出站。
    mmtromsb456
        6
    mmtromsb456  
       2023-01-14 17:45:14 +08:00
    看监听结果,容器内 dns 不是大陆的 dns,是直接用的 8.8.8.8,这在拒绝境外 IP 入站的防火墙规则下肯定拿不到解析结果吧
    Apol1oBelvedere
        7
    Apol1oBelvedere  
    OP
       2023-01-14 19:16:35 +08:00
    @mmtromsb456
    把规则调整为 ICMP 放第一条(即所有 IP 允许 Ping )还是不行,除非取消最后一条规则才行,现在问题是前四条规则还是没能放过 Ping 数据包。
    允许所有 ICMP 协议访问;
    允许所有 IGMP 协议访问;
    允许局域网 192.168.1.1~255 访问;
    允许大陆 IP 访问一些服务(已勾选各个 Docker 容器名称);
    拒绝其他一切协议和 IP 访问;
    mmtromsb456
        8
    mmtromsb456  
       2023-01-15 00:45:25 +08:00
    @Apol1oBelvedere #7 不是 icmp 的问题啊,要 ping 域名之前得先找 ns 解析,现在去 8888 的 dns 报文被拦截了吧
    Apol1oBelvedere
        9
    Apol1oBelvedere  
    OP
       2023-01-15 10:41:59 +08:00
    @mmtromsb456 谢谢您,在您的帮助下问题解决了。
    我之前也设置了允许 DNS 协议的 TCP 53 端口通过但无效,经过您的提示我再确认得知是 DNS 协议的 UDP 53 端口。添加到允许所有 IGMP 协议访问这条规则之后,就能 Ping 通了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1187 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:09 · PVG 07:09 · LAX 16:09 · JFK 19:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.