Назад | Перейти на главную страницу

OpenVPN и Linux NATing

У меня вопрос по OpenVPN и Linux NATing.

Сервер OpenVPN (10.0.0.1) <--> (10.0.0.9) Клиент OpenVPN (192.168.0.1) <--> (192.168.0.0/24) Внутренняя локальная сеть

Я установил на клиенте базовое правило iptables, которое говорит /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. Благодаря этому я могу пинговать с сервера во внутреннюю локальную сеть. Однако, когда я смотрю на tcpdump на стороне сервера, я вижу внутренний IP-адрес локальной сети. Мне нужно увидеть IP-адрес 10.0.0.9 сервера OpenVPN по причинам классификации, чтобы я знал, куда он пошел. Есть ли способ сделать еще один NAT для обратного трафика, чтобы, когда сервер видит ответ ping, он поступает с IP-адреса 10.0.0.9 вместо IP-адреса 192.168.0.X?

Спасибо за вашу помощь.

Изменить - я думал, что смогу сделать что-то подобное, но, похоже, это не работает.

/sbin/iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source 10.0.0.9

Пожалуйста, укажите, с какого адреса вы пингуете и с какого хоста.

Я предполагаю, что вы ping 192.160.0.2 (или любой другой хост в 192.160.0.0/24, отличный от 192.160.0.1) с 10.0.0.1 и хотите, чтобы ответ пришел с 10.0.0.9. А это неверно. Протокол IP так не работает. :-)

Если вы не настраивали статический IP для tun0 на клиенте вы должны использовать MASQUERADE:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE

в противном случае вы можете использовать SNAT:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j SNAT --to-source 10.0.0.9