Aller au contenu

Stoppage protocole Bitorrent lors d'une coupure VPN


schoon

Messages recommandés

Bonjour,

Je cherche depuis quelque temps à stopper automatiquement les téléchargements Bitorrent de Download Station lors de la déconnexion de mon VPN.

J'ai lu ceci sur le site HideMyAss, ce sont les dires d'un certain vicotornan:

"Ce que je recommande pour les possesseurs de Synology qui souhaitent que certaines applications, prenons l'exemple de BitTorrent, ne passent que par le VPN.
Dans ce cas, il suffit de créer une règle dans le Pare-feu sur votre connexion au réseau local qui bloque les ports de BitTorrent.
Du coup, en cas de déconnexion du VPN, aucun risque de télécharger en "ouvert""

J'ai testé plusieurs réglages avec le pare-feu mais la je sèche complètement.

Avez-vous un idée lumineuse pour stopper le protocole Bitorrent lors d'une coupure VPN?

Merci.

 

Modifié par schoon
Fautes d'orthographe
Lien vers le commentaire
Partager sur d’autres sites

Il y a 22 heures, Fenrir a dit :

iptables -I OUTPUT -o eth0 -p udp --dport xxxx -j DROP
iptables -I OUTPUT -o eth0 -p udp --sport yyyy -j DROP

à adapter en fonction des ports et des interfaces que tu utilises

Bonjour,

Bon je viens de me mettre devant mon PC. N'hésite pas à me dire si j'ai fait fausse route!

Bon voilà ce que j'ai fait:

-Activation des services Telnet et SSH sur le Syno

-Connexion à mon NAS avec PuTTY en mode root

-J'ai tapé les deux lignes de commande:

iptables -I OUTPUT -o eth0 -p udp --dport 6881 -j DROP
iptables -I OUTPUT -o eth0 -p udp --sport 6881 -j DROP

-J'ai ensuite couper mon VPN. Le débit de téléchargement des torrents baisse jusqu'à 0kb/s et ensuite le téléchargement repart de plus belle. Et donc ça ne fonctionne pas.

 

Ma question:

-Est-ce que l'interface eth0 représente t-elle bien ma connexion au réseau local? (j'ai regardé avec la commande ifconfig et eth0 représente apparemment l'adresse IP du NAS et pas celle de ma BOX)

Merci.

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 6 minutes, schoon a dit :

-Activation des services Telnet et SSH sur le Syno

telnet est de trop

il y a 7 minutes, schoon a dit :

Est-ce que l'interface eth0 représente t-elle bien ma connexion au réseau local

très probablement

il y a 9 minutes, schoon a dit :

j'ai regardé avec la commande ifconfig et eth0 représente apparemment l'adresse IP du NAS et pas celle de ma BOX

c'est ton nas que tu veux empêcher de sortir, pas ta box ... si ?

il y a 7 minutes, schoon a dit :

ensuite le téléchargement repart de plus belle

tu n'as probablement pas tout bloqué

mes 2 commandes étaient des exemples avec port de destination et port source (selon ce dont tu as besoin), il y a peut être plein d'autres ports à bloquer

Lien vers le commentaire
Partager sur d’autres sites

Si tu veut tu as plus simple.

Tu a dans ton nas:

Panneau de config => Planificateur de tache) > tu créé une tache utilisateur qui se lance toutes les minutes.

Tu copie ce script:

Tu dois juste modifier ton planning DS pour être en pause si activé.

Et complété le script avec tes info (Port a ouvrir/nom+id du vpn)

Citation

 

Il lance un test afin de savoir si le vpn est up.

Si il es pas up il met en pause ton downloadstation (plus de dll)

Il relance la connection vpn que tu a inscrite dans le scripte.

il retest afin de voir si le vpn est up la prochaine minute

Si up il fait rien et relance

 

 

#!/bin/ash

# script for managing firewall, VPN connection and Download station scheduler #
#
# iptables binary path
iptables="/sbin/iptables"

# DLStation
DLStation="/var/packages/DownloadStation/scripts/start-stop-status"

#VPN interface
interface_vpn="tun0"

# Log file
logfile="/root/vpn.log"

# TCP port authorized / Tu inscris tes ports TCP pour tes downloads
vpn_tcp_port=

# UDP port authorized /Tu inscris tes ports UDP pour tes downloads
vpn_udp_port=

# OpenVPN configuration  / Tu rentre le nom de ta connection ainsi que son ID
openvpn_confid=o111111111 
openvpn_configname= VPN

############### START SCRIPT ###################

