IPSec net to host

On voit habituellement des liens IPSec net-net, reliant deux réseaux, ou host-net, c’est-à-dire un hôte établissant une liaison IPSec vers un réseau. Dans mon cas, j’ai besoin qu’un hôte de mon réseau interne puisse contacter un hôte spécifique traînant sur Internet, et cela à travers un canal sécurisé. Étonnamment cette configuration est assez rare pour que la documentation relative à sa mise en place soit inexistante pour le moins, mais pas impossible 🙂

On appelle souvent les connexions IPSec de type host to net roadwarrior. Le cas d’usage fréquent est celui du télétravail, où un usager a besoin d’accéder à des ressources se trouvant dans le réseau interne de sa boîte. On observe alors les différences suivantes par rapport à une connexion reliant deux sites :

  • l’initiateur est l’hôte
  • l’initiateur ne connait pas son adresse locale (IP non fixe)
  • le endpoint côté réseau interne accepte les connexions depuis toutes les IP

Dans cette situation, il est possible de spécifier une IP privée, qui va permettre au endpoint côté réseau (et donc de manière transitive à tous le réseau) de pouvoir contacter l’hôte. C’est en tirant parti de cette fonctionnalité et en utilisant une configuration de type net-net que je vais pouvoir parvenir à mes fins.

Ci-dessous la configuration que j’utilise (je n’ai mis que l’essentiel, en mettant en évidence les paramètres clés). J’utilise IKEv2 qui est simplement the way to go, ce protocole étant mieux que l’ancestral IKEv1 sur tous les plans. Je ne suis donc pas sur que cela puisse marcher en IKEv1.

conn uk-endpoint
        auto=route
        left=198.51.100.150
        leftid="C=FR, O=Kveer, OU=Kveer IPSec Services, CN=IPSec-Endpoint"
        right=203.0.113.60
        rightid="C=FR, O=Kveer, OU=Kveer IPSec Services, CN=UK-Endpoint"
        leftsubnet=192.168.4.0/24
        rightsubnet=100.64.10.1/32[tcp]
        rightsourceip=100.64.10.1
        keyexchange=ikev2
        reauth=no
        ike=aes128-sha1-modp2048!
        esp=aes128-sha1-modp2048!
        type=tunnel
        compress=yes
conn home
        auto=route
        left=203.0.113.60
        leftid="C=FR, O=Kveer, OU=Kveer IPSec Services, CN=UK-Endpoint"
        right=198.51.100.150
        rightid="C=FR, O=Kveer, OU=Kveer IPSec Services, CN=IPSec-Endpoint"
        rightsubnet=192.168.4.0/24
        leftsubnet=100.64.10.1/32
        leftsourceip=100.64.10.1
        keyexchange=ikev2
        reauth=no
        ike=aes128-sha1-modp2048!
        esp=aes128-sha1-modp2048!
        type=tunnel
        compress=yes

Une fois les deux endpoints configurés :

  • le tunnel va pouvoir être établi d’un côté comme de l’autre
  • les hôtes du réseau interne vont pouvoir contacter le serveur standalone sur son IP privée 100.64.10.1
  • et bien entendu, le serveur standalone va pouvoir se connecter au réseau interne