Cómo abrir una interfaz de red solo si está físicamente presente

8

Ejecutando Ubuntu Server 12.04 (sin GUI). ¿Cuál sería la mejor manera de hacer que el núcleo active una interfaz de red solo si está conectada físicamente? Por lo tanto, si no existe, simplemente continúe con la inicialización de otras interfaces (si las hay) y continúe con la pantalla de inicio de sesión, sin "esperar la configuración de la red".

Por ejemplo, tengo una llave USB inalámbrica wlan9 (en / etc / network / interfaces):

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

Intenté allow-hotplug en lugar de auto , en cuyo caso la interfaz no se inicializa automáticamente durante el arranque, y tengo que hacerlo manualmente con ifup wlan9 . Esto no es exactamente lo que estoy buscando.

Gracias.

noseratio
fuente

Respuestas:

4

También para el servidor: use NetworkManager

  1. Instalarlo:

    sudo apt-get install network-manager
    

    Desafortunadamente, esto atraerá muchas dependencias.

  2. Baje la interfaz configurada actualmente de la manera tradicional.

    ifdown wlan9
    
  3. Deshabilite cualquier configuración manual /etc/network/interfaceseliminando todas las líneas relacionadas con esa interfaz.

  4. Agregue una configuración de conexión para su conexión inalámbrica en /etc/NetworkManager/system-connections/(invente un nombre):

    [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
    
    • Para uuidusar el comando uuidgenpara generar uno aleatorio.
    • Para mac-addressusar la dirección MAC de su adaptador inalámbrico (use ifconfig -a wlan9para averiguarlo). Esto vincula este archivo de configuración solo a este adaptador; si no está presente, no lo usaría para otro adaptador, ni esperaría a que el adaptador esté presente.
    • Otros campos hablan por sí mismos, espero. :)
  5. Reinicie NetworkManager o reinicie.

    restart network-manager
    
gertvdijk
fuente
Gracias, la opción Network Manager se siente un poco pesada, pero recurriré a ella si no encuentro algo más ligero. ifplugd funcionó, wlan9 sube pero no obtiene una concesión de DHCP.
noseratio
@Noseratio Sí, estoy de acuerdo en que esta no es realmente una solución ligera. Si conociera un administrador de red más liviano sin las dependencias de la GUI, lo habría usado en mi respuesta. :)
gertvdijk
@gertvdijk ¿Puedes decirme qué sucede si elimino la mac-addresslínea? ¿Funcionará para todos los adaptadores o se bloqueará?
DangeMask
@DangeMask Debería funcionar para todos los adaptadores, supongo. ¿Solo intenta descubrirlo?
gertvdijk
@gertvdijk Lo he intentado ahora. Si elimino la "dirección MAC del dispositivo" (eliminada en la GUI, también desaparece en el archivo), Network Manager no se conectará automáticamente incluso después de una conexión manual y reiniciar. Intenté incluso configurar ifupdown> logró verdadero y falso sin éxito.
DangeMask
3

y continuar a la pantalla de inicio de sesión

Sugiere que está en una instalación habilitada para GUI (no servidor), por lo que proporciono esta respuesta basada en eso.


Solo usa NetworkManager

  1. Baja la interfaz.

    ifdown wlan9
    
  2. Deshabilite cualquier configuración manual /etc/network/interfaceseliminando todas las líneas relacionadas con esa interfaz.

  3. Vaya a la configuración de red y agregue / edite la conexión de red inalámbrica.

  4. Configúrelo de la siguiente manera (vea la captura de pantalla a continuación):

    1. Que se conecte automáticamente.

    2. Aplíquelo al adaptador inalámbrico correcto seleccionando la dirección MAC correcta. Si el adaptador no está presente, entonces esta configuración de conexión en este diálogo no se aplicará, por lo que esto "los une" a este adaptador específico (porque cada adaptador tiene otra dirección MAC). Y no, esta no es la dirección MAC del WiFi AP, es BSSID.

    3. Póngalo a disposición de todos los usuarios (esto hace que ya se conecte automáticamente en la pantalla de inicio de sesión). Tenga en cuenta que esta configuración está atenuada hasta que proporcione los detalles necesarios.

    Y, por supuesto, también ingrese los otros detalles sobre seguridad, SSID, etc.

    ingrese la descripción de la imagen aquí

gertvdijk
fuente
Lo siento, olvidé especificar que esto es Ubuntu Server. Gracias de todos modos, guardé esta pista para mis necesidades de escritorio.
noseratio
1
@Noseratio Ah ... qué pena. Ahora escribiendo una respuesta para la instalación del servidor. Sea más específico y complete su pregunta la próxima vez.
gertvdijk
Voy a. Por favor, perdona a un novato :)
noseratio
3

Se me ocurrió la siguiente solución que no depende de ningún paquete adicional:

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

Si bien puede que no sea elegante, hace lo que quiero: omite la inicialización de wlan9 sin demora de arranque si el dongle inalámbrico no está enchufado, de lo contrario lo abre.

noseratio
fuente
Agradable. Pero, ¿cómo se saltea esto la inicialización? No cancelas nada en la pre-updirectiva.
gertvdijk
1
Piensa que esto es producto de dos factores: 1) manual inet , por lo que realmente se basa en la acción de pre-up para hacer algo: si no hay pre-up o up , el kernel simplemente omite esta estrofa
noseratio
Sí, podría ser, pero de acuerdo con la página de manual, todas las demás configuraciones, incluidas las wpa-*directivas, no se aplican al manualmétodo. Parece una especie de comportamiento indocumentado.
gertvdijk
1
Me equivoqué con el comentario, esto es lo que quería decir: creo que esto es producto de dos factores: 1) manual inet , por lo que realmente se basa en la acción previa a la acción para hacer algo: si no hay pre-up o up , el kernel simplemente omitiría esta estrofa 2) Si las interfaces no existen, si [-f / sys / class / net / wlan9 / operstate] devolvería 1 y el preajuste fallaría, por lo que no habrá más inicialización o retraso.
noseratio
El comportamiento previo está realmente documentado, pero puede cambiar en el futuro, manpages.ubuntu.com/manpages/precise/man5/interfaces.5 . pre-up Ejecute el comando antes de abrir la interfaz. Si este comando falla, ifup se anula, evitando marcar la interfaz como configurada, imprime un mensaje de error y sale con el estado 0. Este comportamiento puede cambiar en el futuro.
noseratio