これは、debian-transmissionユーザーグループ(つまり、送信)がvpnを介してのみデータをルーティングするようにするための、NOOBS(debianを使用)の完全な 'HOW TO'です。
複雑なシステムスクリプトに基づくvpnには、より長い「方法」を使用しないでください...! iptablesは最高の(そして確実な)方法です!!! -送信ユーザーとグループに基づいてvpnを制御するためのいくつかのIPTABLEルールを使用し(systemdスクリプト、upスクリプト、downスクリプトなどを使用するより複雑な「ハック」メソッドとは異なります)。
ステップ1-セットアップ:(伝送がインストールされているため、debian-transmissionユーザーが存在すると仮定します!)
sudo apt-get install iptables
sudo apt-get install iptables-persistent
ステップ2-transmission-ip-rulesファイルを作成する
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
vpnスクリプトが適切に機能していることを確認できるように、どのインターフェイスおよびどの側のINPUTまたはOUTPUTにデータが送信されるかが表示されます。例えば;
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
)データは、転送を介してプルされたもので集計されます(各インターフェイスeth0、vpn(tun0)にINPUT(all)およびForward(all)ルールを追加することにより)。それで、あなたは何が起こっているかを正確に知っています!!! データの合計は送信と正確には一致しません-残念ながら、debian-transmissionユーザーまでINPUT側で区別できず、余分なオーバーヘッドとおそらく同じVPNを使用する他のプロセスの両方がありますが、データは大体集計されますINPUT側で、vpnの動作を確認するためにOUTPUTで約半分になります。もう1つ注意すべきことは、VPNの切断(すべてのトラフィックが送信で停止する)に時間がかかり、新しいVPNで「取得」するために送信のために再接続するので、トレントを再び開始するのに約5分かかる場合でも心配しないでください。 。
ヒント-Google「MAN iptables」で、このスクリプトの仕組みを行ごとに知りたい場合は、帯域幅監視に関するこの記事を参照してください...