Come posso garantire che il traffico di trasmissione utilizzi una VPN?

27

Vorrei assicurarmi che la trasmissione invii / ricevi traffico solo quando il server su cui è in esecuzione è connesso a una VPN.

I hanno trovato questa domanda che è simile ma io non lo faccio t voglio forzare tutto il traffico attraverso la VPN e non sono stato in grado di trovare una buona guida su come usare firestarter dalla riga di comando.

Invece stavo pensando di usare ufw, ma ho poca o nessuna esperienza con i firewall, e spero che la comunità possa darmi una mano.

Un'idea che avrei avuto sarebbe quella di forzare la trasmissione a utilizzare una porta specifica, ad esempio 33442, e quindi consentire solo il traffico da e verso quella porta dall'indirizzo IP del server VPN. Ho controllato la guida al server di Ubuntu e penso che potrebbe fare qualcosa del genere:

sudo ufw enable
sudo ufw deny port tcp from localhost to any port 33442
sudo ufa allow port tcp from localhost to VPNIP port 33442
sudo ufw deny port udp from localhost to any port 33442
sudo ufa allow port udp from localhost to VPNIP port 33442

Questa logica tiene il suo sale? Come lo faresti? Cosa dovrei usare per VPNIP, l'IP pubblico del server VPN o dovrei specificare l'intervallo di sottorete locale a cui mi connette la VPN?

Grazie per il tuo aiuto!

    
posta Evan 28.04.2011 - 01:15

4 risposte

22
sudo groupadd vpnroute
sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT
sudo -g vpnroute transmission-gtk &
    
risposta data Anne Onyme 24.10.2012 - 02:49
4

Funziona per una trasmissione senza headless, sto limitando il traffico in base all'utente che sta eseguendo il servizio di trasmissione, 10.0.0.0/8 è la tua rete interna, dovresti cambiarlo per adattarlo alla tua rete, tun0 è la tua interfaccia OpenVPN, eth0 è la tua connessione LAN.

Aggiungi sudo ai comandi, se non sei root:

