这个问题大约在三周前开始出现,显然是在更新之后。
当我连接到新的 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-default
和managed
设置,但没有任何效果。在发现 缺少什么之后,我解决了这个问题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=internal
为dhcp=dhclient
以下内容。然后我必须使用以下命令重新启动网络管理器(基于以下解决方案[main]
/etc/NetworkManager/NetworkManager.conf
sudo service networkmanager restart
https://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
。