根本原因

根本原因

今天,我的互联网调制解调器和路由器被换成了新设备。我家里的其他一切都正常,除了我的 Ubuntu Linux 20.04 LTS 服务器。我可以远程访问它,它可以看到我的本地网络,但无法访问路由器以外的互联网上的任何内容。

这是错误。执行时,docker-compose pull每次尝试提取图像时都会出现此错误

Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Get https://lscr.io/v2/: dial tcp 35.155.221.103:443: connect: no route to host

我以前怀疑是 DNS,但评论中的 @steeldriver 指出服务器实际上似乎能够解析主机名。现在我怀疑这可能是与网关相关的网络配置。

值得注意的是,新路由器有一个新的网关地址。它以前是 192.168.1.1,但现在是 192.168.1.254。我尝试弄乱 cloud-init 配置文件。出于某种原因,cloud-init 中的 gateway4 条目是 192.168.1.0,即使这不是网关地址。我将其更改为 192.168.1.254 并重新启动机器。但是,现在我甚至无法再远程访问机器。我现在认为这可能是网络配置。有没有办法对 cloud-init 进行完全出厂重置?

以下是 cloud init yaml 文件。我必须从屏幕截图中输入此内容,因此请原谅任何格式错误,但内容是准确的。

network:
  ethernets:
    eno1:
      addresses:
        - 192.168.1.130/24
      dhcp4: false
      gateway4: 192.168.1.0
      nameservers:
        addresses:
        - 8.8.8.8
        - 8.8.4.4
        search: []
  version: 2

我尝试将网关 4 更改为 192.168.1.254 并重新启动机器,但重新启动后我无法再远程访问机器。请指教

答案1

我已经解决了这个问题!

根本原因

我从 ISP 那里得到了一个新路由器,它带有不同的网关默认 IP。之前的路由器的网关 IP 是 192.168.1.1,而新路由器的网关 IP 是 192.168.1.254。服务器的网络配置将网关指定为 192.168.1.1,但该网关已不存在。因此,流量无法通过新路由器流出。我家里的其他设备运行正常,因为它们使用动态 DHCP 分配,而服务器没有。

只有当根本原因相同时,以下解决方案才对您有用!

解决方案

找到您的网络配置并将网关地址更改为您的新网关地址。对我来说,它是在/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg。对于其他人,它可能在/etc/netplan/50-cloud-init.yaml。问题中上面发布的配置是一种很好的格式,它只需要正确的值。确保接口、地址和网关都正确。如果这不起作用,也请尝试运行ip route add default via 192.168.1.254 dev eno0。将 IP 替换为您的网关 IP,并将最后一个值替换为您的互联网接口。

一路上的问题

一路上我遇到了一些干扰因素,退了一步又回到原点,最终解决了问题。

一开始我以为是 DNS 的问题,所以我对 DNS 做了不少调整。直到一位评论者指出,我的服务器似乎曾是解析主机名!所以我开始摆弄云配置文件。我对云配置进行了更改,只更改了网关,然后重新启动了机器。我不记得具体运行了哪些命令,所以我无法确切地警告某些事情。但是,我知道重新启动后,我无法再远程访问该盒子。使用本地终端,我能够发现云配置文件中的设备名称是enp1s0正确ip address的接口eno1,因此云配置更改中断了机器的所有进出流量。纠正这个问题让我回到原点,远程访问盒子。这意味着我能够继续从我舒适的工作站进行故障排除,并且机器至少能够再次连接到本地网络。

然后,我专注于网络问题。运行ip route显示没有默认路由。默认路由看起来像default via 192.168.1.254 dev eno1。我尝试使用云配置重新启动几次,但没有任何效果。为了确保是云配置未能设置默认路由,我看到了这个问题 https://serverfault.com/questions/877880/how-can-i-add-a-default-gateway-with-the-ip-command-not-the-route-command 并运行ip route add default via 192.168.1.254 dev eno0。此方法有效,并且重启后依然有效。

相关内容