Table des matières


Créé le: 2023-03-29 ; Révisé le: 2023-03-29

Vidéo (35 minutes)

Introduction (00:00)

OpenVPN est un logiciel gratuit pour créer un réseau privé virtuel. Il est disponible sur https://openvpn.org/ . Cela permet de:

  • se connecter à votre réseau résidentiel depuis l’extérieur
  • rediriger tout votre trafic internet vers un serveur distant
    • Pour contourner les restrictions géographiques
    • Pour partager votre compte Netflix en partageant votre connexion internet. Tout le trafic va avoir l’air de venir de votre maison.

Ce qu’on veut faire (02:12)

  • Avoir un serveur Linux distant sur lequel on va installer OpenVPN
  • On va rediriger tout notre trafic internet vers ce serveur
  • On va aussi avoir à gérer les certificats sur ce serveur avec Easy RSA
  • On va installer OpenVPN sur notre machine Windows locale

Créer un serveur sur DigitalOcean (03:11)

Si vous n’avez pas de compte DigitalOcean, vous pouvez utiliser mon lien https://m.do.co/c/15c86863abf8 pour obtenir 200$ de crédit sur 60 jours.


ssh root@$REMOTE_IP

# Installer des logiciels de base
apt update && \
apt dist-upgrade -y && \
apt install -y \
    curl less net-tools rsync vim wget \
    haveged && \
apt autoremove -y

# Ajouter 10G de mémoire SWAP dans des fichiers
for i in {1..10}; do
  SWAP_FILE=/var/swap.$i
  echo Generating $SWAP_FILE
  fallocate -l 1G $SWAP_FILE
  chmod 600 $SWAP_FILE
  /sbin/mkswap $SWAP_FILE
  echo $SWAP_FILE swap swap defaults 0 0 >> /etc/fstab
  /sbin/swapon $SWAP_FILE
done

reboot

Installer OpenVPN et Easy RSA (08:13)

apt install -y easy-rsa openvpn

Créer les certificats (08:57)

mkdir -p /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa

/usr/share/easy-rsa/easyrsa init-pki
/usr/share/easy-rsa/easyrsa build-ca # Pass: qwerty

/usr/share/easy-rsa/easyrsa build-server-full openvpn # Pass: master
/usr/share/easy-rsa/easyrsa build-client-full simon-desktop # Pass: windows

Configurer OpenVPN (14:15)

# Créer une clé d'encryption
cd /etc/openvpn/server
openssl dhparam -out dh2048.pem 2048

# Créer le fichier de configuration
cat << EOF > /etc/openvpn/server/server.conf
port 1194
proto udp
dev tun

ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/openvpn.crt
key /etc/openvpn/easy-rsa/pki/private/openvpn.key

dh /etc/openvpn/server/dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1"

keepalive 60 300

cipher AES-256-GCM

user nobody
group nogroup

persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log

verb 3

explicit-exit-notify 1
EOF

Démarrer OpenVPN et rediriger le trafic (19:10)

# Démarrer OpenVPN
/usr/sbin/openvpn --config /etc/openvpn/server/server.conf

# Relayer le trafic
VIRTUAL_VPN=tun0
NORMAL_CARD=eth0

iptables -I FORWARD -i $VIRTUAL_VPN -o $NORMAL_CARD \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o $NORMAL_CARD \
          -s 10.8.0.0/24 -j MASQUERADE
          
sysctl -w net.ipv4.ip_forward=1
          
# Trouver le nom de la carte réseau
ip a

Préparer le fichier d’importation pour l’utilisateur (22:00)

Créer un fichier simon-desktop.ovpn avec le contenu suivant:

client
dev tun
proto udp
remote xxxxxxxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3


<ca>
-----BEGIN CERTIFICATE-----
MII[...]lQ==
-----END CERTIFICATE-----
</ca>

<cert>
Certificate:
    Data:
        Version: 3 (0x2)
        [...]9b:2b:62:
         c2:a7:a4:8d
-----BEGIN CERTIFICATE-----
MII[...]LCp6SN
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIF[...]M54zA==
-----END ENCRYPTED PRIVATE KEY-----
</key>

Changer les sections “ca”, “cert” et “key” avec les valeurs des fichiers dans /etc/openvpn/easy-rsa/pki/ .

Installer OpenVPN sur Windows (26:20)

Utiliser (28:44)

  • https://checkip.foilen.com
  • Se connecter et entrer le mot de passe (29:28)
  • La connexion est établie, mais le trafic internet ne passe pas dedans (29:56)
    • Dû au mauvais ordre d’exécution du côté serveur. Il faut: démarrer OpenVPN, faire les commandes iptables et activer le relayage. Le bon ordre est dans l’article dans la section “Démarrer OpenVPN et rediriger le trafic”
  • Exécuter openvpn dans une session “screen” pour éviter que le processus ne soit tué lors d’une déconnexion SSH (30:56)
  • La connexion est établie, mais le trafic internet ne passe pas dedans (32:59)
    • Dû au relayage qui n’était pas activé
  • Ça fonctionne (33:46)
  • Se déconnecter (34:09)