Docker 超时端口 53 - ISP 的错?

Docker 超时端口 53 - ISP 的错?

我正在运行带有 Docker 的 Synology NAS,过去几个月来多个容器运行良好。上周我更换了 ISP,并使用他们的路由器连接到互联网。从那时起,我的容器就无法发出任何出站请求。我首先以为是 Docker 本身的问题(原始问题在此处提出),但由于只有 1 个变量发生了变化,即我的 ISP,我怀疑问题就在那里。我尝试给他们打电话,但他们真的没有帮助。转发端口 53 确实在路由器内部被阻止,但这对出站流量来说应该无关紧要,不是吗?

以下是我的一些容器(均运行 Alpine Linux)的一些错误日志片段:

performing request: Get "https://acme.zerossl.com/v2/DV90": dial tcp: lookup acme.zerossl.com on 127.0.0.11:53: read udp 127.0.0.1:43815->127.0.0.11:53: i/o timeout
[✗] DNS resolution is not available
Get "https://raw.githubusercontent.com/SelfhostedPro/selfhosted_templates/portainer-2.0/Template/template.json": dial tcp: lookup raw.githubusercontent.com on 8.8.4.4:53: read udp 172.17.0.2:35990->8.8.4.4:53: i/o timeout
Error trying to get announcements from Github. Connection Error

我如何确认我的怀疑确实与路由器有关,以及我该如何解决这个问题?

答案1

这是 ISP 的错吗?

是的。您的路由器ISP正在阻止DNS queries外部网络,DNS resolvers例如8.8.8.88.8.4.4。即使完全禁用firewall,您也会超时。这些阻止要么在您的家用路由器固件中,要么在 ISP 的路由器中。一些 ISP 故意阻止这些请求,以迫使其客户使用他们的自己的 DNS resolvers

为了解决您的问题,您的 Docker 容器应该使用DNS server其网络的 (路由器的 IP 地址) 而不是8.8.8.88.8.4.4。您的路由器也是一个DNS resolver

小心Docker容器DNS管理:

容器默认使用与主机相同的 DNS 服务器,但您可以使用 --dns 覆盖它。

默认情况下,容器会继承 /etc/resolv.conf 配置文件中定义的 DNS 设置。连接到默认桥接网络的容器会收到此文件的副本。连接到自定义网络的容器会使用 Docker 的嵌入式 DNS 服务器。嵌入式 DNS 服务器会将外部 DNS 查询转发到主机上配置的 DNS 服务器。

参考这里

据我所知,您正在使用Alpine Linux(请编辑您的问题以添加此信息),请参阅更改网络配置的页面您的主机

相关内容