El tráfico no se reenvía a través de NAT

El tráfico no se reenvía a través de NAT

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)

información relacionada