Linux

有什麼方法可以強制我的 Linux 機器始終使用自分配的 IP 地址啟動?

  • August 22, 2014

這可能是一個不尋常的要求:我試圖讓一個 Debian Linux 機器在啟動時總是給自己一個自分配的 IP 地址(即 169.254.xy)。特別是,即使 LAN 上存在 DHCP 伺服器,我也希望它這樣做。也就是說,它不應該DHCP 伺服器請求 IP 地址。

從我在“man interfaces”文本中可以看到,有一個“manual”選項和一個“dhcp”選項。手動分配是不行的,因為我需要多個機器在同一個 LAN 上工作而不需要任何手動配置……並且“dhcp”可以滿足我的要求,但前提是 LAN 上沒有 DHCP 伺服器。(要求是這些框的功能不應受到存在或不存在 DHCP 伺服器的影響)。

有沒有我可以用來獲得這種行為的技巧?

編輯:通過“無手動配置”,我的意思是我應該能夠把這個盒子(無頭)帶到任何地方的任何區域網路,插入乙太網電纜,讓它做它的事情。每次將其移動到不同的 LAN 時,我都不必 ssh 到該框並編輯文件以使其正常工作。

如果您安裝該avahi-autoipd軟體包,並使用--force-bind自定義 init 或 if-up.d 腳本中的選項執行它,您將始終獲得連結本地地址。

然後您可以iface eth0 inet manual在您的 interfaces(5) 文件中使用,儘管您需要編輯/etc/network/if-up.d/avahi-autoipd以添加manual到方法行。

在 Avahi wiki 上有更多關於avahi-autoipd的資訊。

就個人而言,我會編輯/etc/network/if-up.d/avahi-autoipd為:

--- avahi-autoipd       2010-08-04 04:26:49.000000000 +0800
+++ avahi-autoipd.1     2010-11-11 09:57:54.000000000 +0800
@@ -13,10 +13,13 @@
esac

case "$METHOD" in
-       static|dhcp|NetworkManager) ;;
+       static|dhcp|NetworkManager|linklocal) ;;
       *) exit 0
esac

+if [ "$METHOD" == "linklocal" ]; then
+       /usr/sbin/avahi-autoipd --force-bind --daemonize --wait $IFACE 2> /dev/null
+fi

if [ -x /bin/ip ]; then
       # route already present?

然後,您可以將介面列為iface eth0 inet linklocal. 對if-down.d腳本進行的編輯留給讀者作為練習。

引用自:https://serverfault.com/questions/200613