Je cherche à donner un acces internet à un de mes PC en utilisant un second PC comme routeur, c'est avant tout l'exercice mais je bloque un peu.
Les deux PC sont sous linux (ubuntu 20.4). Le premier (A) à un acces à internet via un réseaux filaire et je voudrai que le second PC (B) ai acces à internet en se connectant à A via wifi. Je voudrai donc l'architecture suivante : B <--wifi --> A <--eth--> internet
J'ai utilisé hostapd et dhcpd pour que A joue le rôle d'AP wifi et cela fonctionne bien : les deux machines peuvent se ping sans problème. J'ai activer ip_forward sur la machine A. Puis j'ai tester de ping 8.8.8.8 (je ne veux pas m'encombrer de DNS pour le moment) depuis la machine B mais cela ne fonctionne pas et la commande ping ne me renvoit rien. J'ai donc chercher à investiguer un peu ce qui se passait grâce à tshark.
Sur l'interface wifi de la machine B : Les requètes ICMP partent correctement
Sur l'interface wifi de la machine A : Les requètes ICMParrivent correctement
Sur l'interface eth de la machine A : Je vois passer les requètes ICMP (avec comme ip source l'interface wifi de la machine B et comme ip destination 8.8.8.8) mais je ne vois aucune réponse. Lorsque je tente de ping 8.8.8.8 depuis la machine A cela se passe correctement.
Voici la table de routage de la machine A : Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 134.214.146.1 0.0.0.0 UG 100 0 0 enp0s31f6 134.214.146.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s31f6 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp2s0
Et la table de routage de la machine B Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 20600 0 0 wlo1 192.168.2.0 0.0.0.0 255.255.255.0 U 600 0 0 wlo1
Je pense avoir fait le tour de mon soucis, si quelqu'un pourrait m'expliquer un tout ça, je lui en serai très reconnaissant, Bonne journée à tous !
Si tu regardes la table de routage du routeur en 134.214.146.1, tu verras qu'il ne connaît pas la route vers le réseau 192.168.2.0/24 en passant par A. Ce routeur ne peut donc pas acheminer les réponses ICMP reçues vers la machine B.
Deux solutions:
Modifier la table de routage du routeur en 134.214.146.1 en ajoutant une route vers 192.168.2.0/24 en passant par A.
Faire du SNAT (Source NAT) sur A pour les paquets venant de 192.168.2.0/24 et sortant par enp0s31f6. En bref, remplacer l'adresse source de la machine B par celle de la machine A lorsque les paquets sont routés de B vers le routeur. L'opération inverse sur l'adresse destination sera automatiquement réalisée lorsque la réponse sera reçue par A. Ainsi B finira par recevoir la réponse.
Je recommande dans ton cas de faire un SNAT.
Le noyau Linux incorpore nativement un pare-feu. Ce pare-feu se nomme Netfilter, il est assez puissant (ce n'est pas un pare-feu next-gen cependant).
Pour s'interfacer avec ce pare-feu et le configurer, plusieurs application logicielle front-end existent: iptables (la plus ancienne mais toujours utilisées), nftables (le supposé successeur à iptables). Des applications un peu plus haut niveau et plus intuitives à l'utilisation sont aussi utilisées comme UncomplicatedFirewall (ufw), Firewalld et Shorewall.
Je te laisse choisir ta solution préférée.
J'utilise nftables, voici un exemple de configuration du fichier /etc/nftables.
table ip nat {
chain PREROUTING {
type nat hook prerouting priority dstnat;
}
chain POSTROUTING {
type nat hook postrouting priority srcnat;
# MASQUERADE on enp0s41f6
oifname enp0s41f6 masquerade
}
}
La configuration ici indique de faire du SNAT (l'action se nomme MASQUERADE avec Netfilter) pour tout ce qui sort par enp0s41f6.
Directement avec une commande, ça donne quelque chose comme ça:
# nft add rule ip nat POSTROUTING oifname enp45s0 masquerade
Linux router : IP_forward
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.