Comandos de comprobación

Verificamos si el kernel detecta el hardware.

sudo  lshw -C network

El resultado debería ser algo similar a esto.

*-network DISABLED
       description: Wireless interface
       product: AR9287 Wireless Network Adapter (PCI-Express)
       vendor: Qualcomm Atheros
       physical id: 0
       bus info: pci@0000:04:00.0
       logical name: wlan0
       version: 01
       serial: xx:xx:xx:xx:xx:xx
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress bus_master cap_list ethernet physical wireless
       configuration: broadcast=yes driver=ath9k driverversion=3.16.0-71-generic firmware=N/A latency=0 link=no multicast=yes wireless=IEEE 802.11bgn
       resources: irq:17 memory:f0400000-f040ffff

En la salida de texto anterior debemos comprobar que hay una cadena de texto junto a driver= y comprobaremos con lsmod si el driver está cargado. Para nuestro ejemplo será.

sudo lsmod | grep -i ath9k

Si aparece sólo uno son buenas noticias y podemos continuar. Si aparecen varios hay que quitar uno con sudo blocklist nombre_driver y si no hay ninguno tendremos que cargarlo con un comado similar a este.

sudo modprobe ath9k_htc

Ahora descartamos que no haya ningún bloqueo hardware o software.

sudo rfkill list

Gestión de las interfaces

Para saber el nombre que el sistema le ha asignado a la interfaz WiFi ejecutamos esto.

/sbin/iw dev

Obteniendo algo como esto

phy#0
	Interface wlan0
		ifindex 3
		type managed

El nombre es wlan0 y el timpo managed indica que es una estación que se conecta a un punto de acceso.

Hora comprobamos si la interfaz está levantada.

ip link show wlan0

La salida.

3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 90:f6:52:27:11:5b brd ff:ff:ff:ff:ff:ff

En la salida no tenemos <…,UP> por lo tanto tendremos que activarla, para ello ejecutamos.

sudo ip link set wlan0 up

Ahora sí vemos que aparece UP.

ip link show wlan0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 90:f6:52:27:11:5b brd ff:ff:ff:ff:ff:ff

Comprobamos el estado de la conexión

/sbin/iw wlan0 link

Obtenemos “Not connected.” ya quen no está establecida todavía.

Buscar redes cercanas

Para buscar las redes disponibles ejecutamos lo siguiente.

sudo /sbin/iw wlan0 scan
BSS xx:xx:xx:xx:xx:xx (on wlan0)
        ... eliminado ...
	freq: 2412
	SSID: mi_red
        ... eliminado ...
	RSN:	 * Version: 1
		 * Group cipher: CCMP
		 * Pairwise ciphers: CCMP
		 * Authentication suites: PSK
		 * Capabilities: (0x0000)
        ... eliminado ...

La información más importante de lo anterior es el SSID o nombre del punto de accedos y RSN que se refiere al tipo de conexión WPA2.

Establecimiento de la conexión WPA2

Lo primero es crear un archivo que contenga la el nombre de la red “mi_red” y el la clave pública, contraseña o “psk”. Para ello.

sudo -s wpa_passphrase mi_red >> /etc/wpa_supplicant.conf

Una vez ejecutado la línea de comando espera la indroducción de texto, escribimos la contraseña o psk. El archivo tendrá la siguiente apariencia.

cat /etc/wpa_supplicant.conf

Mostrando …

# reading passphrase from stdin
network={
	ssid="mi_red"
	#psk="contraseña_de_prueba"
	psk=75951eb58b775d53e2fe915d986c569e9d915a7f1375b5879121a498af792b3d
}

Ahora para conectarnos ejecutamos el comando.

sudo wpa_supplicant -B -D wext -i wlan0 -c /etc/wpa_supplicant.conf

Y comprobamos que estamos conectados con el comando.

/sbin/iw wlan0 link

El resultado deberá dar algo como esto.

Connected to xx:xx:xx:xx:xx:xx (on wlan0)
SSID: mi_red
freq: 2437
RX: 771824 bytes (6565 packets)
TX: 1413 bytes (19 packets)
signal: -45 dBm
tx bitrate: 1.0 MBit/s

bss flags: short-slot-time
dtim period: 0
beacon int: 100

Obtención de IP por DHCP

Para comenzar con el protocolo DHCP ejecutamos el comando siguiente.

sudo dhclient wlan0

Para comprobar la dirección IP asignada a la interfaz wlan0

ip addr show wlan0

Resultando …

3: wlan0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.55/24 brd 192.168.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever

Si queremos añadir una puerta de enlace a mano –192.168.1.254 en el ejemplo– ejecutaremos:

sudo ip route add default via 192.168.1.254 dev wlan0

Tras esto podemos probar a hacer ping al servidor DNS de Google Inc. (8.8.8.8)

ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=3.83 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=3.92 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=22.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=53 time=6.07 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 3.833/9.096/22.547/7.817 ms

Opciones adicionales

Cómo cambiar la MAC de la interfaz

sudo ifconfig 'interface' down
sudo ifconfig 'interface' hw ether 'mac'
sudo ifconfig 'interface' up

Asociación al punto de acceso WEP

Configuración del ESSID

sudo iwconfig 'interface' essid 'essid_name'

Añadimos la contraseña WEP

sudo iwconfig 'interface' key 'hex_password

Forzamos la asociación con el ESSID

sudo iwconfig 'interface' ap 'essid_MAC'

Forzamos la optención de IP mendiante el servidor DHCP

dhclient 'interface'

Si por otro lado deseamos realizar la configuración manual de la IP y su máscara

sudo ifconfig 'interface' 'IP' netmask 'mask'

Asociación al punto de acceso WPA en arranque

Editamos el archivo interfaces

sudo nano /etc/network/interfaces

Y añadimos las líneas que se muestran a continuación.

auto wlan0
iface wlan0 inet static
address 'your_ip'
netmask 'your_netmask'
gateway 'gateway_ip'
wpa-ssid 'your_ssid_name'
wpa-key-mgmt WPA-PSK
wpa-group TKIP CCMP
wpa-psk 'your_password'

Lo que aparece como ‘your_password’ tras wpa-psk debe ser sustituido por la Pre-shared key obtenida como resultado del siguiente comando:

sudo wpa_passphrase 'ssid_name' 'passphrase'

Si el comando no está disponible debe ser instalado con apt-get:

sudo apt-get install wpasupplicant

Finalmente es necesario configurar el servidor dns para ello debemos añadir la siguiente linea al ficher /etc/resolv.conf.

nameserver 192.168.1.1

Alternativamente podemos crear un archivo que se suele llamar y dejar en /etc/wpa_supplicant.conf con la siguiente información.

network= {
          ssid="el_nombre_del_ssid"
          psk="la_contraseña"
}

Para forzar la conexión con la red ejecutaremos el comando.

wpa_supplicant -B -i 'interfaz' -c /etc/wpa_supplicant.conf

Deshabilitando Network Manager

Si queremos deshabilitar el Network Manager podemos ejecutar los siguientes comandos en Debian 8.

$ sudo systemctl stop NetworkManager.service
$ sudo systemctl disable NetworkManager.service 

Por otro lado si sólo queremos que Network Manager no gestione algunas interfaces bastará con configurar esta en /etc/network/interfaces y añadir en /etc/NetworkManager/NetworkManager.conf el siguiente texto.

[ifupdown]
managed=false