Avoir une IP fixe grâce à un VPN

Si votre FAI ne vous fournit pas d’adresse IP fixe, alors vous pouvez mettre en place un tunnel VPN comme décrit dans cette partie. Votre serveur sera alors accessible au public via l’IP du VPN, l’IP de votre serveur étant “cachée” derrireè.

Cela s’avère particulièrement utile si :

Voici schématiquement ce que l’on cherche à faire:

+-----------+        +---------------------+      +--------------+
| Serveur   +<------>+ Serveur avec une    +<-----+              |
| Personnel |  VPN   | IP fixe             |      |   Visiteur   |
|           |        | (un VPS par exemple)|      |              |
+-----------+        +---------------------+      +--------------+
   IP cachée             IP Publique

Peu importe votre IP, pour accéder à votre serveur, il suffira d’utiliser l’IP publique du serveur intermédiaire.

Pour mieux se comprendre ensuite, j’appelerai “sniper” le serveur caché derrière le VPN et “tank” le serveur dont on veut utiliser l’IP publique.

Avertissement sur le parefeu

Pour votre serveur personnel, vous devrez peut-être modifier votre parefeu. Désormais, le traffic parviendra à votre serveur par l’interface du VPN, c’est à dire “wg0” si vous l’avez configuré avec Wireguard ou bien “enc0” si c’est avec Iked.

⚠ Pensez donc à adapter la configuration de votre parefeu.

Mise en place

On suppose par la suite que sniper et tank sont reliés par un VPN Wireguard.

Vous n’aurez qu’à éditer le parefeu de tank pour ajouter une règle “binat-to” :

serv_int = "10.0.0.2"
serv_ext = "192.0.2.2"
[...]

pass quick on egress from $serv_int to any binat-to $serv_ext
[...]

# ligne déjà présente:
match out on egress from (wg0:network) to any nat-to (egress:0)
[...]

Prenez bien soin de modifier les IP dans les variables “serv_*”.

Rechargez le parefeu. Et voilà, c’est terminé 😊

Modification des interfaces d’écoute

Les services hébergés sur sniper n’écoutent plus sur la même interface. Pensez à modifier leur interface d’écoute pour “wg0”. Normalement, si vous avez modifié les routes par défaut, alors “wg0” appartient au groupe “egress”, mais vérifiez au moins deux fois votre configuration.

À titre d’exemple, la configuration d’httpd ressemblera à ça :

server "chezmoi.tld" {
		listen on wg0 port 80
		root "htdocs"
}

Modification des DNS

Désormais, dans votre zone DNS, votre nom de domaine doit pointer vers l’IP de tank.


Page suivante →