# Is there a VPN connection ?
if [ -z "$(ifconfig | grep "$interface_vpn")" ]; then
    echo $(date)  ": VPN not started" >> $logfile
    #No VPN, No Download station
    $DLStation stop
    if [ -n "$(ps | grep -v "grep" | grep "/sbin/scheduler")" ] ; then
        echo $(date)  ": ERROR, DownloadStation is always on :/" >> $logfile
    else
        echo $(date)  ": DownloadStation is stopped" >> $logfile
    fi
    # Trying to start VPN connection
    echo $(date)  ": Trying to start VPN connection..." >> $logfile
    echo conf_id=$openvpn_confid > /usr/syno/etc/synovpnclient/vpnc_connecting
    echo conf_name=$openvpn_configname >> /usr/syno/etc/synovpnclient/vpnc_connecting
    echo proto=openvpn >> /usr/syno/etc/synovpnclient/vpnc_connecting
    synovpnc reconnect --protocol=openvpn --name=$openvpn_configname --retry=4 --interval=10 >> $logfile
fi

# Is there a VPN connection and can we ping google ?
if [ -z "$(ping -c 4 www.google.fr | grep "64 bytes")" ] && [ -n "$(ifconfig | grep "$interface_vpn")" ] ; then
    echo $(date)  ": Ping failed to www.google.fr..." >> $logfile
    #VPN is going to be stopped, stop Download station
    $DLStation stop
    if [ -n "$(ps | grep -v "grep" | grep "/sbin/scheduler")" ]; then
        echo $(date)  ": ERROR, DownloadStation is always on :/" >> $logfile
    else
        echo $(date)  ": DownloadStation is stopped" >> $logfile
    fi
    # kill the failed VPN connection
    synovpnc kill_client >> $logfile
    echo $(date)  ": VPN connection closed" >> $logfile
    wait 10000
    # Trying to start VPN connection
    echo $(date)  ": Trying to start VPN connection..." >> $logfile
    echo conf_id=$openvpn_confid > /usr/syno/etc/synovpnclient/vpnc_connecting
    echo conf_name=$openvpn_configname >> /usr/syno/etc/synovpnclient/vpnc_connecting
    echo proto=openvpn >> /usr/syno/etc/synovpnclient/vpnc_connecting
    synovpnc reconnect --protocol=openvpn --name=$openvpn_configname --retry=4 --interval=10 >> $logfile
else        
    # Firewall is up ?
    if [ -n "$(ifconfig | grep "$interface_vpn")" ] && [ -z "$($iptables -L -v | grep "$interface_vpn")" ]; then
        echo $(date)  ": Interface " $interface_vpn " found but firewall is not configured..." >> $logfile
        
        #Incoming tcp vpn connections ACCEPT
        if [ -n "$vpn_tcp_port" ]; then
            $iptables -A INPUT -i $interface_vpn -p tcp -m multiport --dports $vpn_tcp_port -j ACCEPT
        fi
        #Incoming udp vpn connections ACCEPT
        if [ -n "$vpn_udp_port" ]; then
            $iptables -A INPUT -i $interface_vpn -p udp -m multiport --dports $vpn_udp_port -j ACCEPT        
        fi
        
        #if none of the rules were matched DROP #
        $iptables -A INPUT -i $interface_vpn -p tcp -j DROP
        $iptables -A INPUT -i $interface_vpn -p udp -j DROP
        $iptables -A INPUT -i $interface_vpn -p icmp -j DROP
        
        echo $(date)  ": Firewall configured successfully" >> $logfile
        
        #VPN Connection and firewall are Ok, starting Download station
        $DLStation start
        if [ -n "$(ps | grep -v "grep" | grep "/sbin/scheduler")" ] ; then
            echo $(date)  ": DownloadStation is started" >> $logfile
        else
            echo $(date)  ": ERROR, DownloadStation is stopped" >> $logfile
        fi
    else
        # Update 08/10/2014
        if [ -n "$(ifconfig | grep "$interface_vpn")" ] && [ -n "$($iptables -L -v | grep "$interface_vpn")" ]; then
        
            #VPN Connection and firewall are Ok,
            if [ -n "$(ps | grep -v "grep" | grep "/sbin/scheduler")" ] ; then
                #VPN Connection, firewall and Download station are Ok
                echo $(date)  ": All network configuration is OK"
            else
                #VPN Connection and firewall are Ok but not Download station
                #try to start it
                echo $(date)  ": ERROR, DownloadStation is stopped" >> $logfile
                $DLStation start
                if [ -n "$(ps | grep -v "grep" | grep "/sbin/scheduler")" ] ; then
                    echo $(date)  ": DownloadStation is started" >> $logfile
                else
                    echo $(date)  ": ERROR, DownloadStation is stopped" >> $logfile
                fi
            fi
        fi
    fi
fi
exit 0;

