¿Cómo puedo garantizar que el tráfico de transmisión use una VPN?

27

Me gustaría asegurarme de que la transmisión solo envía / recibe tráfico cuando el servidor en el que se ejecuta está conectado a una VPN.

I encontré esta pregunta que es similar pero no lo hago Quiero forzar todo el tráfico a través de la VPN y no he podido encontrar una buena guía sobre cómo usar el firestarter desde la línea de comandos.

En cambio, estaba pensando en usarlo, pero tengo poca o ninguna experiencia con los firewalls, y espero que la comunidad pueda ayudarme.

Una idea que tuve fue forzar la transmisión para usar un puerto específico, digamos 33442, y luego solo permitir el tráfico hacia y desde ese puerto desde la dirección IP del servidor VPN. Revisé la guía del servidor de Ubuntu y creo que podría hacer algo como esto:

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

¿Mantiene esta lógica su sal? ¿Como lo harias? ¿Qué usaría para VPNIP, la IP pública del servidor VPN, o debería especificar el rango de subredes local al que la VPN me conecta?

¡Gracias por tu ayuda!

    
pregunta Evan 27.04.2011 - 23:15

4 respuestas

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

Esto funciona para una transmisión sin cabeza, estoy restringiendo el tráfico en función del usuario que está ejecutando el servicio de transmisión, 10.0.0.0/8 es tu red interna, debes cambiarla para que coincida con tu red, tun0 es tu interfaz OpenVPN, eth0 es tu conexión LAN.

Agregue sudo a los comandos, si no es root:

iptables -F (Usamos el modificador -F para eliminar todas las reglas existentes, así que comenzamos con un estado limpio desde el que agregar nuevas reglas).

iptables -L (enumera la configuración actual)

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

hacer que las iptables sean persistentes después de reiniciar

apt-get install iptables-persistent
service iptables-persistent start
    
respondido por el TheZeroth 08.05.2014 - 07:08
3

Idealmente, debería usar un cliente de torrent que tenga una función para vincularse a una interfaz específica (la interfaz VPN).

Entre los clientes de torrents, Deluge hace esto. ¡Así que puedes instalar Deluge y configurar la interfaz en las Preferencias y estás listo!

    
respondido por el user4124 28.04.2011 - 00:26
2

Aquí hay un 'CÓMO HACERLO' completo para NOOBS (utilizando debian) para asegurarse de que el grupo de usuarios de la transmisión debian (es decir, la transmisión) solo enrute los datos a través del vpn

NO use el más largo 'How to' para vpn basado en scripts complejos del sistema ...! iptables es EL MEJOR (y infalible) MÉTODO !!! - USO DE ALGUNAS REGLAS DE IPTABLE basadas en el usuario y el grupo de transmisión para controlar el vpn (no como muchos otros métodos más complejos como 'hack' que usan scripts systemd, up y down, etc.) ¡y es tan simple!

Paso 1 - Configuración: (¡Asume que la transmisión está instalada y, por lo tanto, existe un usuario de transmisión Debian!)

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

Paso 2: crea el archivo transmission-ip-rules

sudo nano transmission-ip-rules

y agregue el texto en el siguiente bloque de código a partir de #!/bin/bash

IMPORTANTE

  • Si su red local no tiene el formato 192.168.1.x Cambie la variable NET para que se corresponda con su propio formato de direccionamiento de red local.
  • ¡También ten en cuenta la peculiaridad de que 192.168.1.0/25 realmente da el rango 192.168.1.0-255!
  • Algunas veces sus interfaces eth0, tun0 (que es el vpn), etc. pueden ser diferentes: consulte con 'ifconfig' y cámbielas si es necesario.
#!/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

Guarde el archivo y luego ejecute

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

luego asegúrese de que estas reglas persistan entre reinicios con:

sudo dpkg-reconfigure iptables-persistent

y toca sí en ambas indicaciones. ¡HECHO!

¡Lo mejor de este script es que rastreará todos los datos a través del dispositivo! Cuando emite

sudo iptables -L -v

mostrará la cantidad de datos que irá a qué interfaz y qué lado INPUT o OUTPUT para que pueda estar seguro de que el script vpn está funcionando correctamente. Ej.

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 se ha probado exhaustivamente en las conexiones, desconexiones y reinicios del vpn. Funciona muy bien. La transmisión SOLO puede usar VPN. La gran ventaja de este script sobre los otros es que me he asegurado, como puede ver (a través de iptables -L -v ), de que sus datos coinciden con lo que se desplaza sobre la transmisión (agregando INPUT (todo) y Forward (todos) reglas para cada interfaz eth0, vpn (tun0)). ¡Entonces sabes exactamente qué está pasando! Los totales de datos no coincidirán exactamente con la transmisión: desafortunadamente no puedo discriminar desde el lado de ENTRADA hacia el usuario de transmisión Debian, y habrá sobrecarga adicional y tal vez otros procesos usando la misma VPN, pero verá los datos aproximadamente equivalentes en el lado ENTRADA y está a la mitad en la SALIDA para que vpn confirme que funciona. Otra cosa a tener en cuenta: lleva un tiempo desconectar vpn (todo el tráfico se detiene con la transmisión) y volver a conectar para que la transmisión "comience" en el nuevo vpn, así que no te preocupes si tardan unos 5 minutos en volver a torrents. .

SUGERENCIA: google 'MAN iptables' y consulte este artículo sobre el control de ancho de banda si desea saber línea por línea cómo funciona este script ...

    
respondido por el Musclehead 30.09.2017 - 09:59

Lea otras preguntas en las etiquetas