VPN
On commence par installer openvpn si c'est pas déjà fait :
Et on installe des dépendances :
Puis, on ajoute une nouvelle règle à la table de routage :
Et on rajoute en fin de fichier
On crée l'interface lo:1, pour cela on édite le fichier suivant :
Et on ajoute les ligne suivantes à la fin du fichier avant de l'enregistrer :
On se rend sur notre vendeur d'accès vpn, perso je prends https://mullvad.net/, ils sont compétents de mon point de vue. Ils ont une large sélection de points de sortie, n'allez pas là où vous ne voudriez pas ;)
Pour une comparaison de vpn, voici un lien : https://docs.google.com/spreadsheets/d/1...t3bwg/edit
Vous télécharger les fichiers de configuration pour openvpn une fois conneté à votre compte sur le site.
On copie les fichiers suivants par sftp (pouvez utiliser filezilla : https://filezilla-project.org/ )
Puis le fichier :
Vous pouvez aussi envoyer cela depuis un terminal linux. Au préalable, il faut créer les dossiers sur la machine :
Puis, depuis un terminal sur votre ordinateur situé dans le dossier qui contient les fichiers, on peut envoyer les fichiers avec ces commandes :
Modifiez PORT-SSH pour le bon et le login (2 fois) et l'ip machine ;)
De retour sur le terminal ssh de la machine, vous déplacez ces fichiers au bon endroit :
On met des droits au fichier de mdp :
On active le mode exécutable pour un fichier au besoin :
Puis on modifier le fichier de config
Il contenait :
Maintenant il contient :
Afin que cette configuration se lance automatiquement, il lui faut un chemin depuis le dossier openvpn, pour cela un lien symbolique :
Et on passe aux scripts up.sh et down.sh en créant d'abord le dossier qui va les contenir :
On commence par le script "up.sh" :
Dedans on mets :
On voit une chaîne SERVICES qui apparaît, elle doit être créée dans notre fichier iptables (et on va en profiter pour virer les lignes du client torrent et ajouter celle pour le vpn) donc :
Et en début de fichier, après le bloc:
On ajoute :
Et on ajoute en même temps l'autorisation pour le vpn avant la dernière ligne de ce même fichier :
Et on peux désactiver les autorisations des ports p2p car ça passe par le vpn (on rajoute un dièse en début de ligne) :
Et on recharge les règles :
On crée le script down.sh :
Dedans on mets :
Dans les deux scripts qu'on vient d'ajouter, on voit qu'il faut ajouter un autre script qui vérifie que openvpn fonctionne toujours bien afin de couper rtorrent si ce dernier a lâché et qu'il ne l'a pas vu :)
On met ceci :
On donne des permissions aux scripts :
On dit à openvpn de lancer la bonne config au démarrage, dans le fichier :
Vous changez la ligne (on décommente et on met un nom de fichier) :
Maintenant, afin que rtorrent soit relié à l'adresse lo:1 qu'on a crée, il faut éditer sa config.
Et vous modifiez la ligne :
On va désactiver complètement l'ipv6 :
Et dedans on met à la fin :
Ne pas oublier de commenter la ligne concernant l'ipv6 de la localhost dans ce fichier aussi :
On ajoute un dièse :
On ajoute openvpn au démarrage de l'ordi :
Note : Alors j'avais des soucis. Je vais mettre quelques lignes sur ce que j'ai réalisé pour trouver la cause :
Dans le fichier "/etc/openvpn/mullvad/mullvad_##.conf", on peut ajouter :
Note Bonus :
Via la connexion VPN :
Et on ajoute :
Le fichier ".rtorrent.rc" contient tout ceci au final :
On commence par installer openvpn si c'est pas déjà fait :
Code :
sudo apt install openvpn
Et on installe des dépendances :
Code :
sudo apt install resolvconf screen psmisc
Puis, on ajoute une nouvelle règle à la table de routage :
Code :
sudo nano /etc/iproute2/rt_tables
Et on rajoute en fin de fichier
# Route pour le vpn 1
1 VPNMULL
1 VPNMULL
On crée l'interface lo:1, pour cela on édite le fichier suivant :
Code :
sudo nano /etc/network/interfaces
Et on ajoute les ligne suivantes à la fin du fichier avant de l'enregistrer :
# Une interface réseau pour le VPNMULL
auto lo:1
iface lo:1 inet static
address 192.168.0.1
netmask 255.255.255.255
auto lo:1
iface lo:1 inet static
address 192.168.0.1
netmask 255.255.255.255
On se rend sur notre vendeur d'accès vpn, perso je prends https://mullvad.net/, ils sont compétents de mon point de vue. Ils ont une large sélection de points de sortie, n'allez pas là où vous ne voudriez pas ;)
Pour une comparaison de vpn, voici un lien : https://docs.google.com/spreadsheets/d/1...t3bwg/edit
Vous télécharger les fichiers de configuration pour openvpn une fois conneté à votre compte sur le site.
On copie les fichiers suivants par sftp (pouvez utiliser filezilla : https://filezilla-project.org/ )
- mullvad_ca.crt
- mullvad_userpass.txt
- update-resolv-conf
Puis le fichier :
- mullvad_xx.conf
Vous pouvez aussi envoyer cela depuis un terminal linux. Au préalable, il faut créer les dossiers sur la machine :
Code :
sudo mkdir /etc/openvpn/mullvad
sudo mkdir /etc/openvpn/mullvad/files
Code :
scp -P PORT-SSH -r mullvad_ca.crt login@ip.de.la.machine:/home/login
scp -P PORT-SSH -r mullvad_userpass.txt login@ip.de.la.machine:/home/login
scp -P PORT-SSH -r update-resolv-conf login@ip.de.la.machine:/home/login
scp -P PORT-SSH -r mullvad_xx.conf login@ip.de.la.machine:/home/login
De retour sur le terminal ssh de la machine, vous déplacez ces fichiers au bon endroit :
Code :
sudo mv /home/login/mullvad_ca.crt /etc/openvpn/mullvad/files
sudo mv /home/login/mullvad_userpass.txt /etc/openvpn/mullvad/files
sudo mv /home/login/update-resolv-conf /etc/openvpn/mullvad/files
sudo mv /home/login/mullvad_xx.conf /etc/openvpn/mullvad
On met des droits au fichier de mdp :
Code :
sudo chmod 600 /etc/openvpn/mullvad/files/mullvad_userpass.txt
Code :
sudo chmod +x /etc/openvpn/mullvad/files/update-resolv-conf
Puis on modifier le fichier de config
Code :
sudo nano /etc/openvpn/mullvad/mullvad_xx.conf
Il contenait :
client
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288
cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA
proto udp
auth-user-pass mullvad_userpass.txt
ca mullvad_ca.crt
tun-ipv6
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
fast-io
remote-random
remote se-mma-005.mullvad.net 1195
remote se-mma-019.mullvad.net 1195
remote se-mma-007.mullvad.net 1195
remote se-mma-112.mullvad.net 1195
remote se-mma-016.mullvad.net 1195
remote se-mma-021.mullvad.net 1195
remote se-mma-107.mullvad.net 1195
remote se-mma-109.mullvad.net 1195
remote se-mma-017.mullvad.net 1195
remote se-mma-020.mullvad.net 1195
remote se-mma-013.mullvad.net 1195
remote se-mma-023.mullvad.net 1195
remote se-mma-018.mullvad.net 1195
remote se-mma-022.mullvad.net 1195
remote se-mma-110.mullvad.net 1195
remote se-mma-002.mullvad.net 1195
remote se-mma-015.mullvad.net 1195
remote se-mma-014.mullvad.net 1195
remote se-mma-111.mullvad.net 1195
remote se-mma-001.mullvad.net 1195
remote se-mma-024.mullvad.net 1195
remote se-mma-006.mullvad.net 1195
remote se-mma-113.mullvad.net 1195
remote se-mma-003.mullvad.net 1195
remote se-mma-108.mullvad.net 1195
remote se-mma-004.mullvad.net 1195
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288
cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA
proto udp
auth-user-pass mullvad_userpass.txt
ca mullvad_ca.crt
tun-ipv6
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
fast-io
remote-random
remote se-mma-005.mullvad.net 1195
remote se-mma-019.mullvad.net 1195
remote se-mma-007.mullvad.net 1195
remote se-mma-112.mullvad.net 1195
remote se-mma-016.mullvad.net 1195
remote se-mma-021.mullvad.net 1195
remote se-mma-107.mullvad.net 1195
remote se-mma-109.mullvad.net 1195
remote se-mma-017.mullvad.net 1195
remote se-mma-020.mullvad.net 1195
remote se-mma-013.mullvad.net 1195
remote se-mma-023.mullvad.net 1195
remote se-mma-018.mullvad.net 1195
remote se-mma-022.mullvad.net 1195
remote se-mma-110.mullvad.net 1195
remote se-mma-002.mullvad.net 1195
remote se-mma-015.mullvad.net 1195
remote se-mma-014.mullvad.net 1195
remote se-mma-111.mullvad.net 1195
remote se-mma-001.mullvad.net 1195
remote se-mma-024.mullvad.net 1195
remote se-mma-006.mullvad.net 1195
remote se-mma-113.mullvad.net 1195
remote se-mma-003.mullvad.net 1195
remote se-mma-108.mullvad.net 1195
remote se-mma-004.mullvad.net 1195
Maintenant il contient :
client
dev tun
resolv-retry infinite
#nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288
cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA
proto udp
route-nopull
auth-user-pass /etc/openvpn/mullvad/files/mullvad_userpass.txt
ca /etc/openvpn/mullvad/files/mullvad_ca.crt
#tun-ipv6
script-security 2
#up /etc/openvpn/update-resolv-conf
#down /etc/openvpn/update-resolv-conf
# Scripts vpn
up /etc/openvpn/mullvad/scripts/up.sh
down /etc/openvpn/mullvad/scripts/down.sh
fast-io
pull-filter ignore "ifconfig-ipv6"
pull-filter ignore "route-ipv6"
push "dhcp-option DNS 193.138.218.74"
remote-random
remote se-mma-005.mullvad.net 1195
remote se-mma-019.mullvad.net 1195
remote se-mma-007.mullvad.net 1195
remote se-mma-112.mullvad.net 1195
remote se-mma-016.mullvad.net 1195
remote se-mma-021.mullvad.net 1195
remote se-mma-107.mullvad.net 1195
remote se-mma-109.mullvad.net 1195
remote se-mma-017.mullvad.net 1195
remote se-mma-020.mullvad.net 1195
remote se-mma-013.mullvad.net 1195
remote se-mma-023.mullvad.net 1195
remote se-mma-018.mullvad.net 1195
remote se-mma-022.mullvad.net 1195
remote se-mma-110.mullvad.net 1195
remote se-mma-002.mullvad.net 1195
remote se-mma-015.mullvad.net 1195
remote se-mma-014.mullvad.net 1195
remote se-mma-111.mullvad.net 1195
remote se-mma-001.mullvad.net 1195
remote se-mma-024.mullvad.net 1195
remote se-mma-006.mullvad.net 1195
remote se-mma-113.mullvad.net 1195
remote se-mma-003.mullvad.net 1195
remote se-mma-108.mullvad.net 1195
remote se-mma-004.mullvad.net 1195
Notes :dev tun
resolv-retry infinite
#nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288
cipher AES-256-CBC
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA
proto udp
route-nopull
auth-user-pass /etc/openvpn/mullvad/files/mullvad_userpass.txt
ca /etc/openvpn/mullvad/files/mullvad_ca.crt
#tun-ipv6
script-security 2
#up /etc/openvpn/update-resolv-conf
#down /etc/openvpn/update-resolv-conf
# Scripts vpn
up /etc/openvpn/mullvad/scripts/up.sh
down /etc/openvpn/mullvad/scripts/down.sh
fast-io
pull-filter ignore "ifconfig-ipv6"
pull-filter ignore "route-ipv6"
push "dhcp-option DNS 193.138.218.74"
remote-random
remote se-mma-005.mullvad.net 1195
remote se-mma-019.mullvad.net 1195
remote se-mma-007.mullvad.net 1195
remote se-mma-112.mullvad.net 1195
remote se-mma-016.mullvad.net 1195
remote se-mma-021.mullvad.net 1195
remote se-mma-107.mullvad.net 1195
remote se-mma-109.mullvad.net 1195
remote se-mma-017.mullvad.net 1195
remote se-mma-020.mullvad.net 1195
remote se-mma-013.mullvad.net 1195
remote se-mma-023.mullvad.net 1195
remote se-mma-018.mullvad.net 1195
remote se-mma-022.mullvad.net 1195
remote se-mma-110.mullvad.net 1195
remote se-mma-002.mullvad.net 1195
remote se-mma-015.mullvad.net 1195
remote se-mma-014.mullvad.net 1195
remote se-mma-111.mullvad.net 1195
remote se-mma-001.mullvad.net 1195
remote se-mma-024.mullvad.net 1195
remote se-mma-006.mullvad.net 1195
remote se-mma-113.mullvad.net 1195
remote se-mma-003.mullvad.net 1195
remote se-mma-108.mullvad.net 1195
remote se-mma-004.mullvad.net 1195
- Les chemins complets des fichiers sont renseignés.
- On désactive tun-ipv6 pour désactiver l'ipv6.
- D'autres scripts "up" et "down" seront utilisés, on va les créer plus loin.
- On ajoute "route-nopull" pour éviter le changement automatique de la table de routage par le vpn.
- "pull-filter" m'est utile car je désactive l'ipv6 et sinon ça plante (cf logs).
- push "dhcp-option DNS 193.138.218.74" pour renseigner le dns de mullvad sur cette connexion
Afin que cette configuration se lance automatiquement, il lui faut un chemin depuis le dossier openvpn, pour cela un lien symbolique :
Code :
sudo ln -s /etc/openvpn/mullvad/mullvad_xx.conf /etc/openvpn/client_mull.conf
Et on passe aux scripts up.sh et down.sh en créant d'abord le dossier qui va les contenir :
Code :
sudo mkdir /etc/openvpn/mullvad/scripts
On commence par le script "up.sh" :
Code :
sudo nano /etc/openvpn/mullvad/scripts/up.sh
Dedans on mets :
#! /bin/bash
# This script enables policy routing after the tunnel interface is brought up
# Policy routing is used to make sure response packets go through the tunnel interface
# This is mandatory when your ISP has setup anti-spoofing filters
# Add a default route via tun0 into the VPN routing table
ip route add default dev $1 table VPNMULL
# Pass traffic from lo:1 (192.168.0.1) to the VPN routing table, using policy routing (ip rule commands)
ip rule add from 192.168.0.1/32 table VPNMULL
# Pass traffic from tun0 IP address to the VPN routing table
ip rule add from $4/32 table VPNMULL
#On ajoute les regles iptables pour faire le NAT
# Source NAT and destination NAT rules to make sure the incoming and ougoing packets on 192.168.0.1 are redirected
iptables -A PREROUTING -t nat -i $1 -p tcp --dport 1195 -j DNAT --to 192.168.0.1
iptables -A PREROUTING -t nat -i $1 -p udp --dport 1195 -j DNAT --to 192.168.0.1
iptables -A POSTROUTING -t nat -o $1 -j MASQUERADE
# Allow session continuation traffic
iptables -A INPUT -i $1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow Bittorrent traffic via tun0
#iptables -A SERVICES -p tcp --match multiport --dports 59XXX:59YYY -j ACCEPT
iptables -A SERVICES -p tcp --dport 60006 -j ACCEPT
iptables -A SERVICES -p udp --dport 60007 -j ACCEPT
# Disallow BitTorrent traffic via eth0 - Just to be extra safe
iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
#Demarrage de rtorrent
#/etc/init.d/utilisateur-rtorrent start
systemctl start rtorrent
#Resolveconf mullvad
/etc/openvpn/mullvad/files/update-resolv-conf
#Demarrage du script verifiant que le VPN est toujours actif
killall checkVPN
/usr/bin/checkVPN &
Notes :# This script enables policy routing after the tunnel interface is brought up
# Policy routing is used to make sure response packets go through the tunnel interface
# This is mandatory when your ISP has setup anti-spoofing filters
# Add a default route via tun0 into the VPN routing table
ip route add default dev $1 table VPNMULL
# Pass traffic from lo:1 (192.168.0.1) to the VPN routing table, using policy routing (ip rule commands)
ip rule add from 192.168.0.1/32 table VPNMULL
# Pass traffic from tun0 IP address to the VPN routing table
ip rule add from $4/32 table VPNMULL
#On ajoute les regles iptables pour faire le NAT
# Source NAT and destination NAT rules to make sure the incoming and ougoing packets on 192.168.0.1 are redirected
iptables -A PREROUTING -t nat -i $1 -p tcp --dport 1195 -j DNAT --to 192.168.0.1
iptables -A PREROUTING -t nat -i $1 -p udp --dport 1195 -j DNAT --to 192.168.0.1
iptables -A POSTROUTING -t nat -o $1 -j MASQUERADE
# Allow session continuation traffic
iptables -A INPUT -i $1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow Bittorrent traffic via tun0
#iptables -A SERVICES -p tcp --match multiport --dports 59XXX:59YYY -j ACCEPT
iptables -A SERVICES -p tcp --dport 60006 -j ACCEPT
iptables -A SERVICES -p udp --dport 60007 -j ACCEPT
# Disallow BitTorrent traffic via eth0 - Just to be extra safe
iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
#Demarrage de rtorrent
#/etc/init.d/utilisateur-rtorrent start
systemctl start rtorrent
#Resolveconf mullvad
/etc/openvpn/mullvad/files/update-resolv-conf
#Demarrage du script verifiant que le VPN est toujours actif
killall checkVPN
/usr/bin/checkVPN &
- La variable $1 contient le nom d’interface et la variable $4 l’adresse ip du tunnel. Ces deux variables sont transmises par openvpn aux scripts up et down.
- Changer le port 1195 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 60006 et 60007 pour les ports renseignés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais garder -rtorrent (si vous avez mis transmission et non rtorent comme montré dans ce tuto)
On voit une chaîne SERVICES qui apparaît, elle doit être créée dans notre fichier iptables (et on va en profiter pour virer les lignes du client torrent et ajouter celle pour le vpn) donc :
Code :
sudo nano /etc/init.d/iptablesrules
Et en début de fichier, après le bloc:
# Autorisation trafic sortant
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
On ajoute :
# Ajout pour config vpn
iptables -N SERVICES
iptables -N SERVICES
Et on ajoute en même temps l'autorisation pour le vpn avant la dernière ligne de ce même fichier :
# VPN
iptables -t filter -A INPUT -p udp --dport 1195 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 1195 -j ACCEPT
Et on peux désactiver les autorisations des ports p2p car ça passe par le vpn (on rajoute un dièse en début de ligne) :
#Autorisation p2p
#iptables -t filter -A INPUT -p tcp --dport 6890 -j ACCEPT
#iptables -t filter -A INPUT -p udp --dport 6881 -j ACCEPT
#iptables -t filter -A INPUT -p tcp --dport 6890 -j ACCEPT
#iptables -t filter -A INPUT -p udp --dport 6881 -j ACCEPT
Et on recharge les règles :
Code :
sudo /etc/init.d/iptablesrules
On crée le script down.sh :
Code :
sudo nano /etc/openvpn/mullvad/scripts/down.sh
Dedans on mets :
#! /bin/sh
# This script disables policy routing before the tunnel interface is brought down
killall checkVPN
#/etc/init.d/utilisateur-rtorrent stop
systemctl stop rtorrent
#On efface les regles iptables ajoutees
iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
#iptables -D SERVICES -p tcp --match multiport --dports 59XXX:59YYY -j ACCEPT
iptables -D SERVICES -p udp --dport 60007 -j ACCEPT
iptables -D SERVICES -p tcp --dport 60006 -j ACCEPT
iptables -D INPUT -i $1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -D POSTROUTING -t nat -o $1 -j MASQUERADE
iptables -D PREROUTING -t nat -i $1 -p udp --dport 1195 -j DNAT --to 192.168.0.1
iptables -D PREROUTING -t nat -i $1 -p tcp --dport 1195 -j DNAT --to 192.168.0.1
# Remove rule for the secondary loopback IP address (192.168.0.1)
ip rule del from 192.168.0.1/32 table VPNMULL
# Remove rule for tun0 IP address
ip rule del from $4/32 table VPNMULL
#Resolveconf mullvad
/etc/openvpn/mullvad/files/update-resolv-conf
Notes :# This script disables policy routing before the tunnel interface is brought down
killall checkVPN
#/etc/init.d/utilisateur-rtorrent stop
systemctl stop rtorrent
#On efface les regles iptables ajoutees
iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
#iptables -D SERVICES -p tcp --match multiport --dports 59XXX:59YYY -j ACCEPT
iptables -D SERVICES -p udp --dport 60007 -j ACCEPT
iptables -D SERVICES -p tcp --dport 60006 -j ACCEPT
iptables -D INPUT -i $1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -D POSTROUTING -t nat -o $1 -j MASQUERADE
iptables -D PREROUTING -t nat -i $1 -p udp --dport 1195 -j DNAT --to 192.168.0.1
iptables -D PREROUTING -t nat -i $1 -p tcp --dport 1195 -j DNAT --to 192.168.0.1
# Remove rule for the secondary loopback IP address (192.168.0.1)
ip rule del from 192.168.0.1/32 table VPNMULL
# Remove rule for tun0 IP address
ip rule del from $4/32 table VPNMULL
#Resolveconf mullvad
/etc/openvpn/mullvad/files/update-resolv-conf
- Changer le port 1195 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 60006 et 60007 pour les ports rensiegnés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais garder -rtorrent (toujours seulement si transmission et non rtorrent)
Dans les deux scripts qu'on vient d'ajouter, on voit qu'il faut ajouter un autre script qui vérifie que openvpn fonctionne toujours bien afin de couper rtorrent si ce dernier a lâché et qu'il ne l'a pas vu :)
Code :
sudo nano /usr/bin/checkVPN
On met ceci :
#! /bin/bash
#On fait un ping vers un des résolveurs dns de FDN toutes les 5min, et si aucun paquet n est reçu en retour (0 packets received, le 0 etant à la position 23 sur la ligne venant de ping) on relance le VPN
#
while [ 1 > 0 ]; do
sleep 300
T=`ping -I 192.168.0.1 -c 1 80.67.169.12 |grep "packets transmitted"`
if [[ ${T:23:1} != "1" ]]
then
/etc/init.d/openvpn restart
fi
done
Ou dns mullvad : 193.138.218.74 là ça doit être un dns fdn.#On fait un ping vers un des résolveurs dns de FDN toutes les 5min, et si aucun paquet n est reçu en retour (0 packets received, le 0 etant à la position 23 sur la ligne venant de ping) on relance le VPN
#
while [ 1 > 0 ]; do
sleep 300
T=`ping -I 192.168.0.1 -c 1 80.67.169.12 |grep "packets transmitted"`
if [[ ${T:23:1} != "1" ]]
then
/etc/init.d/openvpn restart
fi
done
On donne des permissions aux scripts :
Code :
sudo chmod +x /etc/openvpn/mullvad/scripts/up.sh
sudo chmod +x /etc/openvpn/mullvad/scripts/down.sh
sudo chmod +x /usr/bin/checkVPN
On dit à openvpn de lancer la bonne config au démarrage, dans le fichier :
Code :
sudo nano /etc/default/openvpn
Vous changez la ligne (on décommente et on met un nom de fichier) :
AUTOSTART="client_mull"
Maintenant, afin que rtorrent soit relié à l'adresse lo:1 qu'on a crée, il faut éditer sa config.
Code :
sudo nano /home/rtorrent/.rtorrent.rc
Et vous modifiez la ligne :
network.bind_address.set = 192.168.0.1
On va désactiver complètement l'ipv6 :
Code :
sudo nano /etc/sysctl.conf
Et dedans on met à la fin :
# Desactivation de l ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.lo:1.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.lo:1.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1
Ne pas oublier de commenter la ligne concernant l'ipv6 de la localhost dans ce fichier aussi :
Code :
sudo nano /etc/hosts
On ajoute un dièse :
#::1 localhost ip6-localhost ip6-loopback
On ajoute openvpn au démarrage de l'ordi :
Code :
sudo update-rc.d openvpn defaults
sudo /etc/init.d/openvpn restart
Note : Alors j'avais des soucis. Je vais mettre quelques lignes sur ce que j'ai réalisé pour trouver la cause :
Dans le fichier "/etc/openvpn/mullvad/mullvad_##.conf", on peut ajouter :
status openvpn-status.log
log-append /var/log/openvpn.log
verb 4
Allez lire le fichier "/var/log/openvpn.log" pour les lire, ou pour avoir seulement les 100 dernières lignes de ce fichier :log-append /var/log/openvpn.log
verb 4
Code :
sudo tail -n 100 /var/log/openvpn.log
Note Bonus :
- Un site pour avoir son ip :https://icanhazip.com/
Code :
sudo curl https://icanhazip.com/
Code :
curl --interface 192.168.0.1 https://icanhazip.com/
ou
curl --interface lo:1 https://icanhazip.com/
- Pouvez voir que votre rutorrent se plante avec "sudo service openvpn stop" en ssh et l'interface web ne recharge plus :
Lien incorrect avec rTorrent. Vérifiez qu'il soit bien en cours d'exécution. Vérifiez la configuration de $scgi_port et de $scgi_host dans config.php et de scgi_port dans le fichier de configuration de rTorrent.
Pour relancer :Code :
sudo service openvpn start
- Vous pouvez vérifier votre ip en utilisant : https://ipleak.net/ et le lien magnet fourni :)
- Ou celui ci : http://ipmagnet.services.cbcdn.com
Code :
sudo nano /home/rtorrent/.rtorrent.rc
# Get public IP address without the need of having dynamic DNS service, also works from behind NAT, through tunnel
method.insert = get_public_ip_address, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(curl --interface tun0 http://icanhazip.com/)\""
# The IP address reported to the tracker. (ip) This handles dynamic IP's as well.
schedule2 = ip_tick, 0, 1800, "network.local_address.set=(get_public_ip_address)"
method.insert = get_public_ip_address, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(curl --interface tun0 http://icanhazip.com/)\""
# The IP address reported to the tracker. (ip) This handles dynamic IP's as well.
schedule2 = ip_tick, 0, 1800, "network.local_address.set=(get_public_ip_address)"
Le fichier ".rtorrent.rc" contient tout ceci au final :
# Port SCGI
scgi_port = 127.0.0.1:5000
#ou
#network.scgi.open_port = 127.0.0.1:5000
#source : https://freedif.org/how-to-install-flood...-debian-10
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.
# Maximum and minimum number of peers to connect to per torrent.
#
throttle.min_peers.normal.set = 40
throttle.max_peers.normal.set = 100
# Same as above but for seeding completed torrents (-1 = same as downloading)
#
throttle.min_peers.seed.set = 10
throttle.max_peers.seed.set = 100
# Maximum number of simultanious uploads per torrent.
#
throttle.max_uploads.set = 15
# Global upload and download rate in KiB. "0" for unlimited.
#
throttle.global_down.max_rate.set_kb = 0
throttle.global_up.max_rate.set_kb = 0
# Default directory to save the downloaded torrents.
#
directory.default.set = /home/rtorrent/download
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = /home/rtorrent/session
#ou
#session = /home/rtorrent/session
#Source pour le session : https://github.com/rakshasa/rtorrent/wiki/Using-DHT
# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load_start=/home/rtorrent/session/*.torrent
schedule2 = untied_directory,5,5,stop_untied=
# Close torrents when diskspace is low.
#
schedule2 = low_diskspace,5,60,close_low_diskspace=2000M
# The ip address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no
#network.local_address.set = 192.168.0.1
# Get public IP address without the need of having dynamic DNS service, also works from behind NAT, through tunnel
method.insert = get_public_ip_address, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(curl --interface tun0 http://icanhazip.com/)\""
# The IP address reported to the tracker. (ip) This handles dynamic IP's as well.
schedule2 = ip_tick, 0, 1800, "network.local_address.set=(get_public_ip_address)"
# The ip address the listening socket and outgoing connections is
# bound to.
#
network.bind_address.set = 192.168.0.1
#network.bind_address.set = rakshasa.no
# Port range to use for listening.
#
network.port_range.set = 60006-60006
# Start opening ports at a random position within the port range.
#
network.port_random.set = no
# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#
pieces.hash.on_completion.set = no
# Set whether the client should try to connect to UDP trackers.
#
trackers.use_udp.set = yes
# Alternative calls to bind and ip that should handle dynamic ip's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext
#protocol.encryption.set = require,require_RC4
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht.mode.set = auto
# UDP port to use for DHT.
#
dht.port.set = 60007
# Enable peer exchange (for torrents not marked private)
#
protocol.pex.set = yes
# Set downlad list layout style. ("full", "compact")
#
#ui.torrent_list.layout.set = "full"
scgi_port = 127.0.0.1:5000
#ou
#network.scgi.open_port = 127.0.0.1:5000
#source : https://freedif.org/how-to-install-flood...-debian-10
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.
# Maximum and minimum number of peers to connect to per torrent.
#
throttle.min_peers.normal.set = 40
throttle.max_peers.normal.set = 100
# Same as above but for seeding completed torrents (-1 = same as downloading)
#
throttle.min_peers.seed.set = 10
throttle.max_peers.seed.set = 100
# Maximum number of simultanious uploads per torrent.
#
throttle.max_uploads.set = 15
# Global upload and download rate in KiB. "0" for unlimited.
#
throttle.global_down.max_rate.set_kb = 0
throttle.global_up.max_rate.set_kb = 0
# Default directory to save the downloaded torrents.
#
directory.default.set = /home/rtorrent/download
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = /home/rtorrent/session
#ou
#session = /home/rtorrent/session
#Source pour le session : https://github.com/rakshasa/rtorrent/wiki/Using-DHT
# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load_start=/home/rtorrent/session/*.torrent
schedule2 = untied_directory,5,5,stop_untied=
# Close torrents when diskspace is low.
#
schedule2 = low_diskspace,5,60,close_low_diskspace=2000M
# The ip address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no
#network.local_address.set = 192.168.0.1
# Get public IP address without the need of having dynamic DNS service, also works from behind NAT, through tunnel
method.insert = get_public_ip_address, simple|private, "execute.capture=bash,-c,\"eval echo -n \$(curl --interface tun0 http://icanhazip.com/)\""
# The IP address reported to the tracker. (ip) This handles dynamic IP's as well.
schedule2 = ip_tick, 0, 1800, "network.local_address.set=(get_public_ip_address)"
# The ip address the listening socket and outgoing connections is
# bound to.
#
network.bind_address.set = 192.168.0.1
#network.bind_address.set = rakshasa.no
# Port range to use for listening.
#
network.port_range.set = 60006-60006
# Start opening ports at a random position within the port range.
#
network.port_random.set = no
# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#
pieces.hash.on_completion.set = no
# Set whether the client should try to connect to UDP trackers.
#
trackers.use_udp.set = yes
# Alternative calls to bind and ip that should handle dynamic ip's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext
#protocol.encryption.set = require,require_RC4
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht.mode.set = auto
# UDP port to use for DHT.
#
dht.port.set = 60007
# Enable peer exchange (for torrents not marked private)
#
protocol.pex.set = yes
# Set downlad list layout style. ("full", "compact")
#
#ui.torrent_list.layout.set = "full"