仅在物理上存在网络接口的情况下才打开它


8

运行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

我尝试使用allow-hotplug而不是auto,在这种情况下,启动时接口不会自动初始化,我必须使用ifup wlan9手动进行初始化。这不是我要找的东西。

谢谢。

Answers:


4

同样对于服务器:使用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
    

谢谢,“网络管理器”选项有点沉重,但是如果找不到更轻巧的东西,我将转向它。如果ifplugd几乎可以正常工作,则wlan9会上升,但没有获得DHCP租约。
noseratio

@Noseratio是的,我同意这并不是真正的轻量级解决方案。如果我知道一个没有GUI依赖项的轻量级网络管理器,我会在答案中使用它。:)
gertvdijk

@gertvdijk您能告诉我如果删除mac-address行会发生什么情况?它适用于所有适配器还是会崩溃?
DangeMask

@DangeMask它应该只适用于我假设的所有适配器。只是尝试找出答案?
gertvdijk 2015年

@gertvdijk我刚刚尝试过。如果删除“设备MAC地址”(在GUI中删除,在文件中也消失),即使在手动连接并重新启动后,网络管理器也不会自动连接。我什至尝试将ifupdown> managed设置为true和false都没有成功。
DangeMask

3

并继续登录屏幕

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


只需使用NetworkManager

  1. 调低界面。

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

  3. 转到网络设置,然后添加/编辑无线网络连接。

  4. 对其进行如下配置(请参见下面的屏幕截图):

    1. 让它自动连接。

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

    3. 使它对所有用户可用(这使它已经自动在登录屏幕上连接)。请注意,在您提供必要的详细信息之前,此设置为灰色。

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

    在此处输入图片说明


抱歉,我忘记指定这是Ubuntu Server。无论如何,谢谢,我保存了此提示,以满足我的桌面需求。
noseratio

1
@Noseratio啊...太糟糕了。现在编写服务器安装的答案。下次请更具体,完整地回答您的问题。
gertvdijk

我会。请原谅一个
菜鸟

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初始化而不会引起启动延迟,否则将其启动。


真好 但这如何跳过初始化?您不会在pre-up指令中取消任何内容。
gertvdijk

1
它认为这是两个因素的产物:1)INET手册 -因此它确实依赖于预先高达行动做任何事情:如果没有预先起来向上,内核只是跳过这一节
noseratio

是的,可以,但是根据联机帮助页,所有其他设置(包括wpa-*指令)均不适用于该manual方法。看起来像是一种无证的行为。
gertvdijk

1
我搞砸了与评论,这里就是我的意思是说:它认为这是两个因素的产物:1)INET手册 -因此它确实依赖于预先高达行动做任何事情:如果没有预先起来,内核只会跳过此节。2)如果接口不存在,则如果[-f / sys / class / net / wlan9 / operstate]返回1并且预启动将失败,因此不会进行进一步的初始化或延迟。
noseratio

预达行为实际上是记录,但它可能在未来改变manpages.ubuntu.com/manpages/precise/man5/interfaces.5。在启动界面之前,请先执行run命令。如果此命令失败,则ifup中止,避免将接口标记为已配置,打印错误消息,并以状态0退出。此行为将来可能会更改。
noseratio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.