9. On pose un vpn sur rtorrent :
Sources :
https://tech.kanka.ch/index.php/faire-tr...ur-debian/ [https://archive.fo/DHEW9] Screenshot_Archive_51
https://baroumas.blogspot.com/2015/08/fo...envpn.html [https://archive.fo/bTH67] Screenshot_Archive_52
https://mondedie.fr/d/5933-tuto-faire-pa...unnnel-vpn [https://archive.fo/w0acY] Screenshot_Archive_53
Avec réponses : https://mondedie.fr/d/5934 [https://archive.fo/zPqaH] Screenshot_Archive_54
https://lucinfordi.fr/viewtopic.php?t=36 [https://archive.fo/0WCsJ] Screenshot_Archive_55
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 Mullvad, 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 ;)
Source : https://mullvad.net/fr/guides/linux-open...tallation/ [https://archive.fo/JaL01] Screenshot_Archive_50
https://github.com/rakshasa/rtorrent/wik...n-rTorrent [https://archive.fo/akm55]
On copie les fichiers suivants par sftp (pouvez utiliser filezilla : https://filezilla-project.org/ )
- mullvad_ca.crt
- mullvad_userpass.txt
- update-resolv-conf
dans le dossier "/etc/openvpn/mullvad/files"
Puis le fichier :
- mullvad_xx.conf
dans le dossier "/etc/openvpn/mullvad"
Note : Vous avez besoin d'être root, pour autoriser la conexion en root sous winscp, vous devez modifier la config ssh :
PermitRootLogin no
devient
PermitRootLogin yes
On relance ssh :
N'oubliez pas de remodif après.
De retour en root sur la machine par ssh.
On active le mode exécutable pour un fichier au besoin :
Puis on modifier le fichier de config
Il contenait :
Maintenant il contient :
Note :
- 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).
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'abod le dossier qui va les contenir :
On commence par le script "up.sh" :
Dedans on mets :
Notes :
- 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 1300 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 6881 et 6890 pour les ports renseignés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais gardé -rtorrent
- La ligne "#/etc/init.d/utilisateur-rtorrent start" me servait lorsque j'utilisais le script suivant "https://gist.githubusercontent.com/Magic...stfile1.sh" que je mettais dans "/etc/init.d/". Voir sur le net pour s'en servir.
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 avant la dernière ligne du fichier :
Et on ajoute en même temps l'autorisation pour le vpn :
Et on peux désactiver les autorisations des ports p2p c'est activé dans les scripts :
Et on recharge les règles :
On crée le script down.sh :
Dedans on mets :
Note :
- Changer le port 1300 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 6881 et 6890 pour les ports rensiegnés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais garder -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 :)
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 :
Maintenant, afin que rtorrent soit relié à l'adresse lo:1 qu'on a crée, il faut éditer sa config. On édite la configuration :
Et vous rajoutez :
On va donc désactiver complètement l'ipv6 :
Et dedans on met à la fin :
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 "/etc/openvpn/mullvad/mullvad_##.conf", on peut ajouter :
Ce qui créera les fichiers concernés dans "/etc/openvpn" afin d'avoir les logs.
De mon côté c'était un soucis de résolution du nom de domaine. Et même un simple "ping -c 3 google.com" ne donnait rien :/
Pour régler ce soucis, j'ai modifié le fichier "/etc/network/interfaces" pour avoir :
dns-nameservers --> doit pointer vers l'ip locale de la box qui fera la résolution des nom de domaine, vous pouvez avoir cette ip dans l'admin de votre box.
Note Bonus :
- Un site pour avoir son ip :
- 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 : "sudo service openvpn start"
Vous pouvez vérifier votre ip en utilisant : https://ipleak.net/ et le lien magnet fourni :)
Sources :
https://tech.kanka.ch/index.php/faire-tr...ur-debian/ [https://archive.fo/DHEW9] Screenshot_Archive_51
https://baroumas.blogspot.com/2015/08/fo...envpn.html [https://archive.fo/bTH67] Screenshot_Archive_52
https://mondedie.fr/d/5933-tuto-faire-pa...unnnel-vpn [https://archive.fo/w0acY] Screenshot_Archive_53
Avec réponses : https://mondedie.fr/d/5934 [https://archive.fo/zPqaH] Screenshot_Archive_54
https://lucinfordi.fr/viewtopic.php?t=36 [https://archive.fo/0WCsJ] Screenshot_Archive_55
On commence par installer openvpn si c'est pas déjà fait :
Code :
sudo apt-get install openvpn
Et on installe des dépendances :
Code :
sudo apt-get 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
Code :
# Route pour le vpn 1
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 :
Code :
# 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
On se rend sur notre vendeur d'accès vpn, perso je prends Mullvad, 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 ;)
Source : https://mullvad.net/fr/guides/linux-open...tallation/ [https://archive.fo/JaL01] Screenshot_Archive_50
https://github.com/rakshasa/rtorrent/wik...n-rTorrent [https://archive.fo/akm55]
On copie les fichiers suivants par sftp (pouvez utiliser filezilla : https://filezilla-project.org/ )
- mullvad_ca.crt
- mullvad_userpass.txt
- update-resolv-conf
dans le dossier "/etc/openvpn/mullvad/files"
Puis le fichier :
- mullvad_xx.conf
dans le dossier "/etc/openvpn/mullvad"
Note : Vous avez besoin d'être root, pour autoriser la conexion en root sous winscp, vous devez modifier la config ssh :
Code :
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
devient
PermitRootLogin yes
On relance ssh :
Code :
sudo /etc/init.d/ssh restart
N'oubliez pas de remodif après.
De retour en root sur la machine par ssh.
On active le mode exécutable pour un fichier au besoin :
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 :
Code :
client
dev tun
proto udp
remote ca.mullvad.net 1300
cipher AES-256-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288
fast-io
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
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA
Maintenant il contient :
Code :
client
dev tun
proto udp
route-nopull
remote ca.mullvad.net 1300
cipher AES-256-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288
fast-io
pull-filter ignore "ifconfig-ipv6 "
pull-filter ignore "route-ipv6 "
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/mullvad/files/update-resolv-conf
#down /etc/openvpn/mullvad/files/update-resolv-conf
# Scripts vpn
up /etc/openvpn/mullvad/scripts/up.sh
down /etc/openvpn/mullvad/scripts/down.sh
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA
Note :
- 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).
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'abod 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 :
Code :
#! /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 1300 -j DNAT --to 192.168.0.1
iptables -A PREROUTING -t nat -i $1 -p udp --dport 1300 -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 6890 -j ACCEPT
iptables -A SERVICES -p udp --dport 6881 -j ACCEPT
# Disallow BitTorrent traffic via eth0 - Just to be extra safe ;)
iptables -A 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 :
- 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 1300 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 6881 et 6890 pour les ports renseignés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais gardé -rtorrent
- La ligne "#/etc/init.d/utilisateur-rtorrent start" me servait lorsque j'utilisais le script suivant "https://gist.githubusercontent.com/Magic...stfile1.sh" que je mettais dans "/etc/init.d/". Voir sur le net pour s'en servir.
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:
Citation :# 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
On ajoute avant la dernière ligne du fichier :
Code :
# Ajout pour config vpn
iptables -N SERVICES
Et on ajoute en même temps l'autorisation pour le vpn :
Code :
# VPN
iptables -t filter -A INPUT -p udp --dport 1300 -j ACCEPT
Et on peux désactiver les autorisations des ports p2p c'est activé dans les scripts :
Code :
#Autorisation p2p
#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 :
Code :
#! /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 tcp --dport 6881 -j ACCEPT
iptables -D SERVICES -p tcp --dport 6890 -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 1300 -j DNAT --to 192.168.0.1
iptables -D PREROUTING -t nat -i $1 -p tcp --dport 1300 -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
Note :
- Changer le port 1300 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 6881 et 6890 pour les ports rensiegnés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais garder -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 :
Code :
#! /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
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 :
Code :
AUTOSTART="client_mull"
Maintenant, afin que rtorrent soit relié à l'adresse lo:1 qu'on a crée, il faut éditer sa config. On édite la configuration :
Code :
sudo nano /home/rtorrent/.rtorrent.rc
Et vous rajoutez :
Code :
network.bind_address.set = 192.168.0.1
On va donc désactiver complètement l'ipv6 :
Code :
sudo nano /etc/sysctl.conf
Et dedans on met à la fin :
Code :
# 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
On ajoute openvpn au démarrage de l'ordi :
Code :
sudo update-rc.d openvpn defaults
/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 "/etc/openvpn/mullvad/mullvad_##.conf", on peut ajouter :
Code :
status openvpn-status.log
log-append openvpn.log
verb 4
De mon côté c'était un soucis de résolution du nom de domaine. Et même un simple "ping -c 3 google.com" ne donnait rien :/
Pour régler ce soucis, j'ai modifié le fichier "/etc/network/interfaces" pour avoir :
Code :
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.1
dns-nameservers --> doit pointer vers l'ip locale de la box qui fera la résolution des nom de domaine, vous pouvez avoir cette ip dans l'admin de votre box.
Note Bonus :
- Un site pour avoir son ip :
Code :
wget https://icanhazip.com/
"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 : "sudo service openvpn start"
Vous pouvez vérifier votre ip en utilisant : https://ipleak.net/ et le lien magnet fourni :)