J'ai posé une question connexe ici - Can't route back down ipsec tunnel from VPS - mais j'ai répondu à cela et avancé un peu.
L'objectif final de ce que j'essaie de réaliser est le suivant :
Nous avons une série de routeurs 4G qui, comme c'est la norme au Royaume-Uni, se trouvent derrière quelques couches de NAT de qualité opérateur et ne sont donc pas adressables publiquement. Nous avons besoin de pouvoir communiquer avec ces routeurs depuis un serveur sur AWS. Mon idée pour y parvenir était de configurer un VPS qui disposait d'une adresse IP statique et d'établir un VPN du routeur 4G vers le VPS. Nous pourrions ensuite communiquer avec le routeur 4G via l'IP publique sur le VPS qui serait configuré pour rediriger le trafic vers le bas du tunnel VPN.
Où j'en suis :
J'ai configuré un VPS sur Digital Ocean et mis en place un VPN IPSec libreSwan en utilisant ce script - https://github.com/philplckthun/setup-simple-ipsec-l2tp-vpn - et j'ai réussi à établir avec succès le VPN du routeur vers le VPS. Je peux pinguer du VPS vers le routeur et vers d'autres appareils connectés au routeur (ce qui était mon problème initial). Le routeur est configuré pour utiliser le tunnel VPN comme route par défaut et lorsque je pingue le VPS depuis le routeur, je peux voir des paquets provenant de l'adresse locale du routeur (comme pour les appareils connectés au routeur) mais maintenant j'ai un problème où si je pingue une adresse internet (par ex. 8.8.8.8) depuis le routeur, je peux voir les paquets atteindre le VPS mais ils ne sont pas redirigés vers Internet (confirmé en pingant une autre machine sur Internet et en observant TCPdump). J'ai configuré le forwarding dans /etc/sysctl.conf (net.ipv4.ip_forward = 1
) et activé le MASQUERADE dans iptables (-A POSTROUTING -o eth0 -j MASQUERADE
). J'ai également essayé plusieurs autres règles iptables trouvées sur le web mais rien n'a aidé.
Diagramme réseau :
ordinateur portable (utilisé pour les tests) --- routeur 4G --- Internet/tunnel VPN --- VPS DO
192.168.0.159 192.168.0.1 IP publique
Si je pingue 8.8.8.8 depuis l'ordinateur portable, voici ce que TCPdump voit sur le VPS :
14:24:58.713759 IP 192.168.0.159 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 714, length 40
mais l'ordinateur portable ne reçoit pas de réponse et comme je l'ai dit, j'ai confirmé que les paquets n'allaient pas plus loin.
Table de routage du VPS :
Table de routage IP du noyau
Destination Passerelle Masque réseau Flags MSS Fenêtre irtt Interface
par défaut 178.62.64.1 0.0.0.0 UG 0 0 0 eth0
178.62.64.0 * 255.255.192.0 U 0 0 0 eth0
Qu'est-ce que je fais de travers (à part me lever et venir travailler) ?
Merci.