VPN : Comment NATer un VPN IPSEC?
Mis a jours le 20 Nov 2020 à 13:19 · 434 mots · Lecture en 3 minutes
Q/A
Est-il possible de faire du NAT sur un firewall
Oui
C’est un peu contre intuitif, mais oui il est possible de faire du NAT de vpn ipsec.
Habituellement un VPN IPSEC est entre @IP-Partener1
et @IP-Partener2
.
En fait, il est tout à fait possible d’introduire un intermédiaire qui NAT les 2 flux UDP nécessaires au VPN IPSEC 500-dpt:isakmp
et 4500-dpt:ipsec-nat-t
:
graph LR; A["@IP-Partener1"] B["@NAT"] C["@IP-Partener2"] A --> B --> C C --> B --> A
Cela à été testé sur de multiples technologies de VPN sans poser de problème d’implémentation.
Est-il possible d’utiliser des FQDN pour mettre en place des VPNs
Oui
Par exemple sur l’interface des PFsence pour la remote gateway il est noté:
Enter the public IP address or host name of the remote gateway
.
Mettre en place du NAT d’un VPN sur centOS7-iptables
.
Step 1 : Installer les softs et paramétrer l’OS
$ package yum install -y iptables tcpdump iptables-services
$ systemctl enable iptables
$ systemctl start iptables
$ echo "1" > /proc/sys/net/ipv4/ip_forward
$ sysctl -w net.ipv4.ip_forward=1
Step 2 : Valider le routage
Pour que le NAT fonctionne sur la machine il faut que les 2 partenaires soient accessibles. L’utilisation conjointe de 2 commandes permet de valider cela:
tcpdump -p -i eth1 port 500
permet de voir les paquets passéstelnet $IP-Partener2 500
permet de générer des paquets
Step 3 : Installer les règles de NAT des 2 flux et paramétrer la bonne redirection :
$ iptables -t nat -A PREROUTING -p udp -s $IP-Partener1 --dport 500 -i eth1 -j DNAT --to $IP-Partener2:500
$ iptables -t nat -A PREROUTING -p udp -s $IP-Partener1 --dport 4500 -i eth1 -j DNAT --to $IP-Partener2:4500
$ iptables -t nat -A PREROUTING -p udp -s $IP-Partener2 --dport 500 -i eth1 -j DNAT --to $IP-Partener1:500
$ iptables -t nat -A PREROUTING -p udp -s $IP-Partener2 --dport 4500 -i eth1 -j DNAT --to $IP-Partener1:4500
$ iptables -F FORWARD
$ iptables -t nat -A POSTROUTING -j MASQUERADE
Mettre en place du NAT d’un VPN sur packet filter.
Voila un exemple de règle de nat:
#rdr on vtnet0 inet proto udp from $IP-Partener1 port = isakmp to $IPInterfaceOne port = isakmp -> $IP-Partener2
#rdr on vtnet0 inet proto udp from $IP-Partener2 port = isakmp to $IPInterfaceOne port = isakmp -> $IP-Partener1
#rdr on vtnet0 inet proto udp from $IP-Partener1 port = sae-urn to $IPInterfaceOne port = sae-urn -> $IP-Partener2
#rdr on vtnet0 inet proto udp from $IP-Partener2 port = sae-urn to $IPInterfaceOne port = sae-urn -> $IP-Partener1
Quelques liens utiles :
- Le livre : https://inetdoc.net/pdf/iptables-tutorial.pdf
- La doc CentOS pour mettre en place du NAT : http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-fr-4/s1-firewall-ipt-fwd.html
L'auteur: Guillaume Moulard
Mon premier code était sur un ZX81... Mes derniers emois sont le week-end pour mes Raspberrys PI et la semaine pour les techno du Cloud. www.moulard.org
Vous avez vu une erreur ? Quelque chose ne va pas ? Vous pouvez contribuer à cette page sur GitHub ou laisser un commentaire en dessous. Merci d'être passé par là :)