dhclient 在启动时不工作

dhclient 在启动时不工作

问题如下:

root@home:~# ping 8.8.8.8
connect: Network is unreachable

root@home:~# dhclient eth0
RTNETLINK answers: File exists

root@home:~# ping 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=51 time=16.8 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=51 time=16.6 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 16.654/16.737/16.820/0.083 ms
root@home:~#

只有在我手动调用 dhclient 后,网络才能正常工作。我没有 NetworkManager(已将其删除)。以下是来自的相关行/etc/network/interfaces

auto eth0
iface eth0 inet dhcp

以下是启动日志:

root@home:~# cat /var/log/syslog | grep dhclient
May 28 21:39:44 home kernel: [    7.237076] type=1400 audit(1369762781.497:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=405 comm="apparmor_parser"
May 28 21:39:44 home kernel: [    7.238298] type=1400 audit(1369762781.497:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=405 comm="apparmor_parser"
May 28 21:39:45 home dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 (xid=0x79607e29)
May 28 21:39:45 home dhclient: DHCPREQUEST of 192.168.0.103 on eth0 to 255.255.255.255 port 67 (xid=0x79607e29)
May 28 21:39:45 home dhclient: DHCPOFFER of 192.168.0.103 from 192.168.0.1
May 28 21:39:45 home dhclient: DHCPACK of 192.168.0.103 from 192.168.0.1
May 28 21:39:45 home dhclient: bound to 192.168.0.103 -- renewal in 234779 seconds.
May 28 21:39:45 home kernel: [   11.695666] type=1400 audit(1369762785.953:10): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=1154 comm="apparmor_parser"
May 28 21:40:11 home dhclient: DHCPREQUEST of 192.168.0.103 on eth0 to 255.255.255.255 port 67 (xid=0x2aa61c47)
May 28 21:40:11 home dhclient: DHCPACK of 192.168.0.103 from 192.168.0.1
May 28 21:40:11 home dhclient: bound to 192.168.0.103 -- renewal in 243414 seconds.

有什么想法可能导致此类问题吗?

更新:我发现默认网关在启动时没有添加,但在我重新启动服务或手动运行 dhclient 时会添加networking。但我还没有找到导致这种行为的原因。

答案1

就我而言,在 CentOS 6/Fedora 下,这与 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/udev/rules.d/70-persistent-net.rules 之间的不一致有关。

在这两个文件中,都声明了与 eth0 接口关联的 MAC。在虚拟机克隆中,分配了新的 MAC,但未在此处反映(管理员应该这样做)。

启动时,您可以在 dmesg 中看到真正的 eth0 被重命名为 eth1(与 ifcfg-eth0 冲突),然后在 70-persistent-net.rules 下自动创建一个新条目,将找到的 MAC 与 eth1 关联。

dhclient 未启动(或者如果启动了,则中止) - 结果是系统未从 DHCP 服务器获取 IP。

值得注意的是,运行 dhclient 手动强制获取假 eth1 的 IP,之后网络正常工作......直到下次重启。

手动编辑上面引用的文件以使 MAC 和 eth* 名称一致已解决问题 - 现在 dhclient 在启动时启动并自行获取 IP。

答案2

编辑:

一般来说,你应该通过以下方式从 DHCP 服务器获取默认网关选件 003。最好的方法是配置您的 DHCP 服务器以正确地向客户端提供此信息。如果您出于某种原因无法做到这一点,我相信您可以/etc/network/interfaces使用gateway指令在文件中手动指定它(请参阅手册页)。我从来没有这样做过,但我相信它应该适用于非静态配置的接口。

如果没有,您可以使用初始化脚本手动添加它。

看起来您使用 dhclient 正确地接收了 DHCP 租约。我怀疑 NetworkManager 未完全删除,或者您有另一个正在启动的网络自动配置实用程序(可能与您的桌面环境绑定)并尝试重新配置您的网络设置。

/etc/network/interfaces首先通过运行网络初始化脚本来确认您的配置是否正确:

sudo /etc/init.d/networking restart

或者直接使用ifupand ifdown

sudo ifdown eth0 && ifup eth0


然后确保你没有任何残留的网络管理器

sudo apt-get purge network-manager

相关内容