Есть удаленный сервер с чистой Ubuntu 20.04. На нем настроен OpenVPN, подключение проходит без проблем. Форвардинг включен ( net.ipv4.ip_forward=1 ).
server.conf :
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/issued/vpn-server.crt
key /etc/openvpn/keys/private/vpn-server.key
dh /etc/openvpn/keys/dh.pem
tls-auth /etc/openvpn/keys/ta.key 0
port 443
proto tcp
dev tap
server 10.15.2.0 255.255.255.0
client-config-dir ccd
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 2
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo
cipher AES-256-CBC
plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login
push "redirect-gateway def1"
client.conf:
ca C:\\Users\\User\\OpenVPN\\config\\regru\\ca.crt
cert C:\\Users\\User\\OpenVPN\\config\\regru\\regru.crt
key C:\\Users\\User\\OpenVPN\\config\\regru\\regru.key
tls-auth C:\\Users\\User\\OpenVPN\\config\\regru\\ta.key 1
client
resolv-retry infinite
nobind
remote XX.XX.XX.XX 443
proto tcp
dev tap
comp-lzo
tls-client
float
keepalive 10 120
verb 5
auth-user-pass
redirect-gateway def1
remote-cert-tls server
auth-nocache
cipher AES-256-CBC
На сервере установлен TOR:
apt install tor
Содержимое /etc/tor/torrc :
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 5353
TransListenAddress 10.15.2.1
DNSListenAddress 10.15.2.1
В iptables есть только эти правила:
iptables -t nat -A PREROUTING -i tap0 -p tcp --syn -j REDIRECT --to-ports 9040
iptables -t nat -A PREROUTING -i tap0 -p udp --dport 53 -j REDIRECT --to-ports 5353
В итоге при подключение по VPN сервер (10.15.2.1) и клиент(10.15.2.4) взаимно пингуются, на сервере доступ в интернет есть (мимо TOR), а на клиенте доступа в интернет нет. С клиента в том числе не проходит пинги во вне, например, на ya.ru.
Пробовал в iptables внести эти правила, естественно удалив все старые :
iptables -t nat -A PREROUTING -i tap0 -p tcp -j DNAT --to-destination 10.15.2.1:9040
iptables -t nat -A PREROUTING -i tap0 -p udp --dport 53 -j DNAT --to-destination 10.15.2.1:5353
Результат - тот же. Доступа в инет нет, пинг во внешку не уходит.
Если же направить в тор сам сервер:
iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 5353
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
то сам сервер в инет уходит через тор и его IP определяется как IP одной из выходных нод.
Если включить маскарадинг для интерфейса tap0:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
то клиент доступ в инет получает, но соответственно его IP определяется как IP самого VPN сервера.
Собственно проблема - как завернуть весь трафик от клинта(-ов) в сеть TOR? Я понимаю что что-то неправильно сделано с маршрутизацией, но не могу понять что именно.