Como conectarse a una red WPA en linea de ordenes con nmcli

[h]Como conectarse a una red WPA en linea de ordenes con nmcli[/h]

No soy un fan de Network Manager para nada y me parece una pena que no podamos elegir entre más gestores de redes.
Wicd me gusta más pero tampoco es perfecto.
Para bien o para mal las cosas son cómo son y 99% de las distribuciones GNU-Linux vienen con el inamovible Network Manager.
Tampoco Network Manager es malo.
Hay vamos a interesarnos un rato a su potente CLI.
Es decir su programa para ejecutarlo en linea de ordenes, sin pasar por la interfaz gráfica.
La traducción correcta de CLI sería “interfaz de línea de órdenes (comandos)” y es entonces distinta a la GUI (“Interfaz Gráfica para Usuario”) que usamos a diario.
Usar la CLI es algo muy útil para, por ejemplo, gestionar el wifi de un dispositivo remotamente mediante ssh
O si tenemos un bug con el applet (me ha desaparecido una vez o dos en unas disto tras un upgrade) y que no podemos conectarnos con la interfaz gráfica

[h]Pasos a seguir[/h]

Vamos a hacer todo desde cero utilizando nmcli (Network Manager CLI)

  1. Lo primero sería identificar la interfaz wifi y de paso** conocer su estado**.
sudo nmcli dev status

https://www.wifi-libre.com/img/members/3/nmcli_connect_wpa_1.jpg

  1. Segundo paso: Escaneo wifi en consola ( y en colores. :cool: )
sudo nmcli dev wifi list

https://www.wifi-libre.com/img/members/3/nmcli_connect_wpa_2.jpg
Inmediato y bonito.
Con un único reproche: No enseña el bSSID.
Tampoco hace la distinción entre b/g (hasta 54Mbps) y b/g/n (hasta… 600 mbps… pero generalmente los hardwares permiten 150 o 300Mbps)

  1. Paso tres: Crear el perfíl
    Así funciona nmcli: Creamos el perfil primero y luego lo activamos.
    Es la principal diferencia con el método “tradicional” para conectarse en lineas de ordenes utilizando directamente wpa_supplicant
    La ventaja es que una vez que un perfil esta creado se activa super rápido, con una orden corta.
    Lo primero es lo primero y hay que crear el perfíl.
    Lo hago para mi red, la primera que sale, wifi-libre (WPA 2)
    [list=1]
    *]sudo nmcli con add con-name wificasa ifname wlan0 type wifi ssid Wifi-libre
