有什麼方法可以強制我的 Linux 機器始終使用自分配的 IP 地址啟動?
這可能是一個不尋常的要求:我試圖讓一個 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
腳本進行的編輯留給讀者作為練習。