4. La configuración

La configuración de punto de acceso pasa por dar ciertos parámetros a la tarjeta de red y poner en marcha el demonio dhcpd(8) que acompaña a la instalación base de OpenBSD.

Hay una serie de valores que serán variables en cada instalación. Los definimos a continuación:

En cada instalación se reemplazarán estas variables por su valor.

4.1. La tarjeta de red

La tarjeta de red puede configurarse en la instalación como una tarjeta de red normal, con lo que posteriormente tendremos que añadir parámetros extra por ser una tarjeta WLAN.

4.1.1. Sin configurar en la instalación

Si no hemos configurado los parámetros básicos de la tarjeta durante la instalación del sistema, tendremos que realizar nosotros a mano los pasos que habría hecho el programa de instalación.

En primer lugar averiguamos el nombre que tiene nuestro interface wireless mediante el uso de dmesg(8). Habitualmente será wi0 si solo disponemos de una tajeta WLAN.

Creamos en /etc un fichero llamado hostname.IF, siendo IF el nombre de nuestra intreface WLAN (normalmente será hostname.wi0), con el siguiente contenido:

inet $IP $MASK NONE

Y con esto nos encontramos en el mismo punto en el que estaríamos si hubieramos configurado el interface en la instalación.

En el siguiente apartado veremos como introducir los parámetros propios de las tarjetas wireless.

4.1.2. Añadiendo parámetros WLAN

Suponiendo que el interface de nuestra tarjeta es wi0, editamos /etc/hostname.wi0, que debe contener:

inet $IP $MASK NONE

Ahora vamos a añadir los parámetros especiales de la tarjeta wireless, que son: el SSID y la configuración del modo de funcionamiento.

Editamos el fichero y lo dejamos como sigue:

inet $IP $MASK NONE nwid $SSID mediaopt hostap

El resto de parámetros de la tarjeta se deben configurar con wicontrol(8). Para ello aprovechamos que toda linea que comience por ! en el fichero de configuración se tratará como una orden a ejecutar.

Con las llamadas a wicontrol(8), el fichero queda así:

inet $IP $MASK NONE nwid $SSID mediaopt hostap
!wicontrol -t $CHAN
!wicontrol -s "$NAME"
!wicontrol -t $TX

Ahora solo quedaría reiniciar el sistema para comprobar que los cambios en la configuración son correctos. Para ello ejecutaremos ifconfig(8) y wicontrol(8) y obtendremos algo así:

# ifconfig wi0
wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:90:4b:23:89:8a
	nwid elxwifi
	powersave off
	media: IEEE802.11 DS1 hostap
	status: active
	inet 10.1.1.21 netmask 0xffffff00 broadcast 10.1.1.255
	inet6 fe80::290:4bff:fe23:898a%wi0 prefixlen 64 scopeid 0x1

# wicontrol wi0
NIC serial number:                      [ 99SA01000000 ]
Station name:                           [ blackshell ]
SSID for IBSS creation:                 [ elxwifi ]
Current netname (SSID):                 [ elxwifi ]
Desired netname (SSID):                 [ elxwifi ]
Current BSSID:                          [ 00:90:4b:23:89:8a ]
Channel list:                           [ 8191 ]
IBSS channel:                           [ 10 ]
Current channel:                        [ 10 ]
Comms quality/signal/noise:             [ 0 81 27 ]
Promiscuous mode:                       [ Off ]
Process 802.11b Frame:                  [ Off ]
Port type (1=BSS, 3=ad-hoc, 6=Host AP): [ 6 ]
MAC address:                            [ 00:90:4b:23:89:8a ]
TX rate (selection):                    [ 1 ]
TX rate (actual speed):                 [ 2 ]
Maximum data length:                    [ 2304 ]
RTS/CTS handshake threshold:            [ 2347 ]
Create IBSS:                            [ Off ]
Antenna diversity (0=auto,1=pri,2=aux): [ ]
Microwave oven robustness:              [ On ]
Roaming mode(1=firm,3=disable):         [ 1 ]
Access point density:                   [ 1 ]
Power Management:                       [ Off ]
Max sleep time:                         [ 100 ]
Intersil Prism2-based card:             [ 1 ]
Card info:                              [ PRISM2.5 ISL3874A(Mini-PCI), Firmware 1.3.6 ]
Encryption:                             [ Off ]
Encryption algorithm:                   [ Firmware WEP ]
Authentication type
(1=OpenSys, 2=Shared Key):              [ 1 ]
TX encryption key:                      [ 1 ]
Encryption keys:                        [  ][  ][  ][  ]

En el ejemplo $IP=10.1.1.21, $NET=10.1.1.0, $MASK=255.255.255.0, $SSID=elxwifi, $CHAN=10, $NAME=blackshell y $TX=1.

Como se puede apreciar en la última parte de la salida de wicontrol(8) no hemos activado el cifrado WEP.

A este respecto quiero comentar que es mejor emplear WEP que no hacerlo, aunque se ha demostrado es un método de cifrado vulnerable y puede dar una sensación de falsa seguridad, tampoco se puede decir que sea trivial romperlo y al menos nos asegurará estar a salvo de miradas indiscretas de usuarios con pocos conocimientos.

4.2. El servidor DHCP

La configuración que necesita un PA para el servidor DHCP es muy sencilla.

En primero lugar preparamos el sistema para arrancar el demonio dhcpd(8).

Para que el servidor arranque es necesario que exista el fichero /var/db/dhcpd.leases. Para ello podemos ejecutar:

# touch /var/db/dhcpd.leases
En ese fichero podremos consultar las IPs que se han asignado una vez el demonio esté funcionando.

Editamos /etc/rc.conf poniendo en el campo dhcpd_flags el valor "-q" (incluyendo las comillas).

Por último hay que indicar en /etc/dhcpd.interfaces los nombres de las interfaces que tendrá que gestionar el servidor DHCP. Si nuestra tarjeta wireless es wi0, ejecutaremos:

# echo wi0 > /etc/dhcpd.interfaces

En este punto el sistema está listo para correr el demonio dhcpd en el siguiente arranque. Ahora resta introducir la configuración de dhcpd en /etc/dhcpd.conf:

subnet $NET netmask $MASK {
	range $IP0 $IP1;
}
Donde $IP0 es la IP mínima del intervalo de IPs a repartir y $IP1 es la IP máxima de ese mismo intervalo. Por ejemplo, para $IP=10.1.1.21, $NET=10.1.1.0 y $MASK=255.255.255.0, podríamos tener:

subnet 10.1.1.0 netmask 255.255.255.0 {
	range 10.1.1.22 10.1.1.30;
}
Y eso repartiría las IPs desde la 10.1.1.22 a las 10.1.1.30, ambas incluidas.

Es importante destacar que $IP (10.1.1.21 en el ejemplo) nunca debe estar en el intervalo definido en range porque es la propia IP del punto de acceso y no debe asignarse.

Esta configuración es tremendamente sencilla y probablemente queramos ajustar un poco más el comportamiento del servidor DHCP. Para ello es aconsejable consultar la página del manual de dhcp-options(5).