Я наконец-то настроил работающее соединение netns veth openvpn, сделал переопределения в файлах службы systemd, так что openvpn зависит от netns single shot service и tor службы openvpn. Tor работает, по крайней мере, судя по его журналам, но я не могу получить к нему доступ. Мой текущий netns-vpn.service
файл:
# netns
ExecStartPre=-ip netns delete openvpn
ExecStartPre= ip netns add openvpn
# links
ExecStartPre=ip link add vpn0 type veth peer name vpn1
ExecStartPre=ip link set vpn1 netns openvpn
# set links and localhost for vpn
ExecStartPre=ip link set dev vpn0 up
ExecStartPre=ip -n openvpn link set dev lo up
ExecStartPre=ip -n openvpn link set dev vpn1 up
# assign ips to them, and loop traffic from vpn1 to vpn0
ExecStartPre=ip addr add 10.0.0.0/24 dev vpn0
ExecStartPre=ip -n openvpn addr add 10.0.0.1/24 dev vpn1
ExecStartPre=ip -n openvpn route add default via 10.0.0.0
# port forwarding
ExecStartPre=iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 9049 -j DNAT --to-destination 10.0.0.1:9049
ExecStartPre=iptables -t nat -A PREROUTING -p udp -i eth0 --dport 9049 -j DNAT --to-destination 10.0.0.1:9049
ExecStartPre=iptables -A FORWARD -p tcp -d 10.0.0.1 --dport 9049 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ExecStartPre=iptables -A FORWARD -p udp -d 10.0.0.1 --dport 9049 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# packet forwarding from eth0 to vpn0 and back
ExecStartPre=iptables -A FORWARD -i eth0 -o vpn0 -j ACCEPT
ExecStartPre=iptables -A FORWARD -o eth0 -i vpn0 -j ACCEPT
# idk
ExecStartPre=iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
часть переадресации портов не работает для прокси-сервера socks5. Из того, что я понял, мне нужно использовать фильтры или -A OUTPUT
, но я не могу найти пример с сетевыми пространствами имен и прокси-сервером socks5, чтобы разобраться. Для меня это все в новинку. Переадресация TCP работает, протестировал с http.server на Python, думаю, udp тоже должен. Я не ищу socat
ни одного другого решения для прокси-серверов через пространства имен.