Skip to Content

Votre propre VPN

Nanocl facilite votre quotidien avec un Statefile VPN prêt à l’emploi.
Basé sur hwdsl2/docker-ipsec-vpn-server  de @Lin Song , il est disponible dans notre registre officiel Nanocl .

nanocl state apply -fs nr.next-hat.com/v0.18/ipsec

Consultez le manuel de ce Statefile avec :

nanocl state man -s nr.next-hat.com/v0.18/ipsec

Pour aller au-delà des possibilités des Statefile Args, téléchargez-le et adaptez-le à vos besoins :

wget nr.next-hat.com/v0.18/ipsec

Voici le contenu du Statefile VPN :

ApiVersion: v0.18 Args: - Name: namespace Kind: String - Name: public-ip Kind: String - Name: dns Kind: String Default: "1.1.1.1" Namespace: ${{ Args.namespace }} # See all options: # https://docs.next-hat.com/references/nanocl/objects/cargo Cargoes: - Name: vpn PortBindings: 500/udp: - HostPort: "500" 4500/udp: - HostPort: "4500" Containers: - Name: vpn Image: hwdsl2/ipsec-vpn-server:latest Env: - VPN_PUBLIC_IP=${{ Args.public-ip }} - VPN_DNS_SRV1=$$INTERNAL_GATEWAY - VPN_DNS_SRV2=${{ Args.dns }} - VPN_L2TP_NET=192.168.42.0/16 - VPN_L2TP_LOCAL=192.168.42.1 - VPN_L2TP_POOL=192.168.42.10-192.168.42.254 - VPN_XAUTH_NET=192.168.43.0/16 - VPN_XAUTH_POOL=192.168.43.10-192.168.83.254 HostConfig: Binds: - /opt/vpn:/etc/ipsec.d - /lib/modules:/lib/modules CapAdd: - NET_ADMIN Devices: - PathOnHost: /dev/ppp PathInContainer: /dev/ppp CgroupPermissions: rwm Sysctls: net.ipv4.ip_forward: "1" net.ipv4.conf.all.accept_redirects: "0" net.ipv4.conf.all.send_redirects: "0" net.ipv4.conf.all.rp_filter: "0" net.ipv4.conf.default.accept_redirects: "0" net.ipv4.conf.default.send_redirects: "0" net.ipv4.conf.default.rp_filter: "0" net.ipv4.conf.eth0.send_redirects: "0" net.ipv4.conf.eth0.rp_filter: "0"

Utilisez-le ainsi :

nanocl state apply -fs nr.next-hat.com/v0.18/ipsec -- --namespace private --public-ip $(curl -s http://ipinfo.io/ip)

Le fichier ci-dessus crée un DNS personnalisé pour notre VPN.
Il permet de créer des domaines ou de remplacer des domaines existants pour les rediriger vers nos Cargoes.

Avant de vous connecter au VPN, récupérez les identifiants avec :

nanocl cargo -n private logs vpn

Vous devriez voir quelque chose comme ceci :

================================================ IPsec VPN server is now ready for use! Connect to your new VPN with these details: Server IP: server-public-ip IPsec PSK: secret-psk Username: vpnuser Password: secret-password

La connexion au VPN dépendant de votre système, nous ne la détaillerons pas ici.
Consultez la documentation officielle  pour mieux comprendre l’image du conteneur.

Créons maintenant des Cargoes dans les espaces de noms souhaités et rendons-les accessibles depuis le VPN, par exemple :

ApiVersion: v0.18 Namespace: global # See all options: # https://docs.next-hat.com/references/nanocl/objects/cargo Cargoes: - Name: deploy-example Containers: - Name: web Image: ghcr.io/next-hat/nanocl-get-started:latest Env: - APP=GET_STARTED1 # See all options: # https://docs.next-hat.com/references/nanocl/objects/resource Resources: - Name: vpn-dns Kind: ncdns.io/rule/v0.10 Data: Entries: - Name: my-domain.internal IpAddress: Internal - Name: my-domain.internal Kind: ncproxy.io/rule/v0.15 Data: Rules: - Domain: my-domain.internal Network: Internal Locations: - Path: / Target: Key: global.deploy-example.c Port: 9000

Les nombreuses références private.nsp désignent la passerelle de l’espace de noms private : modifiez-les si vous en utilisez un autre.

Après application, vous devriez accéder à http://my-domain.internal .

my-domain.internal

Dernière mise à jour le