运行apt-get upgrade
并重新启动 Ubuntu Server 安装后,我注意到计算机没有网络连接。
我检查了ifconfig
~$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:7376 errors:0 dropped:0 overruns:0 frame:0
TX packets:7376 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1424 (1.4 KB) TX bytes:1424 (1.4 KB)
缺少接口“em1”:/
因此我尝试ifconfig em1 up
启动接口然后dhclient em1
获取 IP 地址,但遇到了这个错误:
~$ dhclient em1
dhclient: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Permission denied
~$ dhclient
dhclient: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Permission denied
有人知道哪里出了问题吗?很多人似乎都遇到了 SELinux 阻止 dhclient 的问题,但即使setenforce 0
我也遇到了这个问题。
我之前曾使用 dhclient 手动启动这台计算机上的接口,所以我不确定发生了什么突然变化(以及发生了什么变化导致接口在启动时停止自动设置)。
编辑:网络适配器正常,手动设置 ip/route/nameservers 时一切正常
重新安装isc-dhcp-client
也isc-dhcp-common
没有用,重新安装也没有用libc6
编辑2:我尝试了 gertvdijk 的建议。我的/etc/network/interfaces
是:
auto lo
iface lo inet loopback
allow-hotplug em1
iface em1 inet dhcp
我试过了sudo ifup em1
,但还是出现同样的错误:(
~$ sudo ifup em1
dhclient: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Permission denied
Failed to bring up em1.
答案1
事实证明问题与 AppArmour 有关;apparmor_status
显示sbin.dhclient
已加载配置文件,因此运行:
~$ sudo ln -s /etc/apparmor.d/sbin.dhclient /etc/apparmor.d/disable/
~$ sudo /etc/init.d/apparmor reload
问题解决了。然后我就可以按照 gertvdijk 的建议打开界面了
(不知道为什么/何时出现该配置文件 - 我怀疑它可能与我之前运行的升级有关)
答案2
我已使用 dhclient 手动在这台计算机上启动一个接口
不建议从命令行发出 DHCP 请求,因为系统不再管理该请求。相反,请通过 configure/etc/network/interfaces
来配置您的接口:
auto eth0
iface eth0 inet dhcp
然后重新加载配置:
sudo ifup eth0
eth0
当然,用您系统上的接口名称替换。
有关详细信息,请参阅接口手册页。
检查
ifconfig -a
对于未启动但系统上可用的接口。
[...] Permission denied
您之所以得到这个信息,是因为您没有dhclient
以 root/sudo 身份运行。只需在命令前面加上 即可sudo
。