У меня вопрос по 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