虚拟以太网在热插拔上未获取其静态 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。如果系统启动后插入电缆,eth0则会从 dhcp 服务器获取其动态 IP,但eth0:1没有任何 IP。

这是为什么?

答案1

十年后,我遇到了同样的问题。对我有用的解决方案是将以下几行添加到 eth0 配置中:

        post-up ifup eth0:1 || true
        pre-down ifdown eth0:1 || true

我还用 auto 替换了allow-hotplug(来源: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

相关内容