Installation et configuration de Tinc VPN
Présentation
Tinc VPN permet de monter un réseau maillé. Il n'a a pas de serveur central comme avec OpenVPN ou bien Wireguard. Il est existe depuis 1998. C'est très simple à installer et très utile pour construire des infra résilientes distantes.
Installation de Tinc
Nom du réseau virtuel vpnql
Installation de Tinc sur le premier hôte vps01
$ apt install tinc
$ mkdir -p /etc/tinc/vpnql/hosts
$ touch /etc/tinc/vpnql/tinc-{up,down}
$ chmod +x /etc/tinc/vpnql/tinc-{up,down}
#################
$ vim /etc/tinc/vpnql/tinc.conf :
Name = vps01
AddressFamily = ipv4
Device = /dev/net/tun
#################
vim /etc/tinc/vpnql/hosts/vps01 :
Address = 192.168.1.17 # À remplacer par l'IP publique de l'hôte
Subnet = 192.168.200.1/32 # IP sur le réseau virtuel vpnql
Port = 655
#################
$ vim /etc/tinc/vpnql/tinc-up :
#!/bin/sh
ip link set $INTERFACE up
ip addr add 192.168.200.1/32 dev $INTERFACE # IP virtuelle de l'hôte
ip route add 192.168.200.0/24 dev $INTERFACE # Réseau virtuel
#################
$ vim /etc/tinc/vpnql/tinc-down :
#!/bin/sh
ip route del 192.168.200.0/24 dev $INTERFACE
ip addr del 192.168.200.1/32 dev $INTERFACE
ip link set $INTERFACE down
################
$ tincd -n vpnql --generate-keys=4096
Generating 4096 bits keys:
.+.........+.....+..................+.+..............+.+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-....+..+...+................+.........+..+....+........+.+..+.......+..+.+.........+........+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.+.+..+...+....+.........+..+.......+........+....+...+......+...........+.+.....+...+.+...........+.......+......+..+.............+......+...........+.............+.........+..+.+..+.......+...............+........+...+...+............+.........+.............+...........+.......+..+.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ p
..+.............+..+...+.......+..+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-...+.+.....+....+........+...+....+...............+.....+...+.......+.....+...+....+.........+..+...+.+........+......+......+.+..+.+......+...+...+.........+.....+....+.........+..+......+.........+...+...+...+.......+...+...........+.+........+.......+..+.+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.+................+.....+....+...+..............+...+.......+...+..+......+.........+....+.........+..+...+...+.........+...+.+.........+.....+............+...+......+......................+..+......+.+..................+.....................+............+...+...........+.+..+.+............+.....+...............+....+.....+.............+........+....+.........+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ p
Done.
Please enter a file to save private RSA key to [/etc/tinc/vpnql/rsa_key.priv]:
Please enter a file to save public RSA key to [/etc/tinc/vpnql/hosts/vps01]:
###########################
$ cat /etc/tinc/vpnql/hosts/vps01 :
Address = 192.168.1.17
Subnet = 192.168.200.1/32
Port = 655
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAtLOtfXiy(......)73mryzjECAwEAAQ==
-----END RSA PUBLIC KEY-----
Installation de Tinc sur le deuxième hôte vps02
$ apt install tinc
$ mkdir -p /etc/tinc/vpnql/hosts
$ touch /etc/tinc/vpnql/tinc-{up,down}
$ chmod +x /etc/tinc/vpnql/tinc-{up,down}
#################
$ vim /etc/tinc/vpnql/tinc.conf :
Name = vps02
AddressFamily = ipv4
Device = /dev/net/tun
ConnectTo = vps01 # IMPORTANT car sans cette option pas de connexion
#################
vim /etc/tinc/vpnql/hosts/vps02 :
Address = 192.168.1.18 # IP publique de l'hôte
Subnet = 192.168.200.2/32 # IP sur le réseau virtuel vpnql
Port = 655
#################
$ vim /etc/tinc/vpnql/tinc-up :
#!/bin/sh
ip link set $INTERFACE up
ip addr add 192.168.200.2/32 dev $INTERFACE # IP virtuelle de l'hôte
ip route add 192.168.200.0/24 dev $INTERFACE # Réseau virtuel
#################
$ vim /etc/tinc/vpnql/tinc-down :
#!/bin/sh
ip route del 192.168.200.0/24 dev $INTERFACE
ip addr del 192.168.200.2/32 dev $INTERFACE
ip link set $INTERFACE down
################
$ tincd -n vpnql --generate-keys=4096
Generating 4096 bits keys:
.+.........+.....+..................+.+..............+.+......+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-....+..+...+................+.........+..+....+........+.+..+.......+..+.+.........+........+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.+.+..+...+....+.........+..+.......+........+....+...+......+...........+.+.....+...+.+...........+.......+......+..+.............+......+...........+.............+.........+..+.+..+.......+...............+........+...+...+............+.........+.............+...........+.......+..+.+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ p
..+.............+..+...+.......+..+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-...+.+.....+....+........+...+....+...............+.....+...+.......+.....+...+....+.........+..+...+.+........+......+......+.+..+.+......+...+...+.........+.....+....+.........+..+......+.........+...+...+...+.......+...+...........+.+........+.......+..+.+.........+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-.+................+.....+....+...+..............+...+.......+...+..+......+.........+....+.........+..+...+...+.........+...+.+.........+.....+............+...+......+......................+..+......+.+..................+.....................+............+...+...........+.+..+.+............+.....+...............+....+.....+.............+........+....+.........+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ p
Done.
Please enter a file to save private RSA key to [/etc/tinc/vpnql/rsa_key.priv]:
Please enter a file to save public RSA key to [/etc/tinc/vpnql/hosts/vps02]:
###########################
$ cat /etc/tinc/vpnql/hosts/vps02 :
Address = 192.168.1.18
Subnet = 192.168.200.2/32
Port = 655
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAtLOtfXiy(......)73mryzjECAwEAAQ==
-----END RSA PUBLIC KEY-----
Connexion des hôtes
Transfert des fichiers de conf
Depuis l'hôte VPS01 :
Depuis l'hôte VPS02 :
Sur les deux hôtes :
Test de connectivité réseau
VPS01
root@vps01:~# ping -c 3 192.168.200.2
PING 192.168.200.2 (192.168.200.2) 56(84) bytes of data.
64 bytes from 192.168.200.2: icmp_seq=1 ttl=64 time=1.11 ms
64 bytes from 192.168.200.2: icmp_seq=2 ttl=64 time=2.16 ms
64 bytes from 192.168.200.2: icmp_seq=3 ttl=64 time=0.933 ms
--- 192.168.200.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.933/1.399/2.159/0.541 ms
VPS02
root@vps02:~# ping -c 3 192.168.200.1
PING 192.168.200.1 (192.168.200.1) 56(84) bytes of data.
64 bytes from 192.168.200.1: icmp_seq=1 ttl=64 time=1.73 ms
64 bytes from 192.168.200.1: icmp_seq=2 ttl=64 time=0.847 ms
64 bytes from 192.168.200.1: icmp_seq=3 ttl=64 time=0.963 ms
--- 192.168.200.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2034ms
rtt min/avg/max/mdev = 0.847/1.179/1.728/0.390 ms
Ajout d'un 3ème hôte
Faire comme avec les hôtes ci-dessus et renseigner vps03 dans leur tinc.conf.