Ich bin ein Neuling bei Ubuntu und verwende viele Torrents, um viele Multimediainhalte herunterzuladen.
Gibt es eine Möglichkeit, ein Programm wie einen Torrent automatisch zu schließen, wenn ich den VPN-Client einschalte? Und wenn ich den VPN-Client ausschalte, den Torrent wieder zu öffnen?
Antwort1
Wie gewünscht finden Sie hier ein Beispiel für die Verwendung von cgroups, um bestimmte Prozesse Ihr VPN umgehen zu lassen.
Installieren Sie die erforderlichen Tools:
sudo apt-get install cgroup-lite cgroup-tools
Dann mache ich bei jedem Systemstart, bei dem ich diese Funktionalität benötige, Folgendes in einer Terminal-Shell:
sudo su
./cgroup_setup.bash
exit
Wobei cgroup_setup etwa Folgendes enthält (ändern Sie myuser, mynetworkdevice und mygatewayip entsprechend):
#!/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
Jetzt können Sie cgexec verwenden, um einen Prozess auszuführen, der das VPN umgeht, zum Beispiel:
killall firefox
cgexec -g net_cls:novpn firefox
Wenn Sie Firefox normal mit einem laufenden VPN ausführen, sollten Sie sehen, dass Ihre öffentliche IP eine VPN-IP ist. Aber mit cgexec, das das VPN umgeht, können Sie überprüfen, ob es Ihre tatsächliche Heim-IP ist.