更新

更新

我有一些刚刚安装好的 Ubuntu 22.04 服务器。其中一个已经在运行 22.04.1,今天刚安装。

他们都遇到了这样的问题:“启动作业正在运行,等待网络配置”在启动时挂起 2 分钟。

网络配置很简单,下面是其中一个服务器的配置/etc/netplan/00-installer-config.yaml

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      addresses:
      - 192.168.5.20/24
      gateway4: 192.168.5.2
      nameservers:
        addresses:
        - 1.1.1.1
        - 8.8.8.8
        search: []
  version: 2

的输出为systemctl show -p WantedBy network-online.target

WantedBy=cloud-final.service cloud-config.service open-iscsi.service iscsid.service

我无法通过 syslog 或 dmesg 识别哪个服务或哪个接口(只有一个)导致了该问题。

我该如何解决这个问题?这是 22.04 中的一个错误吗?

更新

我发现问题是由于我们在服务器上完全阻止了 IPv6,如下所示iptables

sudo ip6tables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  623 43589 ACCEPT     all      lo     any     anywhere             anywhere
    0     0 REJECT     all      any    any     anywhere             anywhere             reject-with icmp6-port-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  623 43589 ACCEPT     all      any    lo      anywhere             anywhere
   92  5504 REJECT     all      any    any     anywhere             anywhere             reject-with icmp6-port-unreachable

我在 Github 上发现了一个讨论此问题的问题:https://github.com/systemd/systemd/issues/2713 但好像没有真正的解决办法?

答案1

编辑systemd-networkd-wait-online.service

sudo vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service

[Service]块中:

[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes

[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes
TimeoutStartSec=2sec

然后重启,即可得到验证。

答案2

您的问题是systemd-networkd-wait-online.service超时。 可以通过在主机上运行以下命令来重现此问题:

sudo /usr/lib/systemd/systemd-networkd-wait-online

它永远不会结束。


您还可以看到networkctl接口配置不正确:

$ networkctl
IDX LINK  TYPE     OPERATIONAL SETUP
  1 lo    loopback carrier     unmanaged
  2 ens33 ether    routable    unconfigured       <--- should be "configured" 

由于这似乎与防火墙有关,很可能是因为接口无法发送任何 IPv6 autoconf 消息,因此从未被视为正确配置。


您可以通过 (1) 删除 netplan 配置中的任何链接本地地址来解决这个问题,如下所示:

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      addresses:
      - 192.168.5.20/24
      gateway4: 192.168.5.2
      nameservers:
        addresses:
        - 1.1.1.1
        - 8.8.8.8
        search: []
      link-local: []     <- IPv6 usually has a default link-local address, we override this
  version: 2

(2)在防火墙中启用 autoconf 数据包以离开主机,或者

(3)禁用接口的 autoconfhttps://superuser.com/questions/33196/how-to-disable-autoconfiguration-on-ipv6-in-linux

答案3

看来我可以通过禁用以下服务轻松解决这个问题:

sudo systemctl disable cloud-init.service cloud-final.service

当我配置了静态 IP 时,我不需要它们。我假设 DHCP 也不需要cloud-init,我会测试一下。

更新

这实际上不起作用。我在初始测试中犯了一个错误。即禁用服务没有帮助,2 分钟的挂起仍然发生。

此外,我混淆了cloud-initcloud-config。我还尝试禁用cloud-config,但这也无济于事。但它导致启动时出现其他错误。

我尝试通过sysctl.conf如下方式完全禁用 IPv6:https://itsfoss.com/disable-ipv6-ubuntu-linux/ 但这也没有帮助。

所以我很迷茫,希望论坛里有人能提供建议?

相关内容