我有一台运行 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