3 votes

règles iptables pour autoriser le VPN L2TP/IPSEC derrière le pare-feu

J'ai posé la question sur les forums de Smoothwall Express mais ils sont naturellement réticents à fournir une aide trop importante. Après tout, ils veulent vraiment vendre la version commerciale.

Je dois fournir un VPN L2TP/IPSEC pour le support à distance d'une nouvelle machine que nous allons bientôt acquérir (nous n'avons pas le choix pour cette partie). Comme l'utilisateur distant doit également être authentifié par rapport à Active Directory, je dois exécuter le VPN sur notre serveur Windows (2003), plutôt que directement sur le pare-feu.

Étant donné que Smoothwall Express n'a pas la possibilité de transférer des protocoles à partir de son interface de gestion normale, cela doit être fait en modifiant les paramètres iptables dans le dossier rc.firewall.up . C'est là que réside mon problème. Je ne connais pas iptables et je pense que même si je prends le temps de me documenter sur le sujet, les risques de me planter sont importants.

La section suivante existe actuellement dans rc.firewall.up :

# IPSEC
/sbin/iptables -N secin
/sbin/iptables -A secin -i ipsec0 -j ACCEPT
/sbin/iptables -A INPUT -j secin

/sbin/iptables -N secout
/sbin/iptables -A secout -i ipsec0 -j ACCEPT
/sbin/iptables -A FORWARD -j secout

[quelques trucs sans rapport ici]

# IPSEC
/sbin/iptables -N ipsec
/sbin/iptables -A ipsec -p udp --destination-port 500 -j ACCEPT
/sbin/iptables -A ipsec -p udp --destination-port 4500 -j ACCEPT
/sbin/iptables -A ipsec -p 50 -j ACCEPT
/sbin/iptables -A ipsec -p 51 -j ACCEPT
/sbin/iptables -A block -i ppp0 -j ipsec
/sbin/iptables -A block -i ippp0 -j ipsec
if [ "$RED_DEV" != "" ]; then
    /sbin/iptables -A block -i $RED_DEV -j ipsec
fi

Sauf erreur de ma part, le deuxième bock fera en sorte que le trafic que je veux faire suivre soit avalé à la place. J'ai essayé de commenter le deuxième bloc et d'ajouter celui-ci, qui est adapté des lignes requises pour le PPTP passthrough (qui fonctionne) et de ce que j'ai pu obtenir de diverses sources :

# L2TP/IPSEC
/sbin/iptables -N l2tp
/sbin/iptables -A l2tp -p udp --destination-port 500 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p udp --destination-port 1701 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p udp --destination-port 4500 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p 50 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -A l2tp -p 51 --dst 192.169.0.7 -j ACCEPT
/sbin/iptables -I FORWARD -j l2tp
/sbin/iptables -t nat -N l2tp
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 500 -j DNAT --to 192.169.0.7:500
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 1701 -j DNAT --to 192.169.0.7:1701
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p tcp --dport 4500 -j DNAT --to 192.169.0.7:4500
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p 50 -j DNAT --to 192.169.0.7
/sbin/iptables -t nat -A l2tp -i $RED_DEV -p 51 -j DNAT --to 192.169.0.7
/sbin/iptables -t nat -A PREROUTING -j l2tp

.. mais ça ne marche pas. Où est-ce que je me suis trompé ?

Incidemment, $RED_DEV se traduit par l'interface publique et évidemment 192.168.0.7 est mon serveur VPN.

Mise à jour :

Il s'avère que les paramètres ci-dessus fonctionnent - en quelque sorte. Je teste ceci depuis chez moi, où j'ai un MacBook et plusieurs machines Windows XP. Je peux me connecter sans problème à partir du Mac mais je ne peux pas me connecter à partir d'une des machines Windows. Malheureusement, la société de machinerie qui a besoin de ce VPN pour l'assistance à distance n'utilise que Windows XP. :(

4voto

John Gardeniers Points 27097

Comme indiqué dans la mise à jour de la question, même avec le double NAT, le VPN fonctionne d'un Mac à Windows mais pas de Windows à Windows. Il semble qu'il suffise de trouver le bon terme de recherche pour trouver une solution.

Conformément à cet article de la KB Sur l'ordinateur client Windows XP, nous devons créer un nouveau fichier DWORD valeur nommée AssumeUDPEncapsulationContextOnSendRule sur HKLM\System\CurrentControlSet\Services\IPSec . Pour le double NAT, il faut une valeur de 2.

Il me faut maintenant trouver une solution pour Windows 7, car il est inévitable que, tôt ou tard, je doive y faire face.

Mise à jour

Pour tous ceux qui rencontrent le même problème, la solution pour Windows 7 consiste à créer un nouveau fichier DWORD valeur nommée AssumeUDPEncapsulationContextOnSendRule sur HKLM\SYSTEM\CurrentControlSet\services\PolicyAgent . Là encore, pour le double NAT, il faut une valeur de 2.

-2voto

privacychair Points 17

Voici un guide pour s'assurer que les ports clients sont ouverts sur la machine Windows elle-même.

https://www.magnumvpn.com/setup-Windows-10-firewall-l2tp.html

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