运行 dhclient 时出现问题

运行 dhclient 时出现问题

运行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-clientisc-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

相关内容