Как я могу гарантировать, что трафик передачи использует VPN?

25

Я хотел бы убедиться, что передача только отправляет / получает трафик, когда сервер, на котором он работает, подключен к VPN.

I нашел этот вопрос, который похож , но я не знаю, t хотите заставить весь трафик через VPN, и я не смог найти хорошее руководство по использованию firestarter из командной строки.

Вместо этого я думал об использовании ufw, но у меня мало опыта работы с брандмауэрами, и я надеюсь, что сообщество может помочь мне.

Одна из моих идей заключалась в том, чтобы заставить передачу использовать определенный порт, скажем, 33442, а затем разрешить трафик с этого порта только с IP-адреса VPN-сервера. Я проверил руководство по серверу Ubuntu, и я думаю, что мог бы сделать что-то вроде этого:

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

Поддерживает ли эта логика соль? Как бы вы это сделали? Что я буду использовать для VPNIP, общедоступного IP-сервера VPN-сервера, или я должен указать диапазон локальной подсети, с которым VPN соединяет меня?

Спасибо за вашу помощь!     

задан Evan 27.04.2011 в 23:15
источник

4 ответа

22
sudo groupadd vpnroute
sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT
sudo -g vpnroute transmission-gtk &
    
ответ дан Anne Onyme 24.10.2012 в 00:49
4

Это работает для безголовой передачи, я ограничиваю трафик на основе пользователя, который запускает службу передачи, 10.0.0.0/8 - это ваша внутренняя сеть, вы должны изменить ее в соответствии с вашей сетью, tun0 - ваш интерфейс OpenVPN, eth0 - это ваше подключение к локальной сети.

Добавьте sudo к командам, если вы не root:

iptables -F (Мы использовали ключ -F для очистки всех существующих правил, поэтому начинаем с чистого состояния, из которого можно добавить новые правила.)

iptables -L (укажите текущую настройку)

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

сделать iptables постоянным после перезагрузки

apt-get install iptables-persistent
service iptables-persistent start
    
ответ дан TheZeroth 08.05.2014 в 07:08
3

В идеале вы должны использовать торрент-клиент, у которого есть функция для привязки к определенному интерфейсу (интерфейс VPN).

Среди торрент-клиентов Deluge делает это. Таким образом, вы можете установить Deluge и настроить интерфейс в настройках, и вы настроены!

    
ответ дан user4124 28.04.2011 в 00:26
2

Вот полный «КАК» для NOOBS (с использованием debian), чтобы убедиться, что группа пользователей debian-передачи (то есть передача) маршрутизирует данные только через vpn

НЕ используйте более длинные «How to» для vpn на основе сложных системных скриптов ...! iptables - ЛУЧШИЙ (и безупречный) МЕТОД !!! - ИСПОЛЬЗОВАНИЕ ПРАВИЛЬНЫХ ПРАВИЛ IPTABLE, основанных на пользователе и группе передачи для управления vpn (не так, как многие более сложные «взломать» методы, которые используют сценарии systemd, скрипты вверх и вниз и т. д.) и это просто!

Шаг 1 - Настройка: (Предполагается, что передача установлена, и поэтому пользователь-дебиан-передача существует!)

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

Шаг 2 - Создайте файл передачи-ip-правил

sudo nano transmission-ip-rules

и добавьте текст в блок кода ниже, начиная с #!/bin/bash

ВАЖНО

  • Если ваша локальная сеть не имеет формы 192.168.1.x Измените переменную NET, соответствующую вашему собственному формату адреса локальной сети !!.
  • Также обратите внимание на причуду, что 192.168.1.0/25 действительно дает диапазон 192.168.1.0-255!
  • Иногда ваши интерфейсы eth0, tun0 (это vpn) и т. д., возможно, разные - проверьте с помощью ifconfig и при необходимости измените.
#!/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

Сохраните файл, а затем запустите

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

, то убедитесь, что эти правила сохраняются между перезагрузкой с помощью:

sudo dpkg-reconfigure iptables-persistent

и коснитесь да для обоих подсказок. СДЕЛАННЫЙ!

Что отличает этот сценарий, так это то, что он будет отслеживать все данные через устройство! Когда вы выпускаете

sudo iptables -L -v

он покажет, сколько данных идет на какой интерфейс и на какой стороне INPUT или OUTPUT вы можете быть уверены, что скрипт vpn работает правильно. Например,

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

Этот скрипт был исчерпывающе протестирован при подключении, отключении, перезагрузке из vpn. Он отлично работает. Передача может ТОЛЬКО использовать VPN. Большим преимуществом этого сценария над другими является то, что я убедился, что вы можете видеть (через iptables -L -v ), что ваши данные совпадают с тем, что вытащили за передачу (добавив правила INPUT (all) и Forward (all) для каждого интерфейс eth0, vpn (tun0)). Значит, вы точно знаете, что происходит !!! Итоговые данные не будут точно совпадать с передачей. К сожалению, я не могу различать на стороне INPUT до пользователя передачи debian, и будут и дополнительные накладные расходы, и, возможно, другие процессы, использующие одну и ту же VPN, но вы увидите, что данные приблизительны на стороне INPUT и около половины на OUTPUT для vpn, подтверждающего его работу. Еще одно замечание - требуется некоторое время на отключении vpn (весь трафик останавливается с передачей) и снова подключаться для передачи, чтобы «перейти» на новый vpn, поэтому не беспокойтесь, если потребуется около 5 минут, чтобы начать торрент снова. .

TIP - google 'MAN iptables' и см. эту статью о мониторинге пропускной способности , если вы хотите знать по очереди, как работает этот скрипт ...

    
ответ дан Musclehead 30.09.2017 в 09:59