Sie können das mit Netzwerk-Namensräumen unter GNU/Linux machen.
So führen Sie OpenVPN und eine einzelne Anwendung in einem separaten Namespace aus:
Erstellen Sie den Netzwerk-Namespace net:
ip netns add myvpn
Starten Sie das Loopback-Interface im Namespace (sonst funktionieren viele Dinge nicht wie erwartet…)
ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up
Erstellen Sie virtuelle Netzwerk-Interfaces, über die OpenVPN (im Namespace) auf das reale Netzwerk zugreifen kann, und konfigurieren Sie die Schnittstelle im Namensraum (vpn1) so, dass sie die Schnittstelle außerhalb des Namensraums (vpn0) als Standardgateway verwendet
ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1
& Aktivieren Sie IPv4-Routing und NAT für die Schnittstelle im Namensraum. Da meine Standardschnittstelle eine drahtlose ist, verwende ich wl+ (was mit wlan0, wlp3s0, etc. übereinstimmen kann. ) in iptables für die ausgehende Schnittstelle; wenn Sie eine kabelgebundene Schnittstelle verwenden, sollten Sie wahrscheinlich en+ (oder br+ für eine überbrückte Schnittstelle) verwenden
iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1
Konfigurieren Sie den Nameserver so, dass er innerhalb des Namespaces verwendet wird
mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf
Fast fertig, jetzt sollten wir vollen Netzwerkzugriff im Namespace
ip netns exec myvpn ping www.google.com
Schließlich starten wir OpenVPN im Namespace
ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf
Sobald tun0 im Namespace läuft, sind wir bereit, das gewünschte Programm zu starten!
while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime
SOURCE-Artikel.
Außerdem gibt es im Source-Artikel ein Wrapper-Skript, das Sie für Ihre Bedürfnisse anpassen können.