Tengo un enrutador que proporciona acceso a Internet mediante NAT y una caja cliente Linux (A) que está conectada a este enrutador en eth0.
Esta máquina Linux también tiene una interfaz wlan, wlan0; Lo que me gustaría es que este cuadro anuncie una red inalámbrica usando esta interfaz, entregando direcciones IP y reenviando el tráfico de esta red a la otra red, proporcionada por el enrutador de puerta de enlace.
Hasta ahora, tengo hostapd y un servidor dhcp funcionando; una segunda caja Linux (B) puede conectarse a esta nueva red inalámbrica y obtener una dirección IP. Sin embargo, B no puede hacer ping fuera de la subred, resolver direcciones, etc.
Salida ifconfig de B:
wlan2 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.42.10 Bcast:192.168.42.255 Mask:255.255.255.0
inet6 addr: fe80::12fe:edff:fe1b:2bec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:177 errors:0 dropped:0 overruns:0 frame:0
TX packets:757 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26221 (26.2 KB) TX bytes:132884 (132.8 KB)
Salida ifconfig de A:
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.0.12 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:369 errors:0 dropped:0 overruns:0 frame:0
TX packets:267 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31272 (30.5 KiB) TX bytes:33861 (33.0 KiB)
wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.42.1 Bcast:192.168.42.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:79 errors:0 dropped:199 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18114 (17.6 KiB) TX bytes:6874 (6.7 KiB)
Salida de iptables -t nat -S en A:
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE
Salida de iptables -S en A:
-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
¡Cualquier idea será profundamente apreciada!
EDITAR:
ruta -n salida de A:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.42.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
Una ruta de seguimiento tomada de B:
$ sudo traceroute -i wlan2 8.8.8.8
[sudo] password for eab:
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
etc.
EDITAR:
Puedo acceder exitosamente a Internet cuando me conecto a la nueva red inalámbrica producida por A desde otro dispositivo, C. B tiene dos NIC, ambas inalámbricas, y wlan2 está conectado a esta nueva red inalámbrica. No puedo hacer ping:
salida de B:
$ ping -I wlan2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.42.10 wlan2: 56(84) bytes of data.
From 192.168.42.10 icmp_seq=1 Destination Host Unreachable
From 192.168.42.10 icmp_seq=2 Destination Host Unreachable
From 192.168.42.10 icmp_seq=3 Destination Host Unreachable
EDITAR:
Al ejecutar "route -n" en B se produjo el siguiente resultado:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
192.168.42.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan2
RESOLUCIÓN: La ejecución de "sudo route add default gw 192.168.42.1 wlan2" solucionó los problemas de conectividad. Resulta que Linux sólo permite que haya una puerta de enlace predeterminada, incluso si tiene varias NIC activas conectadas a varias redes. Al ejecutar el comando anterior se produce lo siguiente:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.42.1 0.0.0.0 UG 0 0 0 wlan2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.42.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan2
Respuesta1
Sería bueno contar con algunos detalles más, incluido hacer una "ruta -n" en cada cuadro, así como un traceroute desde "b" hasta algún lugar externo. También,
Dicho esto, sospecho que tu problema es que no has habilitado el reenvío de paquetes en el enrutador.
Ejecute "cat /proc/sys/net/ipv4/ip_forward" en A; si este valor es "0", ese podría ser [uno de sus] problemas. Puede solucionar este problema temporalmente emitiendo el comando "echo 1 > /proc/sys/net/ipv4/ip_forward" - y permanentemente agregando/cambiando la línea apropiada en /etc/sysctl.conf a "net.ipv4.ip_forward = 1 " (Utilice sysctl -p /etc/sysctl.conf para "recargar" este archivo)