Как вызвать сетевой интерфейс, только если он присутствует физически

8

Запуск Ubuntu Server 12.04 (без графического интерфейса). Каков наилучший способ заставить ядро ​​подключить сетевой интерфейс, только если он физически подключен? Так что, если он не существует, просто перейдите к инициализации других интерфейсов (если есть) и продолжайте к экрану входа в систему, без задержки «ожидания конфигурации сети».

Например, у меня есть беспроводной 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 . Это не совсем то, что я ищу.

Спасибо.

noseratio
источник

Ответы:

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
    
gertvdijk
источник
Спасибо, опция Network Manager выглядит немного тяжелой, но я вернусь к ней, если не найду что-то более легкое. ifplugd almosted работал, wlan9 работает, но не получает аренду DHCP.
нос
@Noseratio Да, я согласен, что это не совсем легкое решение. Если бы я знал более легкий сетевой менеджер без зависимостей GUI, я бы использовал это в своем ответе. :)
gertvdijk
@gertvdijk Можете ли вы сказать мне, что произойдет, если я удалю mac-addressстроку? Будет ли он работать на всех адаптерах или он выйдет из строя?
DangeMask
@DangeMask Это должно работать только для всех адаптеров, которые я предполагаю. Просто попробуй и выясни?
gertvdijk
@gertvdijk Я только что попробовал. Если я удаляю «MAC-адрес устройства» (удаляется в графическом интерфейсе, также исчезает в файле), диспетчер сети не будет подключаться автоматически даже после одного ручного подключения и перезагрузки. Я попытался даже установить ifupdown> удалось истина и ложь без успеха.
DangeMask
3

и продолжить на экране входа

Предполагается, что вы работаете с установкой с графическим интерфейсом (не на сервере), поэтому я даю ответ на основании этого.


Просто используйте NetworkManager

  1. Сноси интерфейс.

    ifdown wlan9
    
  2. Отключите все ручные настройки /etc/network/interfaces, удалив все строки, относящиеся к этому интерфейсу.

  3. Перейдите в настройки сети и добавьте / измените подключение к беспроводной сети.

  4. Настройте его следующим образом (см. Скриншот ниже):

    1. Пусть он подключится автоматически.

    2. Примените его к нужному беспроводному адаптеру, выбрав правильный MAC-адрес. Если адаптер отсутствует, то эти параметры подключения в этом диалоговом окне не будут применяться, поэтому он «привязывает» их к этому конкретному адаптеру (поскольку у каждого адаптера есть другой MAC-адрес). И нет, это не MAC-адрес точки доступа WiFi - это BSSID.

    3. Сделайте его доступным для всех пользователей (это делает его автоматически подключаться уже на экране входа в систему). Обратите внимание, что эти настройки неактивны, пока вы не предоставите необходимые данные.

    И, конечно же, также введите другие данные о безопасности, SSID и т. Д.

    введите описание изображения здесь

gertvdijk
источник
Извините, я забыл указать, что это Ubuntu Server. В любом случае, спасибо, я сохранил эту подсказку для нужд своего рабочего стола.
нос
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 без задержки загрузки, если беспроводной ключ не подключен, иначе вызывает его.

noseratio
источник
Ницца. Но как это пропустить инициализацию? Вы ничего не отменяете в pre-upдирективе.
gertvdijk
1
Он думает, что это продукт двух факторов: 1) руководство по inet - так что он действительно полагается на действие до начала, чтобы сделать что-нибудь: если нет предварительного или вверх , ядро ​​просто пропускает эту строфу
сборник
Да, может быть, но в соответствии с man-страницей все остальные настройки, включая wpa-*директивы, не применяются к manualметоду. Похоже на недокументированное поведение.
gertvdijk
1
Я перепутались с комментарием, вот что я хотел сказать: Это кажется , что это произведение двух факторов: 1) инет руководство - так что это действительно полагается на заранее до действия , чтобы сделать что - нибудь: если нет предварительной вверх или вверх Ядро просто пропустит этот раздел. 2) Если интерфейсов не существует, если [-f / sys / class / net / wlan9 / operstate] вернет 1 и предварительный запуск завершится неудачно, поэтому дальнейшая инициализация или задержка отсутствуют.
носовое отношение
Предварительно до поведения на самом деле документально, но это может измениться в будущем, manpages.ubuntu.com/manpages/precise/man5/interfaces.5 . pre-up Выполнить команду перед включением интерфейса. Если эта команда не выполняется, ifup прерывается, воздерживается от пометки интерфейса как настроенного, печатает сообщение об ошибке и завершает работу со статусом 0. Это поведение может измениться в будущем.
носовое отношение