iptables -F (Abbiamo usato l'opzione -F per svuotare tutte le regole esistenti, quindi iniziamo con uno stato pulito da cui aggiungere nuove regole.)

iptables -L (elenca l'impostazione corrente)

NET=10.0.0.0/8
GROUP=debian-transmission
IFACE_INTERNAL=eth0
IFACE_VPN=tun0
ALLOW_PORT_FROM_LOCAL=9091
iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT

rende persistente l'iptables dopo il riavvio

apt-get install iptables-persistent
service iptables-persistent start
    
risposta data TheZeroth 08.05.2014 - 09:08
3

Idealmente dovresti usare un client torrent che ha una funzione per collegarsi a un'interfaccia specifica (l'interfaccia VPN).

Tra i client torrent, Deluge lo fa. Quindi puoi installare Deluge e configurare l'interfaccia nelle Preferenze e sei pronto!

    
risposta data user4124 28.04.2011 - 02:26
2

Questo è un 'HOW TO' completo per NOOBS (usando debian) per assicurarsi che il gruppo di utenti debian-transmission (cioè trasmissione) instradi solo i dati attraverso il vpn

NON usare il più lungo "Come" per vpn basato su script di sistema complessi ...! iptables è IL MIGLIORE (e infallibile) METODO !!! - USANDO ALCUNE REGOLE IPTABLE basate sull'utente e sul gruppo di trasmissione per controllare il VPN (non come molti metodi "hack" più complessi che usano script systemd, script su e giù ecc ...) ed è semplicissimo!

Passaggio 1 - Installazione: (Si suppone che la trasmissione sia installata e quindi l'utente di trasmissione debian esista!)

sudo apt-get install iptables
sudo apt-get install iptables-persistent

Passaggio 2: crea il file delle regole di trasmissione-ip

sudo nano transmission-ip-rules

e aggiungi il testo nel blocco di codice sottostante a partire da #!/bin/bash

IMPORTANTE

  • Se la tua rete locale non ha il formato 192.168.1.x Cambia la variabile NET in modo che corrisponda al tuo formato di indirizzamento di rete locale !!.
  • Tieni presente anche la stranezza con cui 192.168.1.0/25 dà effettivamente l'intervallo 192.168.1.0-255!
  • A volte le tue interfacce eth0, tun0 (che è la vpn) ecc., forse diverse - controlla con 'ifconfig' e cambia se necessario.
#!/bin/bash
# Set our rules so the debian-transmission user group can only route through the vpn
NET=192.168.1.0/25
GROUP=debian-transmission
IFACE_INTERNAL=eth0
IFACE_VPN=tun0
ALLOW_PORT_FROM_LOCAL=9091
iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT
# not needed - but added these to properly track data to these interfaces....when using iptables -L -v
iptables -A INPUT -i $IFACE_VPN -j ACCEPT
iptables -A INPUT -i $IFACE_INTERNAL -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# track any forward (NAT) data for completeness - don't care about interfaces
iptables -A FORWARD

Salva il file e poi esegui

sudo iptables -F 
sudo chmod +x transmission-ip-rules
sudo ./transmission-ip-rules

quindi assicurati che queste regole persistano tra i riavvii con:

sudo dpkg-reconfigure iptables-persistent

e tocca yes a entrambi i prompt. FATTO!

Il bello di questo script è che traccia tutti i dati attraverso il dispositivo! Quando emetti

sudo iptables -L -v

mostrerà quanti dati stanno andando a quale interfaccia e quale lato INPUT o OUTPUT così puoi essere sicuro che lo script vpn funzioni correttamente. Eg;

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                         
1749K  661M ACCEPT     all  --  tun0   any     anywhere             anywhere                                                                                            
3416K 3077M ACCEPT     all  --  eth0   any     anywhere             anywhere                                                                                            
 362K  826M ACCEPT     all  --  lo     any     anywhere             anywhere                                                                                            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                         
    0     0            all  --  any    any     anywhere             anywhere                                                                                            

Chain OUTPUT (policy ACCEPT 2863K packets, 2884M bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                         
 1260  778K ACCEPT     tcp  --  any    eth0    anywhere             192.168.1.0/                                                                                        25       tcp spt:9091 owner GID match debian-transmission
    0     0 ACCEPT     udp  --  any    eth0    anywhere             192.168.1.0/                                                                                        25       udp spt:9091 owner GID match debian-transmission
1973K 1832M ACCEPT     all  --  any    tun0    anywhere             anywhere                                                                                                     owner GID match debian-transmission
 8880  572K ACCEPT     all  --  any    lo      anywhere             anywhere                                                                                                     owner GID match debian-transmission
13132  939K REJECT     all  --  any    any     anywhere             anywhere                                                                                                     owner GID match debian-transmission reject-with icmp-port-unreachable

Questo script è stato testato esaurientemente su connessioni, disconnessioni, riavvii dalla VPN. Funziona alla grande. La trasmissione può utilizzare SOLO la VPN. Il grande vantaggio di questo script rispetto agli altri è che mi sono assicurato come puoi vedere (tramite iptables -L -v ) che i tuoi dati corrispondono a ciò che viene trascinato sulla trasmissione (aggiungendo le regole INPUT (tutto) e Avanti (tutto) per ogni interfaccia eth0, vpn (tun0)). Quindi sai esattamente cosa sta succedendo !!! I totali dei dati non coincidono esattamente con la trasmissione: sfortunatamente non riesco a discriminare il lato INPUT in basso all'utente della trasmissione debian, e ci saranno sia overhead extra che forse altri processi che usano la stessa VPN, ma vedrai approssimativamente i dati sul lato INPUT ed è circa la metà dell'output per la VPN che conferma il suo funzionamento. Un'altra cosa da notare - ci vuole un po 'su una disconnessione VPN (tutto il traffico si ferma con la trasmissione) e riconnettersi per la trasmissione per' andare avanti 'sulla nuova VPN, quindi non preoccuparti se ci vogliono circa 5 minuti per avviare nuovamente il torrent .. .

SUGGERIMENTO - google 'MAN iptables' e vedi questo articolo sul monitoraggio della larghezza di banda se vuoi sapere riga per riga come funziona questo script ...

    
risposta data Musclehead 30.09.2017 - 11:59

Leggi altre domande sui tag