ownloadStation

Modifié par Islandar
Lien vers le commentaire
Partager sur d’autres sites

il y a 12 minutes, schoon a dit :

je dois juste bloquer le traffic sur les ports TCP et UDP ? C'est bien ça?

tu dois bloquer ce que tu veux bloquer, je ne te donnes pas un truc tout cuit car ça dépend de ta config

il y a 3 minutes, Islandar a dit :

Si tu veut tu as plus simple.

c'est une autre approche, qui a des avantages et des inconvénients

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, Fenrir a dit :

tu dois bloquer ce que tu veux bloquer, je ne te donnes pas un truc tout cuit car ça dépend de ta config

c'est une autre approche, qui a des avantages et des inconvénients

Très bien merci Fenrir, je vais continuer de tester tout ça.

Merci bien pour ton aide.

Merci aussi à Islandar, je ne sais pas si c'est beaucoup plus simple, lol. Mais je vais aussi creuser de ce côté là. En tout cas c'est super sympa.

Merci encore à vous deux.

Lien vers le commentaire
Partager sur d’autres sites

il y a 19 minutes, schoon a dit :

Très bien merci Fenrir, je vais continuer de tester tout ça.

Si tu n'arrives pas à identifier le trafic torrent, tu peux le faire autrement :

iptables -I OUTPUT -d tonréseaulocal -j ACCEPT
iptables -A OUTPUT -o eth0 -j DROP

ça bloquera tout trafic sortant par eth0, sauf si c'est à destination du réseau local (ça veut aussi dire que le nas n’aura pas du tout accès à internet sans le vpn, y compris pour les mises à jour, les paquets, ...)

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bjr, comme le script est celui de CEDCOX tiré d'ARGENOS, tu trouvera matière à réflexion sur le sujet original ici: http://www.nas-forum.com/forum/topic/34262-arret-automatique-de-downloadstation/

Bon courage

roy

Modifié par roypelikan
Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Pour plus de confort, tu peux creer un dossier par exemple sur le volume1  qui s'appelle ´public' accessible uniquement par

admin  et tu dirige vers celui-lci au lieu de root, et il sera visible par l'editeur du nas et tu pourra en outre le telechager facilement

sur ton pc...

Modifié par roypelikan
Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Hello,

J'ai parcouru ce post fort intéressant. J'ai implémenté le script en job en faisant quelques modifs et ça fonctionne. J'ai cependant une question : ce script lancé toutes les minutes en tâche planifiée ne laisse-t-il pas le temps à Download Stationplus de switcher sur l'interface ETH0 en cas de coupure ? Et même si ça ne représente que quelques secondes de téléchargement, on laisse une trace de notre IP publique qu'on ne souhaiterait pas laisser... Je ne suis pas très linux et pose donc une seconde question aux experts si ma première question a du sens : Y-aurait-il une solution plus instantanée avec un daemon de type event handler de catcher l'erreur sur le réseau VPN ? (un filewatcher sur les notifs par exemple ?)

En espérant ne pas être trop à côté de la plaque sur mes questions.

merci et A+

Lien vers le commentaire
Partager sur d’autres sites

Oui, c'est faisable avec les scripts /etc/ppp/ip-up et /etc/ppp/ip-down pour lesquels tu trouveras facilement de la documentation.

Je les avais utilisés pour définir des règles de routage spécifiques lors des connexions VPN.

Modifié par PiwiLAbruti
Moi écrire français pas bien XD
Lien vers le commentaire
Partager sur d’autres sites

Avant de passer à l'étape ip-up / ip-down, quelques petits points sur ce chouette script partagé :

1 - Il me semble qu'il serait judicieux de préciser l'interface utilisée lors du test du ping google. En effet, le ping peut fonctionner grâce à toute autre interface opérationnelle (ETH0 par exemple). Du coup cela donnerait :

if [ -z "$(ping -c 4 -I " $interface_vpn " www.google.fr | grep "64 bytes")" ] && [ -n "$(ifconfig | grep "$interface_vpn")" ]; then

2 - Comment peut-on simuler une erreur qui ferait fonctionner la commande suivante ? (sans intervention physique sur le SYno) : synovpnc reconnect --protocol=$vpn_proto --name=$vpn_configname --retry=4 --interval=10

En effet, lorsqu'on déconnecte "manuellement" l'interface dans le panneau de config, l'option reconnect ne fonctionne pas, je l'ai changé en : synovpnc connect --id=$vpnconf_id et comme cela ça fonctionne (c'est logique me direz vous). Je me pose d'ailleurs la question si le reconnect peut fonctionner alors que l'interface VPN n'est pas visible avec ifconfig (l'option connect ne serait-elle pas plus juste ?)

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.