Aqui está um 'HOW TO' completo para o NOOBS (usando debian), para garantir que o grupo de usuários da transmissão debian (ou seja, transmissão) apenas roteie dados através da VPN
NÃO use o 'How to' mais longo para vpn com base em scripts complexos do sistema ...! iptables é o melhor método (e infalível) !!! - USANDO ALGUMAS REGRAS IPTABLE baseadas no usuário e grupo de transmissão para controlar o vpn (não como muitos métodos mais complexos de 'hack' que usam scripts systemd, scripts up e down etc ...) e é muuuuito simples!
Etapa 1 - Configuração: (Supõe que a transmissão esteja instalada e que o usuário da transmissão debian exista!)
sudo apt-get install iptables
sudo apt-get install iptables-persistent
Etapa 2 - Crie o arquivo de transmissão-ip-regras
sudo nano transmission-ip-rules
e adicione o texto no bloco de código abaixo a partir de #!/bin/bash
IMPORTANTE
- Se a sua rede local não tiver o formato 192.168.1.x Altere a variável NET para corresponder ao seu próprio formato de endereçamento de rede local !!.
- Também esteja ciente 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. podem ser 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 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 nos dois prompts. FEITO!
O que é ótimo nesse script é que ele rastreia todos os dados através do dispositivo! Quando você emite
sudo iptables -L -v
Ele mostrará a quantidade de dados direcionados 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 e reinicializações a partir da VPN. Isso funciona muito bem. A transmissão SOMENTE pode usar a VPN. A grande vantagem desse script sobre os outros é que eu tenho certeza de que você pode ver (viaiptables -L -v
) que seus dados coincidem com o que é extraído da transmissão (adicionando regras INPUT (all) e Forward (all)) para cada interface eth0, vpn (tun0)). Então você sabe exatamente o que está acontecendo !!! Os totais dos dados não corresponderão exatamente à transmissão - infelizmente não posso discriminar no lado INPUT para 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 está na metade da OUTPUT para o vpn, confirmando seu funcionamento. Outra coisa a ser observada - leva um tempo em uma desconexão VPN (todo o tráfego para com a transmissão) e reconecta-se para que a transmissão 'avance' na nova VPN, portanto, não se preocupe se levar cerca de 5 minutos para iniciar o torrent novamente. .
DICA - google 'MAN iptables' e consulte este artigo sobre monitoramento de largura de banda, se você quiser saber linha por linha como esse script funciona ...