在一个接口上禁用 dhcp 客户端

在一个接口上禁用 dhcp 客户端

我在一台有两个以太网接口(etho 和 eth1)的服务器上遇到了问题,它运行 linux-ubuntu-server。我需要 eth1 不发出任何 dhcp 请求,因为我只需要它作为一个监听接口,显然我需要 eth0 正常运行。那么我该如何禁用 eth1 上的任何 dhcpclient 请求?

预先感谢。

答案1

就像是:

auto lo eth0 eth1

iface lo inet loopback

iface eth1 inet static
        address 192.168.32.130
        netmask 255.255.255.0
        gateway 192.168.32.1

在您的/etc/network/interfaces配置文件中将为您分配eth1一个静态 IP 地址。

答案2

有时即使/etc/network/interfaces文件正确,dhclient也会继续在静态接口上请求 IP 地址。问题可能是存在/var/lib/dhcp/dhclient.*.leases包含不正确信息的旧文件。只需 kill dhclient,删除这些文件,然后重新启动(通过在 DHCP 接口上执行ifdown/ ifup)。

答案3

对于现代 Linux 操作系统,这可以通过网络管理器进行控制:

  • 在 RHEL 中:更改BOOTPROTO=dhcp文件中的行/etc/sysconfig/网络脚本/ifcfg-eth1BOOTPROTO=static,然后重新启动网络服务。

  • 在 Debian 中:将文件中的 method=auto行更改为method=static/etc/NetworkManager/system-connections/有线连接 1,然后重新启动网络服务。

答案4

如果您不想在此接口上添加静态 IP,也许您必须删除由 DHCP 客户端分配的 IP。

运行此脚本将删除 eth0 上的 ip。

#!/bin/sh
localip=`ip addr list dev eth0 | grep "inet " | sed 's/\(^\s*inet\s\)\([0-9\.]*\)\([\s\/].*\)/\2/'`
if [[$ip != ""]]; then
sudo ip addr del $localip dev eth0
fi

您需要手动运行它或将其设置为 crontab。或者,尝试在分配 IP 后调用它,但我不知道如何挂接它。删除 IP 地址后,它就像在此接口上禁用 dhcp 客户端一样工作。

注意:这只是一种解决方法,通过删除指定接口上的 DHCP 客户端的影响,而不是真正禁用它。它适用于我的解决方案,该解决方案要求接口处于开启状态且未分配任何 IP 地址。

相关内容