dhcpサーバーがある場合は、IPアドレスを動的に取得し、dhcpサーバーがあるかどうかにかかわらず、常に静的IPを持つようにイーサネットインターフェースを構成する必要があります。
次のファイルがあります/etc/network/interfaces
。
...
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 10.0.10.2
netmask 255.255.255.0
...
システムの起動時にケーブルが接続されている場合、仮想インターフェイス(eth0:1
)は固定IPを取得します。システムが起動してケーブルが接続されると、eth0
DHCPサーバーから動的IPを取得しますが、eth0:1
IPはありません。
なぜそんなことですか?
答え1
10年後、私は同じ問題に直面しました。私に役立つ解決策は、eth0設定に次の行を追加することです。
post-up ifup eth0:1 || true
pre-down ifdown eth0:1 || true
また、Allow-hotplugをautoに置き換えました(出典:https://unix.stackexchange.com/a/663955/601344)。
したがって、全体の構成は次のようになります。
auto lo eth0 eth0:1
iface lo inet loopback
iface eth0 inet dhcp
post-up ifup eth0:1 || true
pre-down ifdown eth0:1 || true
iface eth0:1 inet static
address ...
netmask ...
おそらく、これは古いシステムを使用している人に役立ちます。 ;)
答え2
これが現在の解決策です。
私はこの台本を生き続ける家庭教師:
#!/bin/bash
is_cable_plugged() {
if [ "`ifconfig eth0|sed -n '/running/I p'`" == '' ];then echo no;else echo yes;fi
}
while true; do
if [[ "$(is_cable_plugged)" == "no" ]]; then
while true; do
if [[ "$(is_cable_plugged)" == "yes" ]]; then
echo "DEBUG: Cable is now connected, reloading networking..."
/etc/init.d/networking reload
break
fi
echo "DEBUG: Waiting for cable to be connected..."
sleep 2s
done
fi
echo "DEBUG: Cable is connected, do nothing..."
sleep 10s
done