GNU / Linux'ta ağ ad alanları ile yapabilirsiniz.
OpenVPN ve tek bir uygulamanın ayrı bir ad alanında çalıştırılması:
Net ağ ad alanını oluşturun:
ip netns add myvpn
Ad alanından geridöngü arabirimini başlatın (aksi halde pek çok şey beklendiği gibi çalışmıyor)
ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up
OpenVPN'in (ad alanındaki) gerçek ağa erişmesine izin verecek sanal ağ arayüzleri oluşturun ve arayüzü ad alanından (vpn0) varsayılan ağ geçidi olarak kullanmak için ad alanındaki (vpn1) yapılandırın
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
Ad alanındaki arayüz için IPv4 yönlendirmesini ve NAT'ı etkinleştirin. Varsayılan arabirim kablosuz olduğundan, giden arabirim için iptables'ta wl + (wlan0, wlp3s0 vb. İle eşleşebilir) kullanırım; kablolu bir arayüz kullanıyorsanız, muhtemelen köprülü bir arayüz için en + (veya br +) kullanmalısınız.
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
Ad alanı içinde ad alanı kullanılacak şekilde yapılandırın
mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf
Neredeyse bitti, şimdi ad alanında tam ağ erişimine sahip olmalıyız.
ip netns exec myvpn ping www.google.com
Sonunda isim alanında OpenVPN'i başlatın
ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf
Tun0 isim alanına girdiğinde, istediğiniz programı başlatmaya hazırsınız!
while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime
KAYNAK makalesi.
Ayrıca kaynak makalede gereksinimlerinize göre uyarlayabileceğiniz bir sarmalayıcı komut dosyası bulunmaktadır.