这是对以下问题。我尝试通过/etc/network/interfaces
以下方式设置静态 IP:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.2.133
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 8.8.8.8
然后运行。但是,如果不在运行之前编辑并注释掉以下内容,/sbin/ifdown eth0; /sbin/ifup eth0
IP 地址的更改似乎不会生效:/etc/dhcp/dhclient.conf
ifdown; ifup
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers,
dhcp6.fqdn, dhcp6.sntp-servers;
奇怪的是,注释掉这一行之后,运行ifdown; ifup
正常,但是当我取消注释它时,行为并没有恢复到以前忽略我的设置的更改的行为/etc/network/interfaces
(这似乎不是一个问题,但我真的需要能够重复这个问题,这样我才能确信我的解决方案是健全的)另外,我宁愿不必编辑/etc/dhcp/dhclient.conf
来更改我的静态 IP,因为似乎我应该能够通过只编辑来做到这一点interfaces
。
有人能解释一下我上面看到的问题,并建议使静态 IP 地址更改生效的最佳方法,这种方法具有可重复性,以便我可以确保我的方法有效吗?
答案1
您需要确保它dhclient
不再运行,并在eth0
它重新启动时发出 IP。
检查dhclient
:
ps aux | grep dhclient
如果正在运行,则终止它,然后执行ifdown; ifup
。
答案2
如果您的系统有一个/etc/network/interfaces
文件,那么它是基于 Debian 的,并且可能有网络管理器,它 a) 通常会忽略该interfaces
文件并且 b)dhclient
无需询问即可运行,即使设备正在按照您希望的方式运行和工作。
新版本的 NetworkManager 应该会忽略具有手动或静态配置的设备。祝你好运。
网络管理器非常适合笔记本电脑或任何带有 wifi 卡的 PC。在我看来,在带有基于 LAN 的以太网的台式电脑上,它造成的问题比它解决的问题还多。
我见过三种解决方案,选择最适合的一个:
$ sudo su -c 'echo manual > /etc/init/network-manager.override'
- 将该行添加
NM_CONTROLLED=no
到设备节(这看起来更符合 RHEL 风格) $ sudo apt-get remove --purge network-manager