有没有办法在Rasperry Pi的Raspbian Linux中禁用DHCP客户端?


15

我有一台Linux服务器(使用Raspbian作为OS的Rasperry Pi)应该只使用静态IP。

但是我注意到它也从DHCP服务器获得了IP(DHCP给出的IP是192.168.111.2)。根据网络设置,服务器应仅使用静态IP(192.168.111.100)。

内容/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.111.100
netmask 255.255.255.0
gateway 192.168.111.1
dns-nameservers ip1 ip2

尽管使用了静态配置,但我也可以使用DHCP给定的IP SSH到设备。似乎ntpd还使用了错误的IP和正确的IP。

Netstat的输出:

udp        0      0 192.168.111.2:123       0.0.0.0:*                           2774/ntpd
udp        0      0 192.168.111.100:123     0.0.0.0:*                           2774/ntpd

根据ifconfigIP 192.168.111.2没有使用:

eth0      Link encap:Ethernet  HWaddr b8:27:eb:be:18:1c
          inet addr:192.168.111.100  Bcast:192.168.111.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:138099 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81146 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:95954711 (91.5 MiB)  TX bytes:27076870 (25.8 MiB)

ps -ef | grep dhcp 显示我正在运行DHCP守护程序:

root      2000     1  0 Oct07 ?        00:00:06 /sbin/dhcpcd

如何禁用启动DHCP守护程序,并确保服务器仅使用静态?


您指的是什么命令?
Madoc Comadrin 2015年

我尝试了这些命令,但在此方面没有任何帮助。
Madoc Comadrin 2015年

@barlop没什么问题,ifconfig它会定期使用。有一天ip,它将被替换,但是老实说,因为这不是一个小便竞赛,所以badge扯某人“更好”并不重要。ifconfig提供了足够多的细节来调试这样的事情。
JakeGould 2015年

Answers:


11

这种情况听起来真的很奇怪,因为如果其中设置了静态IP,则您的设置应该按照您所描述的那样工作,并希望它能够工作/etc/network/interfaces。就是说,在Raspberry Pi官方网站上的讨论着眼于用户“ rpdom”的问题,并在“ 2015年5月28日星期四6:21 am”上发了言:

这发生在最新更新中。它是由新的dhcp客户端忽略接口文件的功能并另外做自己的事情引起的...对我来说似乎很疯狂。我将研究如何重新配置​​dhcp客户端(无法记住它是怎么做或如何做,我仍然使用适合我的旧版本),禁用它或删除它(如果可能)。

主题更深的用户“ KLL” 在其响应中建议了以下其他帖子,其回复日期为“ 2015年8月10日星期一”。根据“ knute”:

在升级过程中的某个地方,升级/etc/network/interfaces使用“ manual”一词而不是dhcp或static 修改了我的 文件,最终我得到了两个IP地址,一个是静态IP地址,另一个是dhcp地址。我终于有时间去尝试它,并发现它的 dhcpcd5工作原理与之前的有所不同。仅获取您的静态地址,请勿修改/etc/network/interfaces。如果更改了“手动”一词,请放回它,而应/etc/dhcpcd.conf按照文档中的示例所示进行修改 。

因此,想法是,dhcpcd5在升级之一中,的行为已更改。解决该问题的建议是删除其中的所有更改,/etc/network/interfaces然后调整设置/etc/dhcpcd.conf以获取静态IP地址。下面的示例配置:

static <value>
             Configures a static <value>.  If you set ip_address then dhcpcd
             will not attempt to obtain a lease and just use the value for the
             address with an infinite lease time.

             Here is an example which configures a static address, routes and
             dns.
                   interface eth0
                   static ip_address=192.168.0.10/24
                   static routers=192.168.0.1
                   static domain_name_servers=192.168.0.1

有关内容的更多信息,请dhcpcd.conf参见官方手册页

也就是说,另一个想法是保留您已有的设置,/etc/network/interfaces然后编辑/etc/dhcpcd.conf以添加该行,denyinterfaces eth0以告诉DHCP守护程序完全忽略eth0。两种解决方案都可以使用,但是一种解决方案可能是更可取的解决方案,具体取决于您的整体网络需求。


2
我的案子几乎与这里描述的案子相同。唯一的区别是,在Raspberry Pi论坛案例中,我/etc/network/interfaces从未manual像现在这样改变过。建议的解决方案也对我有用。
Madoc Comadrin 2015年

1
同样,即使使用“ static”,我在eth0上也获得了dhcp。对于jessie-lite安装,这仍然是一个问题。由于我需要wlan0接口的度量标准低于eth0接口的度量标准,而且到目前为止,我无法让dhcpcd5允许我这样做,因此该解决方法仍无济于事。
彼得·汉森

3
是一种解决方法所做的工作对我来说,不过,是要不要告诉dhcpcd5看的eth0。这是通过在/etc/dhcpcd.conf中添加“ denyinterfaces eth0”来完成的。
彼得·汉森

1
@PeterHansen很高兴知道!将该信息添加到我的答案末尾。
JakeGould '16

2
后续操作:在某些情况下,我发现我同时安装了dhcpcd5和isc-dhcp-client,都分配了地址。此外,还有一个由systemd初始化的dhcpcd.service,它在所有接口上运行(带有-q -b选项),以及在网络/接口中由“ dhcp”选项启动的dhcpcd5进程。igh ...我希望一旦知道了这些,就很容易解决。
彼得·汉森

8

对我有用的是使用/ etc / network / interfaces,如原始问题中所示,并且仅删除dhcp客户端:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common

在您不关心DHCP(或dhcpcd可以执行的其他任何操作)的情况下,这是最简单的解决方案。
AVee

1

我必须说,不幸的是,这里提出的解决方案都不对我有用。但是经过与DHCP的长期斗争之后,我终于能够解决问题:

vi /etc/systemd/network/eth0.network

更改:

[Match]
Name=eth0

[Network]
DHCP=yes

至:

[Network]
DHCP=no

希望这可以帮助。


1

禁用任何服务(例如dhcpcd)的首选方法是使用系统管理功能。您需要重新启动才能生效-除非您也停止该服务。

对于Jessie(使用systemd管理):

sudo systemctl disable dhcpcd.service

对于较老的Wheezy(System-V管理人员):

sudo update-rc.d dhcpcd disable

但是,如果确实禁用它,则需要确保已在其中配置了静态ip配置,/etc/network/interfaces否则您的接口将不会获得IP地址。


0

这是我需要为Raspbian Jessie 2017-01-11做的摘要:

编辑/ etc / network / interfaces并添加静态地址节,删除对静态接口的其他引用(在这种情况下为eth0)。自动行很重要,否则接口将在启动时无法启动:

    auto eth0
    iface eth0 inet static
      address 192.168.44.17
      netmask 255.255.255.0
      gateway 192.168.44.27

接下来禁用dhcpcd并启用标准网络:

  • 禁用dhcpcd: systemctl disable dhcpcd.service
  • 启用网络: systemctl enable networking
  • 重启

截至2017年1月11日发行的Raspbian Jessie似乎并未使用systemd的网络


0

尝试了几件事,发现

 apt list --installed | grep dhcp

发现:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

我只是禁用,dhcpcd5并使用以下方法修复了该问题:

 sudo apt-get remove dhcpcd5

重新启动,一切都花花公子

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.