Le trafic n'est pas transféré via NAT

2

J'ai un routeur qui fournit un accès Internet en utilisant NAT, et une machine cliente Linux (A) qui est connectée à ce routeur sur eth0.

Cette machine Linux a aussi une interface wlan, wlan0; Ce que j'aimerais, c'est que ce boîtier annonce un réseau sans fil utilisant cette interface, distribuant des adresses IP et transférant le trafic de ce réseau vers un autre réseau, fourni par le routeur de passerelle.

Jusqu'à présent, hostapd et un serveur DHCP fonctionnent; une deuxième machine Linux (B) peut se connecter à ce nouveau réseau sans fil et obtenir une adresse IP. Cependant, B ne peut pas envoyer de ping en dehors du sous-réseau, résoudre des adresses, etc.

La sortie 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)

La sortie de 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)

Sortie de iptables -t nat -S sur A:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

Sortie de iptables -S sur 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

Toutes les idées seraient profondément appréciées!

MODIFIER:

route -n sortie 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

Un traceroute extrait 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.

MODIFIER:

Je peux accéder avec succès à Internet lors de la connexion au nouveau réseau sans fil produit par A à partir d'un autre appareil. C. B possède deux cartes réseau, toutes deux sans fil, et wlan2 est connecté à ce nouveau réseau sans fil. Je ne peux pas cingler:

sortie 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

MODIFIER:

L'exécution de "route -n" sur B a généré le résultat suivant:

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

RESOLUTION: L'exécution de "sudo route add default gw 192.168.42.1 wlan2" a corrigé les problèmes de connectivité. Il s'avère que Linux n'autorise la présence que d'une passerelle par défaut, même si plusieurs cartes réseau sont actives et connectées à plusieurs réseaux. L'exécution de la commande ci-dessus produit les éléments suivants:

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

la source

Réponses:

0

Quelques détails supplémentaires seraient utiles, notamment un "itinéraire -n" sur chaque case, ainsi qu'un itinéraire traceroute de "b" vers un point externe. Également,

Cela dit, je suppose que votre problème est que vous n'avez pas activé le transfert de paquets sur le routeur.

Veuillez exécuter "cat / proc / sys / net / ipv4 / ip_forward" sur A - si cette valeur est "0", cela pourrait être [un de vos] problème. Vous pouvez résoudre ce problème temporairement en lançant la commande "echo 1> / proc / sys / net / ipv4 / ip_forward" - et de manière permanente en ajoutant / modifiant la ligne appropriée dans /etc/sysctl.conf en "net.ipv4.ip_forward = 1 "(Utilisez sysctl -p /etc/sysctl.conf pour" recharger "ce fichier)

Davidgo
la source
J'avais déjà édité sysctl.conf pour activer le transfert IPv4. J'ai ajouté quelques informations à la question initiale.
1
Pouvez-vous faire une "route -n" sur B? Il ressort de votre traceroute que la passerelle par défaut n’existe pas ou est configurée de manière incorrecte.
davidgo
La définition de la passerelle par défaut a corrigé mes problèmes de connectivité, merci! Je ne sais pas pourquoi cela n'a pas été défini, mais je vais faire des recherches et mettre à jour cette question avec le problème sous-jacent pour les futurs lecteurs.