昨天在一台新的计算机上安装Arch时发现没有办法联网。这台电脑是以有线方式连接的,网络有MAC地址控制。安装之前确定了Windows和Ubuntu的LiveCD都能正常联网。
Arch的LiveCD里是通过dhcpcd来进行自动IP获取的,它是base里的软件,所以也会在安装完后的系统里。发现无法联网后,我查看了dhcpcd的启动状态
systemctl status dhcpcd@[interface].service
发现它在soliciting a DHCP lease这里就显示timeout了。经过搜索后了解到dhcpcd是默认通过DHCP Unique Identifier (DUID)来进行标识的,而我所在的网络是带MAC控制的,很可能不认DUID。这个问题在Arch的wiki中也进行了说明,需要更改dhcpcd的配置文件/etc/dhcpcd.conf,将duid改为clientid,然后重启服务
systemctl restart dhcpcd@[interface].service
然而安装完毕后,dhcpcd经过上述修改后是可以的,但是Network Manager依然不工作。到最后发现是Network Manager已经不支持dhcpcd了,而dhclient默认没有安装 (why!?)。所以只需要安装上dhclient,
sudo pacman -S dhclient
然后重启Network Manager
sudo systemctl restart NetworkManager
[UPDATE]
今天Arch更新后又连不上网了…查了后发现竟然默认使用NetworkManager内置的dhcp了,但这个内置的显然不行。只好更改 /etc/NetworkManager/NetworkManager.conf 这个配置文件,增加
[main]
dhcp = dhclient
的选项,然后再重启服务
sudo systemctl restart NetworkManager
我想说你内置的功能不强就不要默认么,没有金刚钻揽什么瓷器活啊!