Вот полное «Как сделать» для NOOBS (с использованием debian), чтобы убедиться, что группа пользователей debian-translation (то есть, передача) только маршрутизирует данные через vpn
НЕ ИСПОЛЬЗУЙТЕ более длинное «Как» для vpn на основе сложных системных скриптов ...! iptables - ЛУЧШИЙ (и надежный) метод !!! - ИСПОЛЬЗОВАНИЕ НЕСКОЛЬКО IPTABLE ПРАВИЛ, основанных на пользователе и группе передачи, для управления vpn (не так, как многие более сложные методы «взлома», использующие сценарии systemd, сценарии вверх и вниз и т. Д.), И это так просто!
Шаг 1 - Настройка: (Предполагается, что передача установлена и, следовательно, существует пользователь передачи debian!)
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 (все) и Forward (все) для каждого интерфейса eth0, vpn (tun0)). Так что вы точно знаете, что происходит !!! Итоговые данные не будут точно совпадать с передачей - К сожалению, я не могу различить на стороне INPUT пользователя передачи debian, и будут дополнительные издержки и, возможно, другие процессы, использующие ту же VPN, но вы увидите, что данные примерно совпадают на стороне ВХОДА и около половины на ВЫХОДЕ для VPN, подтверждающего его работу. Еще одна вещь, на которую стоит обратить внимание - требуется некоторое время при отключении vpn (весь трафик останавливается при передаче) и повторное подключение для передачи, чтобы «начать работу» на новом vpn, поэтому не беспокойтесь, если для возобновления торрента потребуется около 5 минут. ,
СОВЕТ - Google 'iptables' и посмотрите эту статью о мониторинге пропускной способности, если вы хотите построчно узнать, как работает этот скрипт ...