网络管理器没有默认路由

网络管理器没有默认路由

这个问题大约在三周前开始出现,显然是在更新之后。

当我连接到新的 wifi 网络时,我只能达到本地连接;我的笔记本电脑成功连接并接收 IP 地址(通过 syslog 验证)但ping 8.8.8.8返回connect: Network is unreachable

路由表总是看起来像这样:

Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp2s0
192.168.2.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0

具体来说,没有指定默认路由。我认为这是问题所在。如果我运行命令

sudo route add default gw 192.168.2.1 wlp2s0

然后一切正常;我可以 ping google.com,但是网络管理器仍然认为我只有本地连接。

如果我改用静态 IP 并指定 8.8.8.8 作为名称服务器,则一切正常。如果我使用静态 IP 并且不指定 8.8.8.8 作为名称服务器,我可以 ping 8.8.8.8,但不能 ping google.com。

如何让网络管理器正确自动分配默认路由?

答案1

问题很可能与无线设备 NM 配置中未设置的路由配置有关。尝试手动编辑连接文件,您可以在此处找到它,vim /etc/NetworkManager/system-connections/YOUR_WIFI_NAME

在 ipv4 部分下添加(这应该是默认的): never-default=false

您还必须编辑 /etc/NetworkManager/NetworkManager.conf

[ifupdown]
managed=true

此外,如果您managed=true首先发现了这一点,那么这可能是无法自动添加路由的问题,请尝试将其更改为 false,并且不要执行前面的 ipv4 步骤,然后:

service network-manager restart

或者如果你使用的是 Debian 11+:

service NetworkManager restart

答案2

我又遇到了这个问题。在日志文件中,我总是能看到网络管理器只进入了 状态CONNECTED_LOCAL。我尝试摆弄never-defaultmanaged设置,但没有任何效果。在发现 缺少什么之后,我解决了这个问题nmcli

$ nmcli connection edit eth0
...
nmcli> print
...
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.addresses:                         192.168.223.9/24
ipv4.gateway:                           --
...

显然网关缺失了。我像这样添加了它:

nmcli> set ipv4.gateway 192.168.223.2
nmcli> save
Connection 'eth0' (...) successfully updated.

现在 NetworkManager 说它已进入CONNECTED_GLOBAL日志文件中的状态。

答案3

在我的 Jolla 智能手机上使用 postmarketOS 通过网络管理器连接到 WiFi 网络时遇到了问题,但我找到了一个可以帮助其他 Linux 发行版用户的解决方案。

我必须安装 dhclient 并在 中替换dhcp=internaldhcp=dhclient以下内容。然后我必须使用以下命令重新启动网络管理器(基于以下解决方案[main]/etc/NetworkManager/NetworkManager.confsudo service networkmanager restarthttps://bbs.archlinux.org/viewtopic.php?id=232833/https://forum.salixos.org/viewtopic.php?f=30&t=7284)。

然后,网络管理器连接到 WiFi 网络,但我无法 ping 1.1.1.1 之类的 IP 地址,因为没有默认路由。为了解决这个问题,我必须执行以下命令:sudo dhclient wlan0

答案4

您的路由表或中应该有默认路由(0.0.0.0)信息netstat -rn

ip r 输出

netstat -rn 输出

相关内容