
我的一個無頭系統透過/etc/network/interfaces
有線乙太網路分配了一個靜態 IP 位址。它連接到路由器,該路由器也是 DHCP 伺服器。幾天后,靜態位址將被刪除並替換為 DHCP 位址。為什麼會這樣呢?
- 如果我重新啟動
sudo ifdown eth0 && sudo ifup eth0
,sudo service networking restart
系統會再次採用靜態位址,但幾天後,IP 位址會變更為動態位址。 - 網路上沒有其他系統具有(意外地)相同的靜態位址。
- NetworkManager 未在系統上運作。
- 我已設定係統在地址更改後立即向我發送電子郵件,但發生這種情況的時間似乎完全是隨機的。 DHCP 租用時間為 24 小時,但這似乎沒有相關性,無論如何這對靜態位址來說應該不重要。
- 我的 /etc/network/interfaces 是這樣的:
自動定位 iface lo inet環回 自動 eth0 iface eth0 inet 靜態 地址 192.168.124.104 網關192.168.124.253 網路遮罩 255.255.255.0
這有點令人費解。
什麼會導致系統放棄其靜態位址並請求 DHCP 位址?在哪個日誌檔中尋找什麼?
答案1
最近我偶然發現了這個問題,經過一番調查後發現 /etc/dhcp/dhcp.conf 需要增加一個區塊(或取消註解),類似於:
別名 { 介面“eth0”; 固定地址 10.1.1.1; 選項子網路遮罩 255.0.0.0; }
希望這可以幫助!
問候, 格倫登·格羅斯
答案2
嗯,奇怪...我不確定這是否重要,但為了簡潔起見,我會將參數netmask
直接放在“地址”之後,而不是“網關”之後。您還應該從主機卸載/停用 ( isc-
)軟體包,並注意 ipv6 和該軟體包。在此之前:了解正在發生的情況的一種方法是設定防火牆規則,該規則接受並記錄進出 DHCP 連接埠(伺服器 67 UDP 和用戶端 68 UDP)的所有流量,或為裝置狀態、或建立日誌記錄嗅探你的流量。 dhcp-client
resolveconf
dhcp-client
不過,解決方法(或替代解決方案)是為某些主機設定 DHCP 保留,或為其 DHCP 位址配置無限租用時間。對我來說,這非常有效,優點是集中管理。如果您的 DHCP 伺服器是您的數據機/路由器,您可能可以在 Web 介面中設定它(租用時間或保留時間),並且在某些路由器上您甚至可以選取「固定位址」複選框。如果您配置了自己的伺服器(Ubuntu?),您需要編輯文件,dhcpd.conf
新增以下幾行:
host Accountant {
hardware ethernet 00:1F:6A:XX:XX:XX;
fixed-address 192.168.124.104;
}
答案3
我知道這已經很舊了,但我遇到了一個類似的問題,我一直在努力解決。我也向 Canonical 立案尋求協助。
我已經解決了我的問題,並回到這篇文章,希望這對其他可能偶然發現這個問題的人有用。我的問題最終被證明是“wicd-daemon”。我不確定如何或為何安裝該軟體包,但它是刪除我的靜態位址並給我帶來其他網路問題的主要原因。
我的問題的一個症狀是,如果我拔下網路線並重新插入,dhclient 就會啟動。如果我手動設定我的網卡,那就沒問題,但是一段隨機時間後,它會得到一個不同的IP(由於 dhclient 似乎在後台運行)。檢查 dhclient 是否正在運行。至於為什麼 dhclient 甚至運行這是另一個問題。下面我描述了為我解決 dhclient 的問題,我最終追蹤了幾條路徑(avahi、ntpd、ifup,...)。對我來說,它是 wicd-daemon。
這個問題最初是在測試中發現的,因為我正在切換網絡,這需要我物理地移動我的網路電纜。這給我帶來了不該出現的網路問題。發現問題也花了一些時間,因為我沒想到我的靜態 IP 會遺失或更改。
最後,清除 wicd-daemon 和 python-wicd 解決了這個問題。現在,即使拔掉網路線,我的系統也會保留靜態 IP 位址。我也沒有看到 dhclient 啟動,所以我認為這個問題也已經解決了。我也走了其他的路,看看 avahi ,它似乎在我遇到的問題中發揮了作用,我也看了 ntpd (我知道很奇怪,但它同時出現在系統日誌中其他問題確實;NTPD 可能與此無關,但它產生了可疑的日誌)。我遇到了幾個兔子洞,直到在進行其他測試時偶然發現了一個正在運行的 wicd 進程。
長話短說,檢查 dhclient 是否正在運行,以及您的系統上是否運行著像 wicd 這樣的網路管理器。這可能是導致您的靜態位址出現問題的原因。
答案4
只是想補充一點,如果您有多個接口,請確保在文件中定義正確的接口/etc/network/interfaces
。
對我來說,問題是auto lo
在文件開頭定義的。但實際上,我們需要的是auto eth0
。
正確定義後,我的靜態 IP 將保持重新啟動狀態。
希望這對某人有幫助。