我的群晖防火墙策略如下:
目前问题是 Docker 内 Bash 无法 ping 通外部域名 qq.com (导致 Docker Calibre-Web 的豆瓣刮削器插件获取信息失败),关闭第三条规则后则能 ping 通并获取数据。
新增两条规则如下,仍无法 Ping 通,除非关闭第五条规则。
该如何设置才行呢?
1
Apol1oBelvedere OP 下面是数据包监听:
~# 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 |
2
yaott2020 2023-01-14 10:28:59 +08:00 via Android
能不能 ping ip ,还有,出站和入站没啥关系吧
|
3
Apol1oBelvedere OP @yaott2020 IP 也 ping 不通,我的群晖防火墙最后一条规则阻挡了大部分数据包,可能原因在这,但是我已经允许了 ICMP 协议了啊?
|
4
yaott2020 2023-01-14 11:12:47 +08:00 via Android
你的防火墙规则是入站还是出站
|
5
Apol1oBelvedere OP @yaott2020 群晖防火墙的设计和功能实现只管理入站,不管理出站。
|
6
mmtromsb456 2023-01-14 17:45:14 +08:00
看监听结果,容器内 dns 不是大陆的 dns,是直接用的 8.8.8.8,这在拒绝境外 IP 入站的防火墙规则下肯定拿不到解析结果吧
|
7
Apol1oBelvedere OP @mmtromsb456
把规则调整为 ICMP 放第一条(即所有 IP 允许 Ping )还是不行,除非取消最后一条规则才行,现在问题是前四条规则还是没能放过 Ping 数据包。 允许所有 ICMP 协议访问; 允许所有 IGMP 协议访问; 允许局域网 192.168.1.1~255 访问; 允许大陆 IP 访问一些服务(已勾选各个 Docker 容器名称); 拒绝其他一切协议和 IP 访问; |
8
mmtromsb456 2023-01-15 00:45:25 +08:00
@Apol1oBelvedere #7 不是 icmp 的问题啊,要 ping 域名之前得先找 ns 解析,现在去 8888 的 dns 报文被拦截了吧
|
9
Apol1oBelvedere OP @mmtromsb456 谢谢您,在您的帮助下问题解决了。
我之前也设置了允许 DNS 协议的 TCP 53 端口通过但无效,经过您的提示我再确认得知是 DNS 协议的 UDP 53 端口。添加到允许所有 IGMP 协议访问这条规则之后,就能 Ping 通了。 |