¿Te gustaría usar tu Raspberry Pi como un punto de acceso WiFi? Si quieres usar una configuración inalámbrica y no dispones de router WiFi, o si quieres ensanchar la cobertura en un punto donde tengas acceso sólo a través de Ethernet. O quizás el primer paso para acceder a la Deep Web (internet profunda, internet invisible o internet oculta). Entonces este es tu tutorial.

Primero debemos localizar nuestra tarjeta WiFi. Con:

ifconfig -a

veremos todas las conexiones. Una de ellas será nuestra WiFi, normalmente será wlan0. Asegúrate de que sea esa o ajusta el código siguiente y cambia wlan0 por tu tarjeta.

root@orangepi2mini:~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr ea:3b:30:d7:50:41
          inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0
......

wlan0     Link encap:Ethernet  HWaddr 58:63:56:cd:4c:23
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)				

Comenzamos por los imprescindibles:

sudo apt-get update
sudo apt-get upgrade

Ahora instalamos el software que actuará como el 'hostap' (punto de acceso del host) y un iptables manager:

sudo apt-get install hostapd isc-dhcp-server
sudo apt-get install iptables-persistent

Pulsa Enter para validar las 2 siguientes pantallas para salvar las reglas de las iptables para IPv4 e IPv6.

En los siguientes pasos vamos a configurar el servidor de DHCP, siglas en inglés de Dynamic Host Configuration Protocol, en español "protocolo de configuración dinámica de host", que es un servidor que usa protocolo de red de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van quedando libres. Editaremos el archivo /etc/dhcp/dhcpd.conf para que las conexiones WiFi entrantes obtengan automáticamente direcciones IP, DNS, etc. Ejecuta este comando para editar el archivo:

sudo nano /etc/dhcp/dhcpd.conf

Encuentra las siguientes líneas y coméntalas con el símbolo # para que no tengan efecto:

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

quedando de la siguiente forma:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Ahora busca las siguientes líneas

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

quita el símbolo # de la línea authoritative; para que SI se ejecute, quedando:

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

Y añade las siguientes líneas al final del archivo que configuran nuestra red:

subnet 192.168.42.0 netmask 255.255.255.0 {
	range 192.168.42.10 192.168.42.50;
	option broadcast-address 192.168.42.255;
	option routers 192.168.42.1;
	default-lease-time 600;
	max-lease-time 7200;
	option domain-name "local";
	option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Guarda el fichero y sal del editor. Vamos a editar otro archivo. Ejecuta:

sudo nano /etc/default/isc-dhcp-server

y busca la línea donde pone INTERFACES="" y cámbialo por el nombre de tu adaptador WiFi:

INTERFACES="wlan0"

Lo siguiente es asignar una IP estática a la conexión WiFi, así que lo primero es desactivarla si estaba arrancada. Si no lo estaba, tampoco pasa nada por ejecutar la siguiente instrucción, así que vamos a lanzarla de todas maneras:

sudo ifdown wlan0

A continuación, configuraremos la conexión wlan0 para que sea estática y entrante. Para editar el archivo, ejecuta:

sudo nano /etc/network/interfaces

Encuentra la línea donde pone auto wlan0 y añade el símbolo # para que esa línea no se ejecute. Hazlo en todas la líneas que se refieran a wlan0 porque necesitamos actualizarlas. Dependiendo de la distribución, habrá más o menos referencias así que no puedo ser más explícito. Ahora añade al final:

allow-hotplug wlan0
iface wlan0 inet static
  address 192.168.42.1
  netmask 255.255.255.0

Debe quedarte más o menos así:

Asigna manualmente una IP fija o estática al adaptador WiFi con la siguiente línea:

sudo ifconfig wlan0 192.168.42.1

Ahora tenemos que configurar los detalles del punto de acceso. Crearemos una red protegida con contraseña para mayor seguridad. Crea un nuevo fichero con la siguiente línea:

nano /etc/hostapd/hostapd.conf

y pega el siguiente contenido para crear y configurar esa red:

interface=wlan0
#driver=rtl871xdrv
ssid=Onion Pi
country_code=ES
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=pa22w0rd_extra_d1f1c1l
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1

Algunas observaciones. Como puedes ver hay una línea comentada que hace referencia a un driver. Este es el driver del adaptador WiFi. Con mi Orange Pi 2 no lo he necesitado, pero si usas un dongle u otra tarjeta, quizás lo necesites. El que he usado aquí, el rtl871xdrv es genérico, pon el tuyo en caso de necesitarlo. En ssid puedes poner lo que quieras, es el nombre de tu nueva red WiFi. En wpa_passphrase=pa22w0rd_extra_d1f1c1l pon la tuya propia. Guarda y sal. Para que se pueda ejecutar este archivo, tenemos que configurar lo siguiente. Ejecuta:

sudo nano /etc/default/hostapd

y encuentra la línea donde pone #DAEMON_CONF="" y cámbialo por:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Recuerda quitar el símbolo # porque necesitamos que esa línea se ejecute. Guarda y sal. Venga, que ya estamos acabando. Ejecuta:

sudo nano /etc/init.d/hostapd

y encuentra la línea DAEMON_CONF= para decirle que la configuración que tiene que usar es la que hemos creado en los pasos anteriores:

DAEMON_CONF=/etc/hostapd/hostapd.conf

Necesitamos configurar NAT para que, al arrancar, permita a uno o a varios clientes conectarse al WiFi y disponer de todos los datos a través de la IP única de Ethernet. Ejecuta:

sudo nano /etc/sysctl.conf

Y añade la siguiente línea al final del archivo:

net.ipv4.ip_forward=1

Ejecuta las siguientes líneas para ejecutarlo inmediatamente y que no sea necesario reiniciar y para crear la traducción de red entre el puerto Ethernet eth0 y el puerto wifi wlan0:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Si quieres ver las tablas usa:

sudo iptables -t nat -S
sudo iptables -S

Te debe dar algo así:

root@orangepi2mini:~# sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i wlan0 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 22
-A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -i wlan0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
-A POSTROUTING -o eth0 -j MASQUERADE
root@orangepi2mini:~# sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT

Para que toda la magia se arranque al iniciar con la herramienta iptables-persistent que instalamos al principio, ejecuta lo siguiente:

sudo sh -c "iptables-save > /etc/iptables/rules.v4"

Y ya por último, para ver que todo funciona correctamente:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

Esto ejecuta hostapd manualmente con nuestro archivo de configuración.

root@orangepi2mini:~# sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
Configuration file: /etc/hostapd/hostapd.conf
Using interface wlan0 with hwaddr 58:63:56:cd:4c:23 and ssid "Onion Pi"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

Una última advertencia. Tras ejecutar esta línea te quedarás sin PROMPT, es decir, este terminal quedará inutilizado, pero esto sólo te pasará esta vez, el siguiente arranque todo será automático. Lo digo por que la primera vez yo me quedé esperando una respuesta que nunca llegó... Ahora puedes comprobar con otro equipo wifi que ves tu SSID y puedes conectarte a ella (recuerda la que pusiste en el archivo /etc/hostapd/hostapd.conf. En el ejemplo se llama Onion Pi). Si es así, !!has configurado correctamente el punto de acceso¡¡.

Tu punto de acceso ya funciona. Laborioso, pero fácil ¿verdad?. Espero que te haya sido de utilidad.