Table des matières
Infra avec Gitoyen
En juillet 2018 (suite à notre adhésion), Gitoyen nous a donné les informations technique sur ce qu'ils pensent nous fournir en septembre :
- Une VM
- Une plage d'IPv4 en 80.67.162.0/24 (256 adresses)
- Une plage d'IPv6 en 2001:913:4000::/36 (7E28 adresses, c'est monstrueux). documentation sur IPV6.
Nous n'aurons pas d'[AS] dans un premier temps.
Nos hypothèses de travail
La VM fournie n'est peut etre pas faite pour héberger notre serveur VPN.
L'architecture réseau est :
- Soit la passerelle Gitoyen est sur 80.67.162.1
- Soit c'est un point à point
Découpage du scope IP
Notre scope IP est 80.67.162.0/24
Subnet | Description | Quantité |
---|---|---|
80.67.162.0/30 | Interconnexion entre GW et VM | 4 |
80.67.162.4/30 | Réservé interconnexion | 4 |
80.67.162.8/29 | Réservé | 8 |
80.67.162.16/28 | Réservé | 16 |
80.67.162.32/27 | Réservé | 32 |
80.67.162.64/26 | Réservé | 64 |
80.67.162.128/25 | IPs publiques adhérents | 128 |
Architecture
Nous faisons des tests sur un réseau simulé.
3 machines :
Usagé Server MYCL VM Gitoyen Réseau normal 10.11.12.1 <--> 10.11.12.2 <--> 10.11.12.3 <--> Internet Connexion OpenVPN 80.67.162.2 80.67.162.1 Connexion OpenVPN 80.67.162.130 80.67.162.169
Tout ce qui va suivre est simulé. Donc quand on dit « La VM Gitoyen » c'est un de nos ordi qui joue ce rôle.
On aurait sûrement pu faire la même chose avec marionnet mais on ne s'est pas trop engagé sur cette voie.
Config Server MYCL <-> VM Gitoyen
La configuration entre Server MYCL et VM Gitoyen est la plus simple : du point à point. Il faut suivre cette doc :
https://openvpn.net/index.php/open-source/documentation/miscellaneous/78-static-key-mini-howto.html
Config de la VM Gitoyen
dev tun ifconfig 80.67.162.1 80.67.162.2 secret /etc/openvpn/server/jlt.key
On partage juste une clef pour aller plus vite, mais en prod on fera du TLS.
Pour le test, on a dû faire du NAT sur la VM Gitoyen (en l'occurence pour notre test, le laptop de Germain) pour rediriger le traffic de notre réseau vers le reste de l'internet (sur l'interface wifi de Germain) :
iptables -t nat -A POSTROUTING -s 80.67.162.0/24 -o wlan0 -j MASQUERADE
Et activer le forwarding :
echo 1 > /proc/sys/net/ipv4/ip_forward
Il faut aussi forwarder le traffic dans les deux sens sur l'interface virtuelle tun0 :
iptables -A FORWARD -i tun0 -o tun1 -j ACCEPT iptables -A FORWARD -i tun1 -o tun0 -j ACCEPT
Table de routage obtenu au final sur VM Gitoyen :
Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 600 0 0 wlan0 10.11.12.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0 80.67.162.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 80.67.162.128 * 255.255.255.128 U 0 0 0 tun0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 192.168.2.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan0
Usagés <-> Server MYCL
La configuration entre les Usagés et le Serveur MYCL est plus dure. Elle utilise obligatoirement des certificats.
Config Usagé, recopier la config client deja documenté
ensuite on route les deux interface virtuelles
Sur le serveur mycelium, on interface l'interface virtuelle du serveur VPN avec le point à point :
iptables -A FORWARD -i tun0 -o tun1 -j ACCEPT
puis dans l'autre sens :
iptables -A FORWARD -i tun1 -o tun0 -j ACCEPT
Sur le client on a ajouté une route à la main :
route add default gw 80.67.162.129 dev tun0
Mais normalement, on devrait arriver à la pusher avec le serveur VPN. À creuser.
Conclusions
Les usagers vont voir 2 hops avant de sortir sur Internet.
Outils
ipcalc
: permet de calculer des réseaux ip.
tcpdump
: pour sniffer une interface réseau. Ci-dessous, on filtre par exemple selon une IP de provenance :
tcpdump -i tun0 -n host 80.67.162.130