El 22/03/17 a las 12:49, JAP escribió:
El 22/03/17 a las 00:16, luisededios escribió:
Saludos a todos,
Estoy retomando un tema que tengo pendiente desde hace algún
tiempo
porque aun no lo he logrado poner en marcha. Me refiero a la
implementación de un AP wifi en una laptop DELL a la cual le he
instalado dos mini tarjetas wifi, wlan0 y wlan2.
Hasta donde he llegado he logrado que el AP montado sobre wlan0
conecte
a otros dispositivos móviles y también que la laptop se conecte
a la
red(un móvil con zona wifi y datos móviles activados) mediante
wlan2,
pero parece que tengo problemas con el enrutamiento ip desde
wlan0 y
wlan2 en la propia laptop pues los móviles que se conectan al AP
de la
laptop no logran navegar. Desde la laptop si puedo navegar, pero
desde
los móviles conectados al AP de la laptop no logro navegar.
La ip del móvil con zona wifi y datos móviles activados es
192.168.43.1,
y la laptop toma la 192.168.43.156. Luego, el AP de la laptop
tiene la
ip fija 192.168.42.1 y asigna bien ips al resto de móviles que
se conectan.
Repito. Desde la laptop puedo navegar correctamente pero desde
los
móviles conectados a ella no logro navegar.
Muestro la condiguración que he heco por si algún experto pueda
mostrarme el error que estoy comentiendo.
1) Configurando el adaptador wifi(wlan0) con ip estática.
/etc/network/interfaces
allow-hostplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.1
2) Instalación y conf del server DHCP.
apt-get install isc-dhcp-server
/etc/dhcp/dhcpd.conf
# option domain-name
# option domain-name-server
authoritative;
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;
}
En /etc/default/isc-dhcp-server
DHCP_CONF=/etc/dhcp/dhcpd.conf
INTERFACES="wlan0"
3) Instalar y conf de hostapd.
interfaces=wlan0
driver=nl80211
ssid=test
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
#wpa=2 #todo lo que sigue si pongo contraseña
al AP
#wpa_passphrase=secret
#wpa_key_mgmt=WPA-PSK
#wpa_pairwise=TKIP
#rsn_pairwise=CCMP
En /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
4) Configurando el enrutamiento IP entre wlan0 y wlan2.
En /etc/sysctl.conf
net.ipv4.ip_forward=1
ejecutar,
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Para implementar un router en el AP, ejecutar,
iptables -t nat -A POSTROUTING -o wlan2 -j MASQUERADE
iptables -A FORWARD -i wlan2 -o wlan0 -m state --state
RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o wlan2 -j ACCEPT
Para salvar las tablas de ruteo en /etc/iptables.ipv4.nat,
ejecutar,
sh -c "iptables-save > /etc/iptables.ipv4.nat"
Adicionar, al final del fichero /etc/network/interfaces, lo
siguiente
para restaurar las tablas de ruteo cuando se inicia el AP.
pre-up iptables-restore < /etc/iptables.ipv4.nat
HASTA AQUI
A mi juicio, el problema lo tengo en las sentencias de iptables.
Este procedimiento lo he tomado desde un tutorial que encontré,
en cual
se enrutaba desde eth0 hasta wlan0 y yo lo ajusté sustituyendo
eth0 por
wlan2 pues tengo dos mini tarjeta wifi instaladas.
Anticipadamente, reciban mis agradecimientos.
Te estás complicando la vida en extremo, y estás cargando cosara
"raras" en las direcciones de red
Si no tienes una restricción de acceso a la red en wlan2, ya sea
por MAC, nombre de dominio o alguna otra cosa, y que pueda servir
como servidora DNS y DHCP a cualquier conexión, lo que debes hacer
es un puente:
https://wiki.debian.org/es/Compartir_red_fisica_con_WiFi
Ahora bien, si el proveedor de red te ha puesto trabas, debes
configurarte como servidor y enmascarar todo a través de tu
computadora.
#/etc/network/interfaces
allow-hostplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
network 192.168.42.0
broadcast 192.168.42.255
post-up /etc/init.d/hostapd force-reload --> ES NECESARIO
REINICIAR HOSTAPD LUEGO DE CONFIGURAR EL AP
#/etc/dhcp/dhcpd.conf
ddns-update-style none;
option domain-name "local";
option domain-name-servers 192.168.42.1;
authoritative;
log-facility local7;
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.20;---> ACÁ VA EL LÍMITE DE
CONEXIONES QUE QUIERAS PONER
option routers 192.168.42.1;
}
#/etc/default/isc-dhcp-server
INTERFACES="wlan0"
hostapd está bien.
Ahora, no te embrolles tanto con iptables.
Edita (o crea) el archivo /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the
execution
# bits.
#
# By default this script does nothing.
# Configuración IPTables
# Eliminar todas las reglas
iptables -F
iptables -t nat -F
iptables -t mangle -F
# Configurar NAT
iptables -t nat -A POSTROUTING -o wlan2 -j MASQUERADE
iptables -A FORWARD -i wlan2 -o wlan0 -m state --state
RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o wlan2 -j ACCEPT
# Mensaje de ejecución
echo "OK - rc.local ejecutado."
exit 0
Suerte
JAP
Yo tengo creado un puente sin problemas, no es
con debian, si no con openwrt (es por temas de hardware), pero
viene a ser lo mismo.
Creo que uno de los problemas que te puedes encontrar es con la
tarjeta wifi que uses, creo recordar que había tarjetas que no
soportaban hacer puentes y había que montar un pseudo-puente.
De todas maneras, no creo que un puente sirva en tu problema, si
lo he entendido bien tu tienes un móvil que conectas a un
ordenador por una wifi y de este conectas otros equipos por otra
wifi, en este caso no sirve el puente.
Vista por lo alto tu configuración del primer correo parece
correcta, por lo que deberemos depurarla.
1º con iptables límpialo y deja solo el enmarascamiento, cuando
funcione ya habrá tiempo de poner reglas de filtrado si quieres
seguridad:
iptables -F
iptables -t nat -F
iptables -t mangle
-F
iptables -t nat -A POSTROUTING -o wlan2 -j
MASQUERADE
2º Comprueba que no tienes reglas extrañas:
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
$ sudo iptables -L -t mangle
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
3º Como no lo pones, imagino que en el ordenador la ip de salida
se la da el teléfono de forma dinámica, asegúrate de que tiene
las rutas bien, debes tener algo como (es un ejemplo inventado,
por lo que puede tener algo distinto:
$ sudo route
Password:
Kernel IP routing table
Destination Gateway Genmask Flags Metric
Ref Use Iface
default 192.168.43.1 0.0.0.0 UG 1024
0 0 wlan0
192.168.43.0 * 255.255.255.0 UG 0
0 0 wlan0
192.168.42.0
* 255.255.255.0 UG 0 0 0 wlan1
4º Verifica las ip:
$ ip addr
5º Verifica conectividades:
desde el ordenador
ping 192.168.43.1
ping 192.168.42.[ip de un equipò]
ping 8.8.8.8
desde un equipo
ping 192.168.42.1
ping 192.168.43.1
ping 8.8.8.8
si falla algún ping prueba a hacer una traza
$ sudo traceroute 8.8.8.8
--
--
Antonio
Trujillo Carmona
Técnico
de redes y sistemas.
Subdirección
de Tecnologías de la Información y Comunicaciones
Servicio
Andaluz de Salud. Consejería de Salud de la Junta de
Andalucía
antonio.trujillo.sspa@juntadeandalucia.es
Tel.
+34 670947670 747670)
|