web-dev-qa-db-ja.com

送信トラフィックがVPNを使用するようにするにはどうすればよいですか?

実行するサーバーがVPNに接続されている場合にのみ、送信がトラフィックを送受信するようにします。

I 同様のこの質問を見つけました しかし、VPNを介してすべてのトラフィックを強制したくはありません。また、コマンドラインからfirestarterを使用する方法についての良いガイドを見つけることができませんでした。

代わりにufwの使用を考えていましたが、ファイアウォールの経験がほとんどないため、コミュニティが助けてくれることを望んでいます。

私が持っていたアイデアの1つは、33442などの特定のポートを使用して送信を強制し、VPNサーバーのIPアドレスからそのポートへのトラフィックのみを許可することでした。 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、VPNサーバーのパブリックIPに何を使用しますか、またはVPNが接続するローカルサブネット範囲を指定する必要がありますか?

ご協力いただきありがとうございます!

31
Evan

vpnrouteグループを作成します。

Sudo groupadd vpnroute

tun0インターフェイスを通過しないiptablesグループのメンバーによって行われた発信ネットワーク接続を拒否するvpnrouteルールを追加します。

Sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT

vpnrouteグループのメンバーとして送信プロセスを開始します。

Sudo -g vpnroute transmission-gtk &
24
Anne Onyme

以下は、debian-transmissionユーザーグループ(つまり、送信)がvpnを介してのみデータをルーティングするようにするための、NOOBS(debianを使用)の完全な「HOW TO」です。

複雑なシステムスクリプトに基づくvpnには、より長い「方法」を使用しないでください...!iptablesが最高の(そして絶対確実な)方法です!!!-送信ユーザーとグループに基づいたIPNルールを使用してvpnを制御します( 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を介して)転送で引き継がれたもの(INPUT(all)およびForward(all)ルールを追加することで)がデータを集計することを確認できることです。インターフェイスeth0、vpn(tun0)ごと)。それで、あなたは何が起こっているかを正確に知っています!!!データの合計は送信と正確に集計されません-残念ながら、入力側でdebian-transmissionユーザーを区別することはできず、余分なオーバーヘッドとおそらく同じVPNを使用する他のプロセスの両方がありますが、データは大体集計されますINPUT側で、vpnの動作を確認するためにOUTPUTで約半分になります。もう1つ注意すべきことは、VPN切断(すべてのトラフィックが伝送で停止する)に時間がかかり、伝送のために再接続して新しいVPNに「行き着く」ので、トレントを再び開始するのに約5分かかる場合でも心配しないでください。 。

ヒント-Google「MAN iptables」と 帯域幅監視に関するこの記事 を参照してください。このスクリプトの仕組みを1行ずつ知りたい場合...

4
Musclehead

理想的には、特定のインターフェース(VPNインターフェース)にバインドする機能を持つトレントクライアントを使用する必要があります。

トレントクライアントの中で、デリュージはこれを行います。したがって、Delugeをインストールし、[設定]でインターフェイスを構成すると、設定が完了します。

3
user4124