Вы находитесь на странице: 1из 10

Creando un Access Point

en linux compatible con


Ubuntu 13.10, 13.04, 12.10,
12.04...
Para crear y configurar un AP(en otros casos HotSpot, WDS, SoftAP, WiFi, etc. Algo como lo
que hace Connectify para Windows.), necesitamos lo siguiente.
Requisitos y Pasos:
1. Tarjeta inalmbrica con soporte(Master Mode). En mi caso wlan0,
2. Conexin a internet( Si la quieres compartir). En mi caso wlan1, otros podran ser eth0
o ppp0.
3. Instalar hostapd e isc-dhcp-server. Y configurar.
4. Configurar inicio automtico.

VERIFICANDO EL SOPORTE DE LA TARJETA


El primer paso es asegurarnos de que el driver de nuestra tarjeta inalmbrica que usaremos
como AP es compatible con la funcionalidad.

Abrimos una terminal con Ctrl + Alt + T


Ejecutar:
# ifconfig
Para visualizar cual o cuales tarjetas tenemos instaladas, en mi caso son 3, eth0, wlan0 y
wlan1. y Despus...
Instalar iw si es necesario...
# sudo apt-get install iw

Y ejecutar:
# iw dev
aparecer algo similar a esto:
phy#1
Interface wlan1
ifindex 4
type managed
phy#0
Interface mon.wlan0
ifindex 10
type monitor
Interface wlan0
ifindex 3
type AP
Con esto sabemos que phy0 apunta a wlan0 y que phy1 apunta a wlan1.
Ejecutamos:
# iw list
Y ahora verificamos las lneas donde dice:
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* P2P-client
* P2P-GO
Tanto para phy0 como para phy1 o para las que tengas instaladas, si aparece AP como en
el ejemplo de arriba, quiere decir que esa tarjeta soporta el modo AP(Master Mode) que
utilizaremos. De lo contrario no podrs continuar, te recomiendo estos enlaces para estudiar
ms el tema de los drivers.
https://help.ubuntu.com/community/WifiDocs/MasterMode
http://linuxwireless.org/en/developers/Documentation/mac80211

INSTALAR hostapd e isc-dhcp-server


https://apps.ubuntu.com/cat/applications/hostapd/
https://apps.ubuntu.com/cat/applications/isc-dhcp-server/
Ejecutamos:
# sudo apt-get install hostapd isc-dhcp-server
Con esto instalaremos los dos programas necesarios, y ahora vamos a configurarlos.
Ejecutamos:
# sudo gedit /etc/hostapd/hostapd.conf
Con esto nos abrira el editor de textos con privilegios y con el archivo hostapd.conf que se
encuentra en /etc/hostapd/hostapd.conf y copiamos el texto siguiente, haciendo los cambios
correspondientes:
# Establece la interfaz wifi a usar como AP, es wlan0 en la mayora de los casos.
interface=wlan0
# Driver a utilizar, nl80211 funciona en la mayora de los casos.
driver=nl80211
# Establece el SSID del punto de acceso virtual wifi.
ssid=NombreDeMiRed
# Define el modo del wifi, depende de los dispositivos que va a utilizar.
# Puede ser a, b, g, n. Configuracin para compatibilidad con versiones anteriores asegura g.
hw_mode=g
# Establece el canal de tu wifi.
channel=6
# macaddr_acl establece las opciones de filtrado de direcciones MAC.
# 0 significa "aceptar a menos que se encuentre en la lista de negacin".
macaddr_acl=0
# Ajustar ignore_broadcast_ssid a 1 deshabilitar la difusin de SSID.
ignore_broadcast_ssid=0
# Establece algoritmo de autenticacin.
# 1 - slo la autenticacin de sistema abierto.
# 2 - la autenticacin de sistema abierto y autenticacin de clave compartida.
auth_algs=1
# # # # # Establece la autenticacin WPA y WPA2 # # # # #
# Conjuntos de opciones WPA que la aplicacin para usar.
# 1 - slo WPA.
# 2 - slo WPA2.
# 3 - Ambas.
wpa=3
# Establece la contrasea WPA requerido por los clientes para autenticarse en la red.

