Bonjour à tous et à toutes,
j’ai crée un vpn avec mon vps en utilisant ssh et l’interface tun, mais une fois que j’ai crée mon vpn, je ne sais pas comment je pourrais l’utiliser pour naviguer sur internet à partir de mon poste client (comme nordvpn qui te propose d’utiliser un vpn pour naviguer en sécurité depuis ton poste client).
Voici les commandes ci-dessous que j’ai tapé pour créer un vpn.
Sur le vps
Dans le fichier /etc/ssh/sshd_config, autorisons le tunnel :
PermitTunnel yes
Puis redémarrer le serveur sshd :
# systemctl restart sshd
Ensuite, on crée l’interface virtuelle tun0 en mode tunnel (dit aussi mode « point-to-point ») :
# ip tuntap add dev tun0 mod tun
Puis on attribue une adresse ip privée (10.0.0.1/32) à cette interface tun0, en lui spécifiant en plus l’adresse ip privée de l’autre point du tunnel (10.0.0.2) avec qui elle doit créer un tunnel :
# ip addr add 10.0.0.1/32 peer 10.0.0.2 dev tun0
Puis on active cette interface tun0 :
# ip link set tun0 up
Du coup, en tapant ip addr, on voit bien l’interface tun0 d’adresse ip 10.0.0.1, prêt à communiquer avec l’autre point du tunnel d’adresse ip 10.0.0.2 :
$ ip addr
....
3: tun0: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 500
link/none
inet 10.0.0.1 peer 10.0.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
La conséquence de cela, est qu’une route a été ajouté à l’interface tun0, et qui route les paquets vers « l’autre point » du tunnel, càd vers 10.0.0.2 :
$ ip route
…
10.0.0.2 dev tun0 proto kernel scope link src 10.0.0.1
…
Sur le client (mon ordinateur personnel par exemple)
On crée l’autre point du tunnel, en créant l’interface virtuelle tun0 :
# ip tuntap add dev tun0 mod tun
Puis on attribue une adresse ip privée (10.0.0.2/32) à cette interface tun0, en lui spécifiant en plus l’adresse ip privée de l’autre point du tunnel (10.0.0.1, qui est celui de tun0 du vps) avec qui elle doit créer un tunnel :
# ip addr add 10.0.0.2/32 peer 10.0.0.1 dev tun0
Puis on active cette interface tun0 :
# ip link set tun0 up
Du coup, en tapant ip addr, on voit bien l’interface tun0 d’adresse ip 10.0.0.2, prêt à communiquer avec l’autre point du tunnel d’adresse ip 10.0.0.1 (qui est le vps) :
$ ip addr
....
3: tun0: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 500
link/none
inet 10.0.0.2 peer 10.0.0.1/32 scope global tun0
valid_lft forever preferred_lft forever
La conséquence de cela, est qu’une route a été ajouté à l’interface tun0, et qui route les paquets vers « l’autre point » du tunnel, càd vers 10.0.0.1 (qui est le vps) :
$ ip route
…
10.0.0.1 dev tun0 proto kernel scope link src 10.0.0.2
…
Enfin, on crée le tunnel entre tun0 du client et tun0 du vps :
$ ssh -w 0:0 user@ip_publique_vps
Puis, on fait un ping sur l’adresse ip de l’interface tun0 du serveur (vps) :
$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=30.5 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=30.1 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=32.3 ms
=> donc ça marche
De même, dans le terminal du vps, on fait un ping sur l’adresse ip de l’interface tun0 du client :
$ ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=30.5 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=30.1 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=32.3 ms
=> donc ça marche
Bonus :
Imaginons que mon vps fait aussi partie d’un réseau privé 192.168.0.0/24, et a comme adresse ip privée 192.168.0.1 (par son interface ethernet ens3 par exemple), je peux accéder de façon sécurisée à ce réseau privé 192.168.0.0/24 distant depuis mon poste client en passant par le tunnel. Pour cela, sur mon poste client, il suffit d’ajouter une route à l’interface tun0 du vps :
# ip route add 192.168.0.0/24 via 10.0.0.1
Mais voilà, comment mon poste client pourrait utiliser ce vpn pour naviguer sur internet (comme le font les utilisateurs de nordvpn), de sorte que l’adresse ip source ne sera plus celle de la box internet du client, mais l’adresse ip du vps ???
Merci d’avance.