为什么选择静态IP时dhclient仍在运行?


15

我将dhcp修改为/ etc / network / interfaces中的static(如下所示)。

# The primary network interface
auto eth0
iface eth0 inet static
netmask 255.255.0.0
address 10.10.130.128
gateway 10.10.1.1

然后重新启动接口。

$ sudo ifdown eth0; sudo ifup eth0
...
$ ifconfig
eth0      Link encap:Ethernet 
          inet addr:10.10.130.128  Bcast:10.10.255.255  Mask:255.255.0.0

因此,新地址生效了。

但是DHCP仍然存在吗?

$ ps aux | grep dhc
root    ... dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth0

那是正常的吗?如果没有,如何在同时停止DHCP的同时重启静态IP接口?

非常感谢。


Answers:


22
  1. 您首先必须关闭接口(在dhcp模式下) sudo ifdown eth0
  2. 然后编辑配置 nano /etc/network/interfaces

    # The primary network interface
    auto eth0
    iface eth0 inet static
    netmask 255.255.0.0
    address 10.10.130.128
    gateway 10.10.1.1
    
  3. 备份界面 sudo ifup eth0

否则dhclient无法正确关闭,


1
抱歉,但是有人可以详细说明这与此处的OP有何不同吗?我读了三遍,似乎看不出区别。
fostandy 2014年

是否与修改(“触摸”)文件有关,以便更改日期?我应该只在关闭界面后才编辑文件吗?如果是这样,我怎么能“撤消”我以前编辑过的事实?
fostandy 2014年


1
@Bruno-感谢您的澄清。出于好奇,如果已经不可撤销地编辑了/etc/network/interfaces文件,该怎么办?有没有办法强制重置为默认值并重新开始?
fostandy 2014年

7
我困惑为什么它应该有所作为,但是我的一个聪明朋友很好地解释了它。问题是如果文件被编辑然后ifdown运行,网络管理器不知道它需要停止dhclient,因为它在interfaces文件中看到的只是一个静态条目。之后,接口关闭,发出ifup正确的消息并应用静态设置,但它也不知道dhclient已启动。
摩托艇

2

我遇到了同样的问题(Ubuntu 16.04)。但是,这是一个云实例,我无法轻松地将接口关闭。

简短答案:如果/etc/network/interfaces.d/50-cloud-init.cfg该特定文件触发了upup,我删除了该文件。

长答案:我使用/etc/network/interfaces带有静态IP地址的来配置接口,但是我仍然在daemon.log中发现dhclient仍在从DHCP请求IP,而dhclient是通过systemd启动的。具体来说,systemd调用了networking.service单元,它调用了ifup,它同时读取了interfaces文件和50-cloud-init.cfg文件。导致了一些冲突,但网络仍然可以正常运行。


我遇到了完全相同的问题,并且学到了很难的方法,后来的文件(例如99-eth0.cfg)确实没有覆盖先前的语句!因此,感谢您的输入;)
Daywalker

1

我发现对我而言,这是由于gnome的NetworkManager仍在运行,并认为它负责该设备。在事后看来,这应该很明显,如ps显示dhclient由NetworkManager启动。

重新启动系统后,设备在NetworkManager中变为“不受管”状态,并且停止尝试对其进行配置。我不确定,仅通过停止/重新启动NetworkManager就可以实现相同的目的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.