Bonjour et bienvenue sur Lucgeek

Mise en place OpenVpn avec client Mullvad

-Couchpotato -Sickrage
-Plex -Serviio -Vpn
Avatar de l’utilisateur
lucgeek
Administrateur du site
Messages : 33
Enregistré le : 31 janv. 2016, 19:27
Localisation : Picardie
Zodiac :
Contact :
France

Mise en place OpenVpn avec client Mullvad

Message non lupar lucgeek » 22 avr. 2017, 18:33

Ce Topic suit celui-Ci
Le but étant de faire passer uniquement le trafic de la Seedbox dans le vpn et ainsi libéré tout accès à votre serveur.
L’original de ce Topic vient de ou je l’ai appris
https://www.nas4free.org/forums/viewtopic.php?f=94&t=9018
https://mondedie.fr/d/5933-Tuto-Faire-passer-le-traffic-bitTorrent-dans-un-tunnnel-VPN
https://tech.kanka.ch/index.php/faire-transiter-uniquement-les-torrents-dans-un-tunnel-openvpn-sur-un-serveur-debian/
Install OpenVpn mullvad Debian/Ubuntu

Code : Tout sélectionner

apt-get install openvpn

Ajout de la nouvelle table de routage

Code : Tout sélectionner

echo 1 VPN >> /etc/iproute2/rt_tables

Création de l’interface lo:1:
On édite le fichier "interfaces"

Code : Tout sélectionner

nano /etc/network/interfaces

On ajoute ceci:

Code : Tout sélectionner

# The secondary loopback network interface
auto lo:1
        iface lo:1 inet static
        address 192.168.0.1
        netmask 255.255.255.255

Configuration Vpn
Récupérer les fichiers de configuration et les certificats chez mullvad.net.
une fois votre compte créer suivez les images
mullvad1.PNG
mullvad1.PNG (15.71 Kio) Vu 1369 fois
mullvad1.PNG
mullvad1.PNG (15.71 Kio) Vu 1369 fois

mullvad2.PNG
mullvad2.PNG (30.29 Kio) Vu 1369 fois
mullvad2.PNG
mullvad2.PNG (30.29 Kio) Vu 1369 fois

mullvad3.PNG
mullvad3.PNG (77.85 Kio) Vu 1369 fois
mullvad3.PNG
mullvad3.PNG (77.85 Kio) Vu 1369 fois

c'est un fichier .zip dézziper le et déplacer les fichiers ci-dessous dans leur endroit respectif .
Seulement c’est 4 là nous intéresse
ca.crt
mullvad.crt
mullvad.key
mullvad_linux.conf
Renommé le fichier « mullvad_linux.conf » par « openvpn.conf »

Vous pouvez les mettre où bon vous semble, mais dans ce tuto les fichiers de configuration vont dans /etc/openvpn/client/mullvad/config
Les certificats vont dans /etc/openvpn/client/mullvad/auth
Les scripts vont dans /etc/openvpn/client/mullvad/scripts
Éditer ensuite le fichier de configuration

Code : Tout sélectionner

nano /etc/openvpn/client/mullvad/config/openvpn.conf

Et le modifier comme suit :
client
dev tun
proto udp

;Pas de modification depuis le serveur de la table de routage
route-nopull

;Scripts locaux gérant les routes et le client torrent
script-security 2
up /etc/openvpn/client/mullvad/scripts/up.sh
down /etc/openvpn/client/mullvad/scripts/down.sh

; CERT
ca /etc/openvpn/client/mullvad/auth/ca.crt
cert /etc/openvpn/client/mullvad/auth/mullvad.crt
key /etc/openvpn/client/mullvad/auth/mullvad.key
ns-cert-type server
cipher AES-256-CBC

; HOST
remote se.mullvad.net 1300
resolv-retry infinite

; AUTH
persist-key
persist-tun

comp-lzo
verb 1

;Maintien de la connexion: ping envoyé toutes les 10s, restart si pas de réponses pendant 60s
keepalive 10 60


Quelques commentaires:
route-nopull indique à openvpn d’ignorer les changements de routage poussés par le serveur
script-security sert à définir les choses que peuvent faire les scripts up.sh et down.sh; plus à leur sujets plus bas
auth-user-pass pass : le fichier pass contient les login et mot de passe de la connexion VPN
keepalive 10 60 envoie un ping toutes les 10 secondes dans le VPN, et se reconnecte au VPN si aucun ping n’a été reçu en retour pendant 60 secondes
On crée un lien symbolique vers le fichier de configuration (plus facile d’accès, et nécessaire pour le lancement automatique du VPN):

Code : Tout sélectionner

ln -s /etc/openvpn/client/mullvad/config/openvpn.conf /etc/openvpn/client.conf

Script up.sh
up.sh est le script lancé une fois que la connexion VPN est établie, et qui sert à définir le routage. On édite:

Code : Tout sélectionner

nano /etc/openvpn/client/mullvad/scripts/up.sh

Copier/Coller
#! /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 VPN

# 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 VPN

# Pass traffic from tur0 IP address to the VPN routing table
ip rule add from $4/32 table VPN

#sed -i 's/\(\"bind-address-ipv4\":\).*/\1\ \"'"$4"'\",/' /etc/transmission-daemon/settings.json

