Есть выделенный сервер и VPN, подключенная к нему:
inet/eth0 vpn/tun0 vpn/tun0 inet/wan0
--------->SERVER<---------------->VPN-HOST<--------
111.1.1.1 10.8.0.1 10.8.0.6 222.2.2.2
На сервере сделан проброс порта вовнутрь VPN:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5555 -j DNAT --to-destinatination 10.8.0.6:5555
iptables -t nat -A POSTROUTING ! -s 10.8.0.0/24 -d 10.8.0.0/24 -o tun0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -p tcp --dport 5555 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
В таком виде проброс работает, но проблема в том, что VPN-HOST видит соединения как будто от 10.8.0.1 (т.е. как бы от SERVER), а не от внешнего ip. Непонятно какой внешний ip подключается! Это происходит из-за маскарада. Если же маскарад отключить, то пакеты от впн-хоста не возвращаются.
Подозреваю, что впн-хост пытается отвечать через свой интернет/wan0, а не через vpn/tun0.
Маршруты на VPN-HOST такие:
route -n
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.43.1 0.0.0.0 UG 0 0 0 wlan0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.1.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
192.168.43.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan0
Также может быть, что OpenVPN не пропускает пакеты с внешними ip. А только если адреса принадлежат сети 10.8.0.0/24. Я не понимаю.
Вопросы такие:
1) можно ли на впн-хосте получать пакеты без подменённого ip-источника?
2) как сделать, чтобы пакеты с внешними ip возвращались через tun0, а не пропадали в wan0?
3) как заставить OpenVPN пропускать все пакеты?