如何仅在网络接口实际存在时启动它

如何仅在网络接口实际存在时启动它

运行 Ubuntu Server 12.04(无 GUI)。让内核仅在物理插入网络接口时才启动网络接口的最佳方法是什么?因此,如果不存在,只需继续初始化其他接口(如果有)并继续登录屏幕,而无需“等待网络配置”延迟。

例如,我有一个无线 USB 密钥 wlan9(在 /etc/network/interfaces 中):

auto wlan9
iface wlan9 inet dhcp
        wpa-ssid myssd
        wpa-psk mykey
        wpa-proto RSN
        wpa-pairwise CCMP
        wpa-group CCMP

我试过允许热插拔代替汽车,在这种情况下,接口不会在启动过程中自动初始化,我必须手动进行初始化ifup wlan9。这并不是我所寻找的。

谢谢。

答案1

对于服务器也一样:使用 NetworkManager

  1. 安装:

    sudo apt-get install network-manager
    

    不幸的是,这将带来很多依赖关系。

  2. 关闭当前以传统方式配置的接口。

    ifdown wlan9
    
  3. /etc/network/interfaces通过删除与该接口有关的所有行来禁用所有手动设置。

  4. /etc/NetworkManager/system-connections/在(命名)中添加无线连接的连接设置:

    [connection]
    id=Some name of my connection
    uuid=0d791425-87c5-45e6-948e-01b1863901f7
    type=802-11-wireless
    
    [802-11-wireless]
    ssid=mySSID
    mode=infrastructure
    mac-address=24:77:00:01:02:03
    security=802-11-wireless-security
    
    [802-11-wireless-security]
    key-mgmt=wpa-psk
    psk=mypassword
    
    [ipv4]
    method=auto
    
    [ipv6]
    method=ignore
    
    • 使用uuid该命令uuidgen生成一个随机的。
    • 使用mac-address无线适配器的 MAC 地址(用于ifconfig -a wlan9查找)。这会将此配置文件仅绑定到此适配器 - 如果不存在,则不会将其用于其他适配器,也不会等待适配器出现。
    • 我希望其他领域能够说明一切。:)
  5. 重新启动 NetworkManager 或重启。

    restart network-manager
    

答案2

并继续登录屏幕

建议您使用支持 GUI 的安装(非服务器) - 因此我基于此提供此答案。


只需使用 NetworkManager

  1. 关闭该接口。

    ifdown wlan9
    
  2. /etc/network/interfaces通过删除与该接口有关的所有行来禁用所有手动设置。

  3. 进入网络设置,添加/编辑无线网络连接。

  4. 配置如下(见下图):

    1. 让它自动连接。

    2. 通过选择正确的 MAC 地址将其应用于正确的无线适配器。如果适配器不存在,则此对话框中的连接设置将不适用,因此这会将它们“绑定”到此特定适配器(因为每个适配器都有另一个 MAC 地址)。不,这不是 WiFi AP 的 MAC 地址 - 那是 BSSID。

    3. 使其可供所有用户使用(这使得它在登录屏幕上自动连接)。请注意,除非您提供必要的详细信息,否则此设置将呈灰色。

    当然还要输入有关安全性、SSID 等的其他详细信息。

    在此处输入图片描述

答案3

我想出了以下不依赖于任何额外软件包的解决方案:

auto wlan9
iface wlan9 inet manual
        wpa-ssid MYSSD
        wpa-psk MYKEY
        wpa-proto RSN
        wpa-pairwise CCMP
        wpa-group CCMP
        wireless-power off
        pre-up if [ -f /sys/class/net/wlan9/operstate ]; then ifconfig wlan9 up; fi
        up if [ -f /sys/class/net/wlan9/operstate ]; then dhclient wlan9; fi

虽然它可能不够优雅,但它满足了我的要求:如果无线适配器未插入,则跳过 wlan9 初始化而无需启动延迟,否则将其启动。

相关内容