所有静态分配的地址,但 dhcpcd 仍在运行?

所有静态分配的地址,但 dhcpcd 仍在运行?

我有一台运行 Debian Wheezy (7.0) 的虚拟机(在 ESXi 5.1.0 上)。

eth0 具有静态分配的地址。eth1曾是DHCP 分配,现在我想将其设为静态。

这是我的旧/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback

# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
 address 10.2.1.77
 broadcast 10.2.1.255
 netmask 255.255.255.0
 pointopoint 10.2.1.1

iface eth1 inet dhcp

这是我的新内容/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback

# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
 address 10.2.1.77
 broadcast 10.2.1.255
 netmask 255.255.255.0
 pointopoint 10.2.1.1

iface eth1 inet static
        address 10.1.0.254
        netmask 255.255.255.0
        gateway 10.1.0.1
        dns-nameservers 8.8.8.8

当我重新启动时,我可以看到dhcpcd尝试续订旧的 DHCP 分配地址的租约,并成功。然后它会覆盖/etc/resolv.conf,这应该包含 8.8.8.8 但是没有。然而,eth1 确实具有正确的(静态)地址。

我在这里做错了什么?我不想dhcpcd完全禁用。在不久的将来,我可能会将 eth1 切换回 DHCP,或者添加第三个 DHCP 分配的接口。

答案1

运行(以 root 身份):

update-rc.d -f dhcpd remove

如果您以后想要重新启用它,

update-rc.d dhcpd defaults

注意:从 rc.d 中删除它将在所有接口上禁用它。恢复它将在所有接口上启用它。

答案2

如果你正在使用 dhcpcd(客户端守护进程,大多数人都将其与 DHCP 和 DHCPd 混淆,它们是不同的),那么在/etc/dhcpcd.conf

static
interface eth0
static ip_address=172.16.0.5/24
static routers=172.16.0.1
static domain_name_servers=8.8.8.8

当然,请记住用您的网络详细信息替换 IP 信息。

答案3

dhcpcd 的手册页告诉我们:

拒绝接口模式

         When discovering interfaces, the interface name must not match
         pattern which is a space or comma separated list of patterns
         passed to fnmatch(3).

要停止 dhcpcd 在某个接口上运行,您可以通过在 /etc/dhcpcd.conf 中添加一行来要求它离开该接口。

在 OP 的案例中,这将是:

denyinterfaces eth0

这应该可以阻止 dhcpcd 在特定接口上干扰您,同时保持 dhcpcd 处于启用状态。这还允许您将接口配置保留在 /etc/network/interfaces 中。另一个选项是使用 Ariffer 建议的方法(使用 /etc/dhcpcd.conf 而不是 /etc/network/interfaces 进行配置。)

答案4

适用于 Debian 11:

$ cat /etc/systemd/network/eth0.network 
[Match]
Name=eth0

[Network]
DHCP=no

相关内容