Como posso garantir que o tráfego de transmissão usa uma VPN?

29

Gostaria de garantir que a transmissão apenas envie / receba tráfego quando o servidor em que está sendo executado estiver conectado a uma VPN.

Eu encontrei esta pergunta que é similar mas eu não Não quero forçar todo o tráfego através da VPN e não consegui encontrar um bom guia sobre como usar o Firestarter na linha de comando.

Em vez disso, eu estava pensando em usar o ufw, mas tenho pouca ou nenhuma experiência com firewalls, e espero que a comunidade possa me ajudar.

Uma ideia que tive foi forçar a transmissão a usar uma porta específica, digamos 33442, e só permitir tráfego de e para essa porta a partir do endereço IP do servidor VPN. Eu verifiquei o guia do servidor Ubuntu e acho que poderia fazer algo assim:

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

Essa lógica mantém seu sal? Como você faria? O que eu usaria para VPNIP, o IP público do servidor VPN, ou devo especificar o intervalo de sub-rede local que a VPN me conecta?

Obrigado pela sua ajuda!

    
por Evan 28.04.2011 / 01:15

4 respostas

22

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

Isso funciona para uma transmissão sem cabeçalho, estou restringindo o tráfego com base no usuário que está executando o serviço de transmissão, 10.0.0.0/8 é sua rede interna, você deve alterá-lo para corresponder à sua rede, tun0 é sua interface OpenVPNeth0 é a sua conexão LAN.

Adicione sudo aos comandos, se você não for root:

iptables -F (Usamos a opção -F para liberar todas as regras existentes, então começamos com um estado limpo a partir do qual adicionar novas regras.)

iptables -L (configuração atual da lista)

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

torna o iptables persistente após o reinício

apt-get install iptables-persistent
service iptables-persistent start
    
por TheZeroth 08.05.2014 / 09:08
3

Idealmente, você deve usar um cliente de torrent que tenha um recurso para ligar a uma interface específica (a interface VPN).

Entre os clientes de torrent, o Deluge faz isso. Então você pode instalar o Deluge e configurar a interface nas Preferências e está pronto!

    
por user4124 28.04.2011 / 02:26
3

Aqui está um 'HOW TO' completo para NOOBS (usando debian) para garantir que o grupo de usuários de transmissão-debian (ou seja, transmissão) somente roteie dados através da vpn

NÃO use o mais extensivo 'How to' para vpn baseado em scripts de sistema complexos ...! iptables é o melhor (e infalível) MÉTODO !!! - USANDO ALGUMAS REGRAS IPTABLE baseadas no usuário e grupo de transmissão para controlar a vpn (não como muitos métodos 'hack' complexos que usam scripts systemd, scripts up e down etc ...) e é muuuuito simples!

Passo 1 - Configuração: (Assume-se que a transmissão está instalada e, portanto, o usuário da transmissão-debian existe!)

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

Etapa 2 - Criar o arquivo transmission-ip-rules

sudo nano transmission-ip-rules

e adicione o texto no bloco de código abaixo, começando em #!/bin/bash

IMPORTANTE

  • Se a sua rede local não estiver na forma 192.168.1.x Altere a variável NET para corresponder ao seu próprio formato de endereçamento de rede local !!.
  • Esteja ciente também da peculiaridade que 192.168.1.0/25 realmente fornece o intervalo 192.168.1.0-255!
  • Às vezes, suas interfaces eth0, tun0 (que é a vpn) etc. talvez diferentes - verifique com 'ifconfig' e altere se necessário.
#!/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

Salve o arquivo e, em seguida, execute

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

verifique se essas regras persistem entre as reinicializações com:

sudo dpkg-reconfigure iptables-persistent

e toque sim em ambos os prompts. FEITO!

O que é ótimo sobre este script é que ele rastreará todos os dados pelo dispositivo! Quando você emite

sudo iptables -L -v

mostrará a quantidade de dados que vai para qual interface e qual lado INPUT ou OUTPUT, para que você possa ter certeza de que o script vpn está funcionando corretamente. Por exemplo:

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

Este script foi exaustivamente testado em conexões, desconexões, reinicializações da vpn. Isso funciona muito bem. Transmissão só pode usar a VPN. A grande vantagem deste script sobre os outros é que eu tenho certeza que você pode ver (via iptables -L -v ) que seus dados são compatíveis com a transmissão (adicionando as regras INPUT (all) e Forward (all) para cada interface eth0, vpn (tun0)). Então você sabe exatamente o que está acontecendo !!! Os totais de dados não serão exatamente iguais à transmissão - Infelizmente eu não posso discriminar o lado INPUT até o usuário da transmissão-debian, e haverá sobrecarga extra e talvez outros processos usando a mesma VPN, mas você verá os dados aproximadamente no lado INPUT e é cerca de metade no OUTPUT para o vpn confirmando seu funcionamento. Outra coisa a notar - demora um pouco em um vpn desconectar (todo o tráfego pára com transmissão) e reconectar para transmissão para 'ir' na nova VPN, então não se preocupe se levar cerca de 5 minutos para iniciar o torrent novamente. .

DICA - google 'MAN iptables' e veja este artigo sobre o monitoramento de largura de banda se você quiser saber linha por linha como esse script funciona ...

    
por Musclehead 30.09.2017 / 11:59