#On ajoute les règles 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 $
iptables -A PREROUTING -t nat -i $1 -p tcp --dport 443 -j DNAT --to 192.168.0.1
iptables -A PREROUTING -t nat -i $1 -p udp --dport 443 -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 --dport PORT_TORRENT -j ACCEPT # rTorrent random range
iptables -A SERVICES -p udp --dport PORT_TORRENT -j ACCEPT # DHT

# Disallow BitTorrent traffic via eth0 - Just to be extra safe ;)
iptables -A FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
#Démarrage du script vérifiant que le VPN est toujours actif
killall checkVPN
/usr/bin/checkVPN &



Quelques commentaires:

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.
Le port 443 est le port utilisé par mullvad, à changer selon votre fournisseur VPN
PORT_TORRENT est le numéro de port utilisé par le client torrent, vous pouvez choisir ce que vous voulez
La chaîne SERVICES est créée dans mon script de firewall lancé au démarrage du serveur, à l’aide de

Code : Tout sélectionner

iptables -N SERVICES

Script down.sh
down.sh est le script lancé lorsque la connexion VPN tombe, qui remet la route originale. On édite:

Code : Tout sélectionner

nano /etc/openvpn/client/mullvad/scripts/down.sh

Copier/Coller
#! /bin/sh
# This script disables policy routing before the tunnel interface is brought down
killall checkVPN
#On efface les règles iptables ajoutées
iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
iptables -D SERVICES -p udp --dport PORT_TORRENT -j ACCEPT # DHT
iptables -D SERVICES -p tcp --dport PORT_TORRENT -j ACCEPT # rTorrent random range
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 443 -j DNAT --to 192.168.0.1
iptables -D PREROUTING -t nat -i $1 -p tcp --dport 443 -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 VPN
# Remove rule for tun0 IP address
ip rule del from $4/32 table VPN

Script checkVPN

Bien qu’openvpn ait son propre mécanisme interne vérifiant que la connexion VPN est toujours active, j’ai remarqué que ce mécanisme ne fonctionne pas toujours. Pour y remédier, on crée un script qui vérifie par un Ping à travers le tunnel que ce dernier est actif, et qui relance openvpn si rien ne vient en retour du Ping. On édite le script servant à vérifier que la connexion VPN est toujours établie:

Code : Tout sélectionner

nano /usr/bin/checkVPN

Copier/Coller
#On fait un ping vers http://www.google.com toutes les 5min, et si aucun paquet n'est reçu en retour (0 packets received, le 0 étant à 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 http://www.google.com |grep "packets transmitted"`
if [[ ${T:23:1} != "1" ]]
then
/etc/init.d/openvpn restart
fi
done

On rend les scripts exécutables:

Code : Tout sélectionner

cd /etc/openvpn/client/mullvad/scripts

Code : Tout sélectionner

chmod +x up.sh down.sh /usr/bin/checkVPN

On édite le fichier contenant les login/pass:

Code : Tout sélectionner

nano /etc/openvpn/client/mullvad/auth/pass

On y met le login sur la 1ère ligne et le mot de passe sur la 2ème:
Login du VPN
Mot de passe du VPN
On restreint l’accès au fichier:

Code : Tout sélectionner

chmod 700 /etc/openvpn/client/mullvad/pass

On indique à openvpn qu’il faut lancer “client” au démarrage:

Code : Tout sélectionner

nano /etc/default/openvpn

Copier/Coller
# This is the configuration file for /etc/init.d/openvpn
#
# Start only these VPNs automatically via init script.
# Allowed values are "all", "none" or space separated list of
# names of the VPNs. If empty, "all" is assumed.
#
AUTOSTART="client"
#AUTOSTART="none"
#AUTOSTART="home office"
#
# Refresh interval (in seconds) of default status files
# located in /var/run/openvpn.$NAME.status
# Defaults to 10, 0 disables status file generation
#
#STATUSREFRESH=10
#STATUSREFRESH=0
# Optional arguments to openvpn's command line
#OPTARGS=""


On édite son fichier « .rtorrent.rc » :

Code : Tout sélectionner

Nano /home/votre_user/.rtorrent.rc

A la fin du fichier vous coller

Code : Tout sélectionner

bind = 192.168.0.1

Redémarrer la machine

Code : Tout sélectionner

reboot

N’oublier pas d’ouvrir le port mullvad dans votre box ;)
Je l’ai installé en même temps que j’ai fait ce Topic, dans la vm « Seedbox » que j’ai également construit en même temps et pour moi ça fonctionne. :|

Pour vérifier que le VPN est fonctionnel, Télécharger le fichier « BTGuard_Torrent_IP_Check.torrent» BTGuard ICI
mettez-le en téléchargement dans Rutorrent et vérifier
votre ip dans bas de l’interface Rutorrent. doit ressemblé a ceci >> "Tracker: [Failure reason "BTGuard NOT working, Your IP: xxx.xxx.xxx.xxx"] l'ip ne doit pas être le même que l'ip de votre FAI !!


Site ou ce trouve le fichier >>> https://wiki.btguard.com/index.php/CheckMyTorrentIP

FIN.

Retourner vers « Seedbox-Manager »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité