2 votes

Impossible de se connecter au serveur ipsec fonctionnant dans docker derrière un pare-feu

J'ai une installation qui ne me semble pas très difficile mais je n'arrive pas à la faire fonctionner.

Configuration de travail : Un serveur ipsec fonctionnant dans un docker connecté directement à internet. Les clients peuvent se connecter.

Configuration non fonctionnelle : Un serveur ipsec fonctionnant dans un docker connecté à internet derrière un pare-feu. J'ai node1 dans un serveur esxi qui agit comme internet gateway y node2 dans le même serveur esxi qui a ipsec server running in a docker .

J'ai ouvert les ports 500 et 4500 dans le nœud 1 (passerelle Internet) et je les ai transférés au nœud 2 (qui exécute le serveur ipsec dans un docker).
Le problème auquel je suis confronté est que les clients ne parviennent pas à se connecter.

Voici la règle du pare-feu iptables

-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 500 -j ACCEPT
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 4500 -j ACCEPT
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 53 -j ACCEPT

Je ne suis pas en mesure de repérer ce qui manque encore. Quelqu'un peut-il me dire si ma configuration est correcte et pourquoi elle ne fonctionne pas ?

1 votes

NAT_TRAVERSAL est configuré ? Je suppose que vous utilisez NAT dans votre 2ème configuration. Ah, et selon votre configuration vous avez besoin que le port 50 soit ouvert pour ESP.

0 votes

J'ai les règles suivantes dans le pare-feu iptables : -A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 500 -j ACCEPT -A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 4500 -j ACCEPT -A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 53 -j ACCEPT

3voto

dres Points 338

Vos règles iptables à partir des commentaires de la question :

-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 500 -j ACCEPT 
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 4500 -j ACCEPT 
-A FORWARD -d 192.168.2.37/32 -o ens34 -p udp -m udp --dport 53 -j ACCEPT

Je ne vois pas vraiment pourquoi vous auriez besoin de faire suivre le port 53 : rendre le serveur DNS de votre réseau interne visible par tout le monde sur Internet, c'est favoriser les attaques par usurpation de DNS - ce n'est pas une bonne idée. Une fois le VPN connecté, vous pourrez y accéder en toute sécurité via le tuyau VPN sans aucune règle de pare-feu sur l'hôte de la passerelle Internet. Je vous recommande de supprimer la règle FORWARD pour le port UDP 53, sauf si vous avez une très bonne raison de le faire.

Les règles ACCEPT de la table de filtrage FORWARD d'iptables permettent uniquement au système d'acheminer le trafic qui est déjà correctement adressé à la destination. Puisque votre serveur IPsec semble avoir une adresse 192.168.*.*, vos clients ne peuvent pas utiliser cette adresse pour l'atteindre via Internet.

Au lieu de cela, vous devrez configurer les clients pour qu'ils utilisent l'adresse IP publique du serveur de passerelle Internet, et le serveur de passerelle a besoin de certaines règles DNAT pour rediriger le trafic IPsec entrant vers le serveur IPsec.

Ces règles sont nécessaires sur le serveur de la passerelle Internet en plus des règles FORWARD que vous avez déjà :

-t nat -A PREROUTING -i <internet-side NIC> -p udp -m udp --dport 500 -j DNAT --to-destination 192.168.2.37:500
-t nat -A PREROUTING -i <internet-side NIC> -p udp -m udp --dport 4500 -j DNAT --to-destination 192.168.2.37:4500

Comme il ne semble pas y avoir de suivi automatique des connexions pour IPsec, vous pouvez également avoir besoin des règles inverses pour le trafic sortant :

-t nat -A POSTROUTING -o <internet-side NIC> -s 192.168.2.37/32 -p udp -m udp --sport 500 -j SNAT --to-source <public IP>
-t nat -A POSTROUTING -o <internet-side NIC> -s 192.168.2.37/32 -p udp -m udp --sport 4500 -j SNAT --to-source <public IP> 

(Je ne suis pas vraiment sûr de cette partie : essayez d'abord sans ces règles, et surveillez les réponses sortantes sur l'interface de la passerelle Internet. Si les paquets IPsec sortants ont 192.168.2.37 comme IP source, ajoutez les 2 règles SNAT ci-dessus. Si l'IP source est déjà modifiée par l'IP publique de l'hôte de la passerelle Internet, alors la règle DNAT suit avec succès la connexion et vous n'aurez pas besoin des règles SNAT).

Lorsque le trafic VPN du client arrive à l'hôte de la passerelle Internet (en utilisant initialement son adresse IP comme destination), le trafic entrant passe d'abord par la table PREROUTING. Les règles DNAT qu'elle contient remplacent l'adresse de destination. Ensuite, le trafic entrant passe par la vérification du routage : puisque la règle DNAT vient de remplacer l'IP de destination, le trafic n'est plus adressé à l'hôte de la passerelle Internet lui-même, il passe donc par la table de routage puis par la table de filtrage FORWARD. Après cela, il sort par l'interface "inside" de l'hôte de la passerelle Internet vers l'hôte IPsec.

L'hôte IPsec recevra des paquets avec sa propre adresse 192.168.2.37 dans les en-têtes des paquets IP, mais dans le contenu crypté, il y aura l'IP publique originale du serveur de la passerelle Internet. L'hôte IPsec doit être conscient de NAT_TRAVERSAL pour gérer cela avec succès.

Lorsque l'hôte IPsec répond, l'hôte de la passerelle Internet devra remplacer l'IP source des paquets IPsec sortants par une IP publique valide.

0 votes

Je vais tester la configuration et revenir avec mes commentaires.

0 votes

Dans le journal du serveur ipsec, je vois "received packet : from 89.204.154.48 [56939] to 172.17.0.6 [500] (300 bytes)". Je me serais attendu à ce que cela ressemble à "received packet : from <internet_side NIC IP> [56939] to 172.17.0.6 [500] (300 bytes)" ?

0 votes

L'IP source des paquets entrants n'est pas modifiée sur l'hôte de la passerelle. Votre hôte de passerelle doit cacher l'espace d'adresse IP privé au monde entier pour éviter les problèmes de routage, mais il n'y a aucune raison technique de cacher l'IP source de la destination dans votre serveur de passerelle.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X