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