Hacer un Access Point o Wireless Router con una tarjeta Wifi

De enunpimpam
Revisión del 21:43 22 abr 2020 de Nacho (discusión | contribuciones) (1 revisión importada)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Cuantas veces se ha querido compartir internet sin tener que hacer un tendido de red y no se dispone tampoco un wireless router pero gracias a hostapd, un demonio que permite poner muchas tarjetas wifi en modo master permite actuar a la tarjeta wifi como un Access Point

hostapd Permite crear un AP con conexión incluso encriptada en seguridad WPA2, el alcance de señal viene dado por el que posea el dispositivo. Para GNU/Linux soporta todos los dispositivos cuyos módulos de kernel sean dependientes del driver mac80211. Para saber que nuestra tarjeta depende de este driver se debe poner en la consola:

sudo su
lsmod |grep mac80211

Y si se obtiene algo parecido a esto:

mac80211 154480 1 ath9k

cfg80211 119060 3 ath9k,mac80211,ath

Perfecto nuestra tarjeta wifi tiene soporte

Identificar el modelo de la tarjeta wifi

Escribimos en un terminal:

lspci

03:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01)

Instalar paquetes

Una vez que se sabemos que nuestro dispositivo es dependiente del driver mac80211 instalamos los paquetes necesarios:

sudo apt-get install firestarter dhcp3-server hostapd bridge-utils wireless-tools
 

Reiniciamos el equipo

Debido a que hostapd lo requiere para cargar módulos en el kernel.

Luego procedemos a editar los archivos de configuración necesarios.

sudo gedit /etc/network/interfaces

Este archivo nos permite definir un dispositivo que actua como puente o switch virtual con una IP por defecto que será para asignar las IPs dinámicas en la red, sea LAN o WLAN, para ello editamos y dejamos de la siguiente manera:

# The loopback network interface
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
address 192.168.100.1
network 192.168.100.0
netmask 255.255.255.0
broadcast 192.168.100.255
bridge-ports wlan0 eth0

Si se desea solo compartir por el dispositivo wifi se debe dejar así:

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0
iface wlan0 inet static
address 192.168.100.1
network 192.168.100.0
netmask 255.255.255.0
broadcast 192.168.100.255

Reiniciamos el demonio para que la configuración tenga efecto:

sudo /etc/init.d/networking restart

Y verificamos con

ifconfig
brctl show

Si se desea solo compartir por el dispositivo wifi se debe comprobar así:

ifconfig wlan0

Configuramos el servicio DHCP

sudo gedit /etc/default/dhcp3-server

Este archivo nos permitirá definir que interfaz es la que será utilizada para asignar las direcciones IP. Modificamos la siguiente línea:

INTERFACES="br0"

Si se desea solo compartir por el dispositivo wifi se debe dejar así:

INTERFACES="wlan0"

Definir el rango de DHCP

sudo gedit /etc/dhcp3/dhcpd.conf

Este archivo nos permitirá definir el rango de IPs y los parámetros de red de cada cliente que se conecte a la LAN o WLAN, para ello editamos y dejamos de la siguiente manera:

DHCP configuration
ddns-update-style interim;
ignore client-updates;

subnet 192.168.100.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option domain-name-servers 208.67.222.222, 208.67.220.220;
option ip-forwarding on;
range dynamic-bootp 192.168.100.10 192.168.100.15;
default-lease-time 21600;
max-lease-time 43200;
}

NOTA: El domain-name-servers debe tener las IPs de DNS de su ISP separado por comas, la manera mas facil de ver cuales son los DNS del ISP es conectarse al internet y revisar el archivo /etc/resolv.conf, los DNS son aquellas IPs después de la palabra nameserver, en el ejemplo hemos colocado los DNS de Opendns.com

Reiniciamos el demonio para que la configuración tenga efecto:

/etc/init.d/dhcp3-server restart

Habilitar el Kernel

Necesitamos habilitar el kernel para que los equipos se conecten a Internet mediante nosotros

sudo gedit /etc/sysctl.conf

Editamos y activamos lo siguiente:

net.ipv4.conf.forwarding=1

Usar Firestarter

Firestarter es una aplicación que nos permite compartir Internet

Se debe estar conectado a Internet. Sea que desee compartir Internet tanto para la LAN como para WLAN o solo por WLAN es necesario que se tenga ya configurado el caso correspondiente con el paso de nano /etc/network/interfaces para proseguir con firestarter.

Para ejecutar firestarter en consola se debe poner lo siguiente:

sudo firestarter

Si es la primera vez se ejecuta, se verá un Asistente que se explicará a continuación, si no es ese el caso, en Cortafuegos - Ejecutar Asistente se halla el mismo.

Damos clic en Adelante. Seleccionamos el dispositivo de salida a Internet, en este caso ppp0. Marcamos los checkbox. Damos clic en Adelante. Activamos el checkbox. Seleccionamos el dispositivo de área local, br0 o wlan0, según sea el caso. Damos clic en Adelante. Damos clic en Guardar. A continuación se debe dirigir a Editar -> Preferencias, en la nueva ventana se debe dirigir a Cortafuegos -> Configuraciones de red y activar el checkbox Activar DHCP para la red local. Damos clic en Detalles del servidor DHCP, se marca en Crear una configuración DHCP nueva y en IP mas baja colocamos una IP mayor a 192.168.0.0 y en IP mas alta colocamos una IP menor a 192.168.0.255. Damos clic en Aceptar. Detenemos e iniciamos Firestarter y continuamos este Como.

sudo gedit /etc/default/hostapd

Este archivo nos permite establecer si queremos que hostapd funcione como demonio y que archivo de configuración debe tomar para correr.

Editamos y activamos lo siguiente:

RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"
 
sudo gedit /etc/hostapd/hostapd.conf

El archivo por defecto incluye mucha documentación importante acerca de si mismo. Aquí se define los parámetros de la red WLAN que crearemos.

La configuración ejemplo con WPA2 es:

interface=wlan0
driver=nl80211
bridge=br0
hw_mode=g
channel=1
ssid=mac80211 test
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_passphrase=12345678

Si se desea dejar la conexión abierta puede hacerse así:

interface=wlan0
driver=nl80211
bridge=br0
hw_mode=g
channel=1
ssid=mac80211 test

Si se desea solo compartir por el dispositivo wifi debe quitarse la línea bridge=br0 por ser un parámetro únicamente en caso de que el dispositivo wifi sea parte de un bridge.

Reiniciamos el demonio para que la configuración tenga efecto:

/etc/init.d/hostapd restart 

Una vez terminado se ejecuta lo siguiente:

sudo iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0 -j MASQUERADE

Tomando en cuenta que ppp0 es el dispositivo que se conecta a Internet y que 192.168.100.0 es la red tanto del bridge como del DHCP server.