#!/bin/bash sudo ip netns add vpn # namespace vpn sudo ip netns exec vpn ip addr add 127.0.0.1/8 dev lo # lo sudo ip netns exec vpn ip link set lo up # loopback- netns sudo ip link add vpn0 type veth peer name vpn1 # , netns sudo ip link set vpn0 up # sudo ip link set vpn1 netns vpn up # netns sudo ip addr add 10.10.10.1/24 dev vpn0 # sudo ip netns exec vpn ip addr add 10.10.10.2/24 dev vpn1 # netns sudo ip netns exec vpn ip route add VPN_IP via 10.10.10.1 dev vpn1 # VPN-( VPN_IP ) sudo ip netns exec vpn ip route add default via 10.10.10.254 dev vpn1 # , OpenVPN ( , OpenVPN ) sudo iptables -A INPUT ! -i vpn0 -s 10.10.10.0/24 -j DROP sudo iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o en+ -j MASQUERADE # , en+ wl+ wifi- sudo sysctl -q net.ipv4.ip_forward=1 # sudo mkdir -p /etc/netns/vpn # resolv.conf netns echo "nameserver 8.8.8.8" |sudo tee /etc/netns/vpn/resolv.conf # 8.8.8.8 sudo ip netns exec vpn /usr/sbin/openvpn --daemon --writepid /run/openvpn/vpn.pid --cd /etc/openvpn/ --config vpn.conf # OpenVPN - /etc/openvpn/vpn.conf netns
$ sudo ip netns exec vpn curl http://ifconfig.me
$ sudo ip netns exec vpn su - USER_NAME -c firefox
#!/bin/bash sudo ip netns pids vpn | xargs -rd'\n' sudo kill sudo rm -rf /etc/netns/vpn sudo sysctl -q net.ipv4.ip_forward=0 sudo iptables -D INPUT ! -i vpn0 -s 10.10.10.0/24 -j DROP sudo iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o en+ -j MASQUERADE sudo ip link del vpn0 sudo ip netns delete vpn
[Unit] Description=Network namespace for VPN After=syslog.target network.target StopWhenUnneeded=true RefuseManualStart=true RefuseManualStop=true [Service] EnvironmentFile=/etc/netns/vpn.env Type=oneshot RemainAfterExit=true ExecStart=/bin/ip netns add vpn ExecStart=/bin/ip netns exec vpn ip addr add 127.0.0.1/8 dev lo ExecStart=/bin/ip netns exec vpn ip link set lo up ExecStart=/bin/ip link add vpn0 type veth peer name vpn1 ExecStart=/bin/ip link set vpn0 up ExecStart=/bin/ip link set vpn1 netns vpn up ExecStart=/bin/ip addr add ${NETWORK}.1/24 dev vpn0 ExecStart=/bin/ip netns exec vpn ip addr add ${NETWORK}.2/24 dev vpn1 ExecStart=/bin/ip netns exec vpn ip route add ${VPN_SERVER} via ${NETWORK}.1 dev vpn1 ExecStart=/bin/ip netns exec vpn ip route add default via ${NETWORK}.254 dev vpn1 ExecStart=/sbin/iptables -A INPUT ! -i vpn0 -s ${NETWORK}.0/24 -j DROP ExecStart=/sbin/iptables -t nat -A POSTROUTING -s ${NETWORK}.0/24 -o wl+ -j MASQUERADE ExecStart=/sbin/sysctl -q net.ipv4.ip_forward=1 ExecStart=/bin/mkdir -p /etc/netns/vpn ExecStart=/bin/sh -c "echo 'nameserver 8.8.8.8' > /etc/netns/vpn/resolv.conf" ExecStop=/bin/rm -rf /etc/netns/vpn ExecStop=/sbin/sysctl -q net.ipv4.ip_forward=0 ExecStop=/sbin/iptables -D INPUT ! -i vpn0 -s ${NETWORK}.0/24 -j DROP ExecStop=/sbin/iptables -t nat -D POSTROUTING -s ${NETWORK}.0/24 -o wl+ -j MASQUERADE ExecStop=/bin/ip link del vpn0 ExecStop=/bin/ip netns delete vpn [Install] WantedBy=multi-user.target
[Unit] Description=OpenVPN inside network namespace Requires=vpnns.service After=syslog.target network.target vpn-ns.service [Service] PrivateTmp=true Type=forking PIDFile=/var/run/openvpn/%i.pid ExecStart=/bin/ip netns exec vpn /usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf [Install] WantedBy=multi-user.target
VPN_SERVER=1.1.1.1 # Change IP to your OpenVPN-server IP NETWORK=10.10.10
$ sudo systemctl enable openvpn-ns@NAME.service
$ sudo systemctl start openvpn-ns@NAME.service
$ sudo ip netns exec vpn curl http://ifconfig.me
Source: https://habr.com/ru/post/310646/
All Articles