DEV Community

Tom Moulard
Tom Moulard

Posted on • Originally published at blog.moulard.org on

VPN : Comment NATer un VPN IPSEC?

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:

mermaid.initialize({ startOnLoad:true });
Enter fullscreen mode Exit fullscreen mode

graph LR;
    A["@IP-Partener1"]
    B["@NAT"]
    C["@IP-Partener2"]
    A --> B --> C
    C --> B --> A

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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és
  • telnet $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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Quelques liens utiles :

Top comments (0)