在開放 VPN 上自動關閉 Torrent

在開放 VPN 上自動關閉 Torrent

我是 Ubuntu 新手,使用大量 torrent 下載大量多媒體內容。

有沒有辦法在我打開 VPN 用戶端時自動關閉 torrent 等程式?當我關閉 VPN 用戶端時,再次開啟 torrent 嗎?

答案1

根據要求,以下是使用 cgroup 使某些進程繞過您的 VPN 的範例。

安裝所需工具: sudo apt-get install cgroup-lite cgroup-tools

然後,在每次啟動時,我需要此功能時,我都會在終端 shell 中執行此操作:

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。

相關內容