wpa_passphrase=MiContrase@
# Define la gestin de claves WPA.
wpa_key_mgmt=WPA-PSK
# Define el tipo de cifrado utilizado por WPA.
wpa_pairwise=TKIP
# Define el tipo de cifrado utilizado por WPA2.
rsn_pairwise=CCMP
Y si lo quieres sin comentarios sera as:
interface=wlan0
driver=nl80211
ssid=NombreDeMiRed
hw_mode=g
channel=6
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=3
wpa_passphrase=MiContrase@
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Guardamos el archivo /etc/hostapd/hostapd.conf y cerramos el editor de textos.
Para probar podemos ejecutar el siguiente comando:
# sudo hostapd /etc/hostapd/hostapd.conf
Con esto ya deberamos de poder visualizar la red desde algn otro equipo mvil que quisiera
conectarse a nuestra red inalmbrica. Aunque ya podemos ver la red necesitamos de isc-dhcpserver para asignar una direccin ip a los equipos que se conecten. Con Ctrl + C paramos el
servicio y continuamos.
Ejecutamos:
# sudo gedit /etc/dhcp/dhcpd.conf
Con esto nos abrira el editor de textos con privilegios y con el archivo dhcpd.conf que se
encuentra en /etc/dhcp/dhcpd.conf y buscamos las lneas donde aparece algo como el
siguiente texto y colocamos un # al principio de cada lnea para que quede algo as:
# option definitions common to all supported networks
#option domain-name example.org;
#option domain-name-servers ns1.example.org, ns2.example.org;

#default-lease-time 600;
#max-lease-time 7200;
Ahora nos colocamos hasta el final del archivo y colocamos lo siguiente de acuerdo a la
configuracin que quieras para tu red:
# Mi definicin de NombreDeMiRed
subnet 10.0.0.0 netmask 255.255.255.0 {
# Puerta de enlace predeterminada.
option routers 10.0.0.1;
# Direccin del Broadcast.
option broadcast-address 10.0.0.255;
# Rango de IPs. Hasta cuntos equipos se conectaran?. Ejem: 253.
range 10.0.0.2 10.0.0.254;
# Configurar los DNS para la conexin a internet. Por los regular nuestra computadora
# esta conectada a internet por medio de la otra tarjeta a un modem que suele tener la
# direccin 192.168.1.254, aunque tambin puedes usar DNS pblicos como los de
# Google(8.8.8.8, 8.8.4.4). Pero depende de ellos la rapidez con que nos conectamos a
# internet. Tambin puedes consultarlo en la info de tu conexin actual a internet.
option domain-name-servers 10.0.0.1, 192.168.1.254, 8.8.8.8;
#Nombre de Dominio que queremos para nuestra nueva red.
option domain-name MiNetwok;
}

Guardamos el archivo /etc/dhcp/dhcpd.conf y cerramos el editor de textos.


Ejecutamos:
# sudo gedit /etc/network/interfaces
Con esto nos abrira el editor de textos con privilegios y con el archivo interfaces que se
encuentra en /etc/network/interfaces y copiamos al principio lo siguiente de acuerdo con
nuestras propias preferencias:
# Cambiar wlan0 por el que vayamos a usar como AP.
auto wlan0
iface wlan0 inet static
address 10.0.0.1

netmask 255.255.255.0
Guardamos el archivo /etc/network/interfaces y cerramos el editor de textos.
Ejecutamos:
# sudo gedit /etc/default/isc-dhcp-server
Con esto nos abrira el editor de textos con privilegios y con el archivo isc-dhcp-server que se
encuentra en /etc/default/isc-dhcp-server y modificamos lo siguiente:
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
# Cambiar wlan0 por el que vayamos a usar como AP.
INTERFACES="wlan0"
Guardamos el archivo /etc/default/isc-dhcp-server y cerramos el editor de textos.
Reiniciamos los servicios con los siguientes comandos:
# sudo start isc-dhcp-server
# sudo hostapd /etc/hostapd/hostapd.conf
O en su defecto reiniciamos el equipo.
En este punto, los equipos ya deben poder autenticarse y obtener una direccin IP desde
nuestro AP algo as como 10.0.0.2 para el primero, 10.0.0.3 para el segundo, etc. Solo falta
compartir nuestra conexin a internet y para ello hacemos lo siguiente.
Ejecutamos:
# sudo echo 1| sudo tee /proc/sys/net/ipv4/ip_forward
Con esto modificamos el valor de 0 a 1 en la variable ip_forward. Podemos comprobar que
se haya realizado correctamente este comando y cualquier otro ejecutando: # echo $?, si nos
devuelve 0, el ltimo cdigo se ha ejecutado correctamente, si nos devuelve un 1, es que algo
ha salido mal.
Ejecutamos:
# sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/1 -o wlan1 -j MASQUERADE
Donde el valor wlan1 lo modificamos por la interfaz que actualmente tiene la conexin
a internet en nuestra red. El algunos otros casos puede ser algo como eth0. Tambin es
necesario, cambiar el valor 10.0.0.0/1 por los de tu configuracin ayudandose de alguna
calculadora para subnet.

En este punto los equipos conectados deberan ser capaces de navegar por internet mediante
tu AP. Comprubalo!!
Ahora siempre que queramos iniciar el servicio del AP tendremos que ejecutar los siguientes
comandos cada que iniciemos el equipo:
# sudo start isc-dhcp-server
# sudo echo 1| sudo tee /proc/sys/net/ipv4/ip_forward
# sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/1 -o wlan1 -j MASQUERADE
# sudo hostapd /etc/hostapd/hostapd.conf

