オープンVPNでTorrentを自動的に閉じる

オープンVPNでTorrentを自動的に閉じる

私は Ubuntu の初心者で、多くのマルチメディア コンテンツをダウンロードするために Torrent をよく使います。

VPN クライアントをオンにしたときに、torrent などのプログラムを自動的に閉じる方法はありますか? また、VPN クライアントをオフにすると、torrent が再び開きますか?

答え1

ご要望に応じて、cgroups を使用して特定のプロセスが VPN をバイパスするようにする例を示します。

必要なツールをインストールします: sudo apt-get install cgroup-lite cgroup-tools

次に、この機能が必要な起動ごとに、ターミナル シェルで次の操作を実行します。

sudo su
./cgroup_setup.bash
exit

cgroup_setup には次のような内容が含まれています (myuser、mynetworkdevice、mygatewayip を適宜変更してください)。

#!/bin/bash

# Define a control group named novpn with a classid of 11:11
sudo cgcreate -a $USER:$USER -t $USER:$USER -g net_cls:novpn
echo 0x00110011 > /sys/fs/cgroup/net_cls/novpn/net_cls.classid

# Change ownership so myuser can run processes bypassing the vpn
sudo chown myuser:myuser /sys/fs/cgroup/net_cls/novpn
sudo chown myuser:myuser /sys/fs/cgroup/net_cls/novpn/*

# Add mark 11 on packets of classid 0x00110011
iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11

# Force the packets to exit through my interface (mynetworkdevice) with NAT
iptables -t nat -A POSTROUTING -m cgroup --cgroup 0x00110011 -o mynetworkdevice -j MASQUERADE

# Define a new "novpn" routing table
# This is persistent so it does not actually need to be done each time in script...
echo 11 novpn >> /etc/iproute2/rt_tables

# Packets with mark 11 will use novpn
ip rule add fwmark 11 table novpn

# Add a route for default gateway for novpn
ip route add default via mygatewayip table novpn

# Unset reverse path filtering for all interfaces
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $i; done

# Create control group
cgcreate -t $USER:$USER -a $USER:$USER -g net_cls:novpn

これで、cgexec を使用して、VPN をバイパスするプロセスを実行できるようになりました。例:

killall firefox
cgexec -g net_cls:novpn firefox

VPN を実行しながら Firefox を通常どおり実行すると、パブリック IP が VPN IP であることがわかります。ただし、cgexec で VPN をバイパスすると、実際のホーム IP であることを確認できます。

関連情報