sudo nmcli con modify wificasa wifi-sec.key-mgmt wpa-psk
  • con modify: Es para configurar el perfil que indicamos a continuación (wificasa en mi ejemplo)
  • wifi-sec.key-mgmt wpa-psk = ¡Deme WPA! /*]
    *]Y entramos la llave WPA para conectarse
sudo nmcli con modify wificasa wifi-sec.psk w1Fi()Lbr3?@!¡_kl
  • La diferencia con linea precedente es que usamos al final wifi-sec.psk seguido por nuestra llave (w1Fi()Lbr3?@!¡_kl en este ejemplo)/*]
    [/list]

    1. Cuarto y ultimo paso: activamos el perfil
      Así de simple:
sudo nmcli connection up wificasa

(poner el nombre de su perfil en lugar de wificasa :wink: )
Job is done! :cool: : https://www.wifi-libre.com/img/members/3/nmcli_connect_wpa_4.jpg
Puedo verificarlo con

 sudo nmcli -p c

( -p es para “pretty” (poner colorines en consola) y** c** es para “conexiones” )
https://www.wifi-libre.com/img/members/3/nmcli_connect_wpa_5.jpg
Y puedo “saberlo todo” sobre el perfil con

sudo nmcli -p con show wificasa

El stdout es muy largo y no cabe en una captura de pantalla.
Así que lo pongo en este bloque para código: [code]~$ sudo nmcli -p con show wificasa

              Detalles del perfil de conexión (wificasa)

===============================================================================
connection.id: wificasa
connection.uuid: d2a4f354-f6ef-45a3-bf90-551d6bb197f3
connection.interface-name: wlan0
connection.type: 802-11-wireless
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.timestamp: 1478121322
connection.read-only: no
connection.permissions:
connection.zone: –
connection.master: –
connection.slave-type: –
connection.autoconnect-slaves: -1 (default)
connection.secondaries:
connection.gateway-ping-timeout: 0
connection.metered: desconocido
connection.lldp: -1 (default)

802-11-wireless.ssid: wifilibre
802-11-wireless.mode: –
802-11-wireless.band: –
802-11-wireless.channel: 0
802-11-wireless.bssid: –
802-11-wireless.rate: 0
802-11-wireless.tx-power: 0
802-11-wireless.mac-address: –
802-11-wireless.cloned-mac-address: –
802-11-wireless.mac-address-blacklist:
802-11-wireless.mac-address-randomization:predeterminado
802-11-wireless.mtu: auto
802-11-wireless.seen-bssids: 00:C0:CA:78:B1:37
802-11-wireless.hidden: no
802-11-wireless.powersave: default (0)

802-11-wireless-security.key-mgmt: wpa-psk
802-11-wireless-security.wep-tx-keyidx: 0
802-11-wireless-security.auth-alg: –
802-11-wireless-security.proto:
802-11-wireless-security.pairwise:
802-11-wireless-security.group:
802-11-wireless-security.leap-username: –
802-11-wireless-security.wep-key0:
802-11-wireless-security.wep-key1:
802-11-wireless-security.wep-key2:
802-11-wireless-security.wep-key3:
802-11-wireless-security.wep-key-flags: 0 (none)
802-11-wireless-security.wep-key-type: 0 (desconocido)
802-11-wireless-security.psk:
802-11-wireless-security.psk-flags: 0 (none)
802-11-wireless-security.leap-password:
802-11-wireless-security.leap-password-flags:0 (none)

ipv4.method: auto
ipv4.dns:
ipv4.dns-search:
ipv4.dns-options: (predeterminado)
ipv4.dns-priority: 0
ipv4.addresses:
ipv4.gateway: –
ipv4.routes:
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: –
ipv4.dhcp-timeout: 0
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: –
ipv4.dhcp-fqdn: –
ipv4.never-default: no
ipv4.may-fail: yes
ipv4.dad-timeout: -1 (default)

ipv6.method: auto
ipv6.dns:
ipv6.dns-search:
ipv6.dns-options: (predeterminado)
ipv6.dns-priority: 0
ipv6.addresses:
ipv6.gateway: –
ipv6.routes:
ipv6.route-metric: -1
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (desconocido)
ipv6.addr-gen-mode: stable-privacy
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: –

===============================================================================
Activar detalles de conexión (d2a4f354-f6ef-45a3-bf90-551d6bb197f3)

GENERAL.NOMBRE: wificasa
GENERAL.UUID: d2a4f354-f6ef-45a3-bf90-551d6bb197f3
GENERAL.DISPOSITIVOS: wlan0
GENERAL.ESTADO: activada
GENERAL.PREDETERMINADO: no
GENERAL.PREDETERMINADO6: no
GENERAL.VPN: no
GENERAL.ZONA: –
GENERAL.RUTA-DBUS: /org/freedesktop/NetworkManager/ActiveConnection/28
GENERAL.CON-RUTA: /org/freedesktop/NetworkManager/Settings/18
GENERAL.OBJETO SPEC: /org/freedesktop/NetworkManager/AccessPoint/571
GENERAL.MASTER-RUTA: –

IP4.DIRECCIÓN[1]: 192.168.2.3/24
IP4.PUERTA DE ENLACE: 192.168.2.1
IP4.DNS[1]: 8.8.8.8
IP4.DOMINIO[1]: myAlfasetup

DHCP4.OPCIÓN[1]: requested_routers = 1
DHCP4.OPCIÓN[2]: requested_domain_search = 1
DHCP4.OPCIÓN[3]: requested_time_offset = 1
DHCP4.OPCIÓN[4]: requested_domain_name = 1
DHCP4.OPCIÓN[5]: requested_rfc3442_classless_static_routes = 1
DHCP4.OPCIÓN[6]: requested_broadcast_address = 1
DHCP4.OPCIÓN[7]: requested_netbios_scope = 1
DHCP4.OPCIÓN[8]: requested_wpad = 1
DHCP4.OPCIÓN[9]: next_server = 0.0.0.0
DHCP4.OPCIÓN[10]: expiry = 1478149562
DHCP4.OPCIÓN[11]: requested_interface_mtu = 1
DHCP4.OPCIÓN[12]: requested_subnet_mask = 1
DHCP4.OPCIÓN[13]: routers = 192.168.2.1
DHCP4.OPCIÓN[14]: dhcp_message_type = 5
DHCP4.OPCIÓN[15]: ip_address = 192.168.2.3
DHCP4.OPCIÓN[16]: requested_static_routes = 1
DHCP4.OPCIÓN[17]: domain_name = myAlfasetup
DHCP4.OPCIÓN[18]: requested_domain_name_servers = 1
DHCP4.OPCIÓN[19]: broadcast_address = 192.168.2.255
DHCP4.OPCIÓN[20]: requested_ntp_servers = 1
DHCP4.OPCIÓN[21]: requested_netbios_name_servers = 1
DHCP4.OPCIÓN[22]: dhcp_lease_time = 28800
DHCP4.OPCIÓN[23]: domain_name_servers = 8.8.8.8
DHCP4.OPCIÓN[24]: requested_ms_classless_static_routes = 1
DHCP4.OPCIÓN[25]: subnet_mask = 255.255.255.0
DHCP4.OPCIÓN[26]: network_number = 192.168.2.0
DHCP4.OPCIÓN[27]: requested_host_name = 1
DHCP4.OPCIÓN[28]: dhcp_server_identifier = 192.168.2.1

IP6.DIRECCIÓN[1]: fe80::c8e7:f0ba:ceec:64ff/64
IP6.PUERTA DE ENLACE:

kcdtv@Andtoid4S1M0V:~$
[/code]

Conclusión

nmcli no hace nada que no podemos hacer con wpa_supplicant (o wpa_cli) y un servicio dhcp (si no configuramos la IP a mano)
Lógico ya que podemos decir que Network Manager es básicamente es un wrapper para wpa_supplicant
La ventaja de nmcli es que es unifica todas las ordenes (el dhcp se lanza automáticamente) y que no tenemos que crear nosotros un fichero de configuración cómo es el caso con wpa_supplicant.
Llevar el proceso para conectarse a una red WPA es más rápido y más cómodo comparándolo con lo qué es hacerlo medisante wpa_supplicant en linea de ordenes
Y una vez que un perfil esta creado es lo más para pasar de una red a otra al instante.
Notareis que cuando hacéis una modificación en un perfil, los cambios se ven de inmediato en la GUI en propriedades: Hay una muy buena gestión en vivo de la relación CLI - GUI, nada de latencia para ver los cambios.
Las sintaxis de la CLI no son complejas, la lógica de funcionamiento es directa y simple.
Quizá podrían ahorrarnos una etapa, que al activar el** WPA** podamos poner la llave (ya que si se activa el WPA hace falta una si o si)
Tengo que admitir que me ha convencido y no poco.
Diría que la CLI me gusta más que la GUI… A partir de ahora seré más indulgente cuando hablaré de Network Manager :stuck_out_tongue:

Fuentes
[list=*]
]2.4.2. Connecting to a Network Using nmcli @ documentación Fedora/]
]Connect to a wireless network with nmcli de Jim CAMPBELL @ Campbell/]
]2.3. Using the NetworkManager Command Line Tool, nmcli @ Red Hat Networking Guide/]
[/list]

Muy bueno so tambien :cool: a mi tan poco me gusta network-manager y wicd… es wicd