가상 이더넷이 핫플러그에서 고정 IP를 얻지 못합니다.

가상 이더넷이 핫플러그에서 고정 IP를 얻지 못합니다.

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를 얻습니다. 시스템이 부팅되고 케이블이 연결되면 eth0DHCP 서버에서 동적 IP를 가져오지만 eth0:1IP는 없습니다.

왜 그런 겁니까?

답변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

관련 정보