歷史 - - - - - - - - - - - - - - - - - - - - - - - - - -------------

歷史 - - - - - - - - - - - - - - - - - - - - - - - - - -------------

我有一個配置了靜態 IP 的 Linux 機器,看起來沒問題。靜態 IP 位址可以工作幾個小時,然後使用 DHCP 告訴它使用的任何內容(看起來像是)重新設定。

這是我的 /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.101
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.254

有任何想法嗎?

答案1

我在 Ubuntu Server 上遇到了同樣的問題,但我想我已經解決了。當我重新啟動網路時,dhclient3 仍在運行。從 htop 來看,它的參數中有一些“eth0”,所以我懷疑它仍在為 eth0 尋找 dhcp 的更新。我無法使用 apt-get 刪除 dhcp-client,所以我執行:

sudo kill $(ps -aux | grep dhc | grep eth0 | awk '{print $2}')

注意:此程式碼可能會殺死伺服器上的其他東西!放輕鬆,將“eth0”替換為您為其設定靜態IP的介面名稱!或透過 htop 終止您的介面的 dhclient 或 dhclient3。

答案2

我也遇到同樣的問題。 dhclient 守護程式是瘋狂的。健全性檢查需要進行。它應該是這樣的:

  • 發現現有租約資訊 (/var/lib/dh​​cp/*)
  • 驗證 DHCP 設定的所有介面 (/etc/network/interfaces)
  • 如果介面是靜態配置的,則清除 DHCP 租用資訊並在執行期間忽略該介面。
  • 如果介面未靜態配置並且具有現有租約訊息,則相應地續約。
  • 如果介面不是靜態配置的且沒有現有的租約訊息,則進行相應的發現。

歷史 - - - - - - - - - - - - - - - - - - - - - - - - - -------------

當問題持續存在時,我目睹 /var/log/syslog 填滿了以下行:

May  3 06:25:36 xxxxxx dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67

dhclient 程序在背景執行,透過 'ps aux | 確認。 grep dhc'

確認「/etc/network/interfaces」中 eth0 的靜態 IP 設定正確後,我重新啟動了網路服務。網路服務重新啟動後,靜態 IP 會保留,直到租約達到半衰期,此時 dhclient 會更新先前 DHCP 分配的位址,該位址是在系統初始設定時收到的。此資訊保存在“/var/lib/dh​​cp/*”中。

在過去幾天我一直在開發的三個系統上已經見證了這種行為。系統資訊:

# cat /etc/issue.net
Debian GNU/Linux 7
# cat /proc/version
Linux version 3.2.0-4-amd64 ([email protected]) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.68-1+deb7u1
# dhclient -version
Internet Systems Consortium DHCP Client 4.2.2

解決 - - - - - - - - - - - - - - - - - - - - - - - - - ----------

注意:以 root 身分執行或在每個命令中新增 sudo。

# dhclient -r
# dhclient -x
# rm /var/lib/dhcp/* 
# shutdown -r 0

結果:dhclient 程序沒有隨系統自動啟動,「ifconfig」顯示 eth0 已正確配置靜態 IP,syslog 清除了 DHCP 垃圾郵件,並且更改在多次系統重新啟動後仍然存在。

注意:我的系統依賴靜態分配的 IP 位址才能正常運作。如果您將此修復應用於筆記型電腦,則可能會中斷 WiFi 連線。

相關內容