Есть OpenVPN сервер с внешним адресом 172.31.1.1 (NAT 1:1 к 50.50.50.51 ) и VPN подсетью 10.10.100.0/24. Один из клиентов этой подсети (10.10.100.9) является роутером для другой локальной сети 172.16.0.0/24. Так же, на этом роутере торрент-демон привязан к адресу OpenVPN подсети (к 10.10.100.9). На самом сервере с помощью DNAT пробрасываются порт 50002 на адрес 10.10.100.9:50002 - это веб-морда торрент-демона. И теперь проблема: вся подсеть 172.16.0.0/24 роутится на роутере дефолтным маршрутом на VPN сервер (вся 172.16.0.0/24 подсеть сидит на 10.10.100.9) и соответственно клиенты из 172 подсети сидят в интернете под IPшником 50.50.50.51. Так вот, с него недоступна веб-морда торрент-демона по адресу 50.50.50.51:50002, хотя если заходить по этому адресу с любого компа без роута на этот VPN сервер, то всё заходит хорошо. tcmdump показывает что пакеты идут до адреса назначения (10.10.100.9), но в обратную сторону тишина. А если заходить с любого другого компа вне VPN сети, то они курсируют и туда, и сюда.
Роуты на роутере (только для 172.16.0.0/24):
default via 10.10.100.9 dev tun0
10.10.100.0/24 via 10.10.100.9 dev tun0
50.50.50.51 dev ppp0 scope link
172.16.0.0/24 via 172.16.0.1 dev eth2
Роуты на сервере VPN:
default via 172.31.1.1 dev eth0 onlink
10.10.100.0/24 via 10.10.100.2 dev tun0
10.10.100.2 dev tun0 proto kernel scope link src 10.10.100.1
172.31.1.0/24 dev eth0 proto kernel scope link src 172.31.1.100
iptables на роутере:
-A FORWARD -s 172.16.0.0/24 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -d 172.16.0.0/24 -j ACCEPT
-A FORWARD -i tun0 -o tun0 -j ACCEPT
iptables на сервере VPN:
*nat
-A POSTROUTING -s 10.10.100.0/24 -j MASQUERADE
-A PREROUTING -p tcp -d 172.31.1.100 --dport 60003 -j DNAT --to-destination 10.10.100.9:50002
*filter
-A FORWARD -i tun+ -o tun+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -o tun+ -j ACCEPT
ccd для клиента-роутера:
iroute 10.10.100.0 255.255.255.0
ifconfig-push 10.10.100.9 10.10.100.10
iroute 172.16.0.0 255.255.255.0
конфиг OpenVPN сервера:
Сам OpenVPN сервер не передаёт клиентам дефолтный роут на него - клиенты сами настраивают маршруты.
port 10100
proto udp
dev tun
server 10.10.100.0 255.255.255.0
sndbuf 524288
rcvbuf 524288
client-config-dir ccd
push "sndbuf 524288"
push "rcvbuf 524288"
keepalive 10 120
cipher AES-256-CBC
auth SHA256
tls-server
tls-timeout 160
hand-window 160
max-clients 32
client-to-client
user nobody
group nogroup
persist-key
persist-tun
verb 5
Конфиг OpenVPN клиента:
client
route-nopull
dev tun
proto udp
remote 50.50.50.51 10100
resolv-retry infinite
nobind
cipher AES-256-CBC
auth SHA256
tls-client
verb 5
Простая схема этой солянки: https://ibb.co/ha1F3m
Где-то роута не хватает, но вот где - голову сломал.