透過一個介面禁用 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資訊不正確的舊文件。只需殺死dhclient,刪除這些文件,然後重新啟動它(透過在 DHCP 介面上執行ifdown/操作)。ifup

答案3

對於現代 Linux 作業系統,這可以由網路管理員控制:

  • 在 RHEL 中:更改BOOTPROTO=dhcp文件中的行/etc/sysconfig/network-scripts/ifcfg-eth1,然後BOOTPROTO=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 用戶端的影響來解決的方法,而不是真正停用它。它適用於我的解決方案,該解決方案要求介面處於 UP 狀態且未分配任何 IP 位址。

相關內容