Pero tambin existe la posibilidad de hacer que inicie de manera automtica.

INICIO AUTOMTICO DE NUESTRO SOFT-AP HOTSPOT


WIFI O COMO LO USEN ...
SIN FIREWALL
Ubuntu viene con un firewall instalado aunque deshabilitado por defecto, si no tienes un
firewall activado puedes haces lo siguiente.
Ejecutamos:
# sudo gedit /etc/rc.local
Con esto nos abrira el editor de textos con privilegios y con el archivo rc.local que se
encuentra en /etc/rc.local donde quitaremos la almohadilla # a la lnea con el texto !/bin/sh e esto habilitar el script, despus colocamos lo siguiente de acuerdo con la configuracin de
tu red y antes del cdigo exit 0 para que quede algo as:
# By default this script does nothing.
# Esto iniciar mi AP automticamente.
start isc-dhcp-server
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.0.0.0/1 -o wlan1 -j MASQUERADE
hostapd /etc/hostapd/hostapd.conf -B -dd
exit 0

Guardamos el archivo /etc/rc.local y cerramos el editor de textos.


Reiniciamos el equipo y verificamos que todo inicie automticamente.

CON FIREWALL
Adems del paso SIN FIREWALL tendramos que sumarle los siguientes pasos y es que Ubuntu
trae por defecto ufw que es una interfaz de consola que facilita la administracin de reglas
para el firewall iptables. Tal vez sea tu caso y para averiguarlo hacemos lo siguiente.
Ejecutamos:

# ufw status
Con ello sabremos si esta activo o no.
# ufw enable para habilitar y # ufw disable para deshabilitar.
Para el inicio automtico de nuestro AP y con ufw activo debemos hacer lo siguiente:
Ejecutamos:
# sudo gedit /etc/default/ufw
Con esto nos abrira el editor de textos con privilegios y con el archivo ufw que se
encuentra en /etc/default/ufw y modificamos el valor de la lnea donde aparece
DEFAULT_FORWARD_POLICY="DROP" para que quede as:
DEFAULT_FORWARD_POLICY="ACCEPT"
Guardamos el archivo /etc/default/ufw y cerramos el editor de textos.
Ejecutamos:
# sudo gedit /etc/ufw/sysctl.conf
Con esto nos abrira el editor de textos con privilegios y con el archivo sysctl.conf que se
encuentra en /etc/ufw/sysctl.conf y quitamos la almohadilla # de lnea que contiene el cdigo
para que quede as:
# Uncomment this to allow this host to route packets between interfaces
net/ipv4/ip_forward=1
#net/ipv6/conf/default/forwarding=1
#net/ipv6/conf/all/forwarding=1
Guardamos el archivo /etc/ufw/sysctl.conf y cerramos el editor de textos.

Ejecutamos:
# sudo gedit /etc/ufw/before.rules
Con esto nos abrira el editor de textos con privilegios y con el archivo before.rules que se
encuentra en /etc/ufw/before.rules y colocamos el siguiente cdigo. Recuerda cambiar los
valores de acuerdo a la configuracin de tu red, en la parte de hasta arriba del archivo, justo
despus de los comentarios que empiezan con # agregamos:
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from wlan0 through wlan1.
-A POSTROUTING -s 10.0.0.0/1 -o wlan1 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
Guardamos el archivo /etc/ufw/before.rules y cerramos el editor de textos.
Reiniciamos el equipo y verificamos que todo inicie automticamente.
La regla que hemos usado a travs de la gua -A POSTROUTING -s 10.0.0.0/1 -o wlan1 -j
MASQUERADE podemos ajustarla de acuerdo a nestras necesidades de seguridad, una opcin
sera complicarla de tal manera que quede algo parecido a:
iptables -A FORWARD -s 10.0.0.1/1 -o wlan1 -j ACCEPT
iptables -A FORWARD -d 10.0.0.1/1 -m state \--state ESTABLISHED,RELATED -i wlan1 -j ACCEPT
Esto nos permitira llevar todo el trfico de nuestra subred hacia internet de manera ms
limpia y segura.
Bueno pero esto ya es tema de SEGURIDAD,
Espero que esta gua te haya sido de utilidad.
By Josu Saldvar
Referencias y Documentacin
https://help.ubuntu.com/community/WifiDocs/MasterMode
http://linuxwireless.org/en/users/Documentation/hostapd
http://askubuntu.com/questions/180733/how-to-setup-a-wi-fi-hotspot-access-point-mode
http://superuser.com/questions/427676/configure-nat-on-router-pc
https://help.ubuntu.com/12.04/serverguide/firewall.html
https://help.ubuntu.com/community/IptablesHowTo

https://help.ubuntu.com/12.04/serverguide/security.html

10

Вам также может понравиться