Вообщем, делаю обход NAT через OpenVPN. Что у нас имеется:
VPS с белым IP, на нём установлен сервер OpenVPN
Мой компьютер с серым IP, на нём установлен клиент OpenVPN (так-же, тут установлен web сервер)
Комп из рандомной точки планеты с серым IP (выступает в роли клиента для моего web сервера)
Я настроил между моим компьютером и VPS, VPN туннель, я могу спокойно делать пинги на 10.9.8.2 и 10.9.8.1 с друг друга.
Так-же настроил проброс портов на VPS, и пакеты приходящие на порт 80, автоматически шлются в туннель (идут на IP 10.9.8.2).
Что дальше? Пакет приходит на компьютер, VPS отредактировал пакет, и теперь там в IP назначения IP моего компьютера. Мой веб сервер принял пакет, и теперь шлёт ответ на IP рандомного компьютера (веб клиента), допустим это IP 172.225.130.43 и на порт 65536, и вот что происходит, пакет идёт не через туннель, а через обычный сетевой интерфейс, в итоге пакет теряется. Как заставить ответ идти по туннелю? ведь порт клиента и его айпи заранее то, неизвестен
Каким образом VPS редактирует пакет? Если на веб сервер запрос пришёл с 10.9.8.2 то и ответ нужно отправлять 10.9.8.2, а routetable отправит его на виртуальный интерфейс oVpn (аля тонель)
FunMelon, так я и говорю, берёте на сервере ip с http request хидэра, отправляете на этот ip ответ.. У Вас же беда в том, что отправка идёт на порт 65536 реального ip клиента, но там nat и он то rejectит ответ на порт 65536. Убедитесь, что на клиенте для белого адреса веб сервера есть route на vpn интерфейс.
Несколько вариантов:
1.В текущей конфигурации вам нужно на вашем компе сделать шлюзом по умолчанию ваш ВПН сервер, тогда все пакеты для инета будут идти туда. Это можно сделать настройками ВПН на сервере.
Но в этом случае вы всегда в инет будете ходить через ВПН, а это, наверное не совсем то что вы хотите.
2.Если в эту схему добавить NAT на VPSе, то тогда приходящий трафик на веб сервер будет иметь ВПН адрес VPSа и ответы будут уходить VPSу без дополнительных телодвижений, затем ответы попадают в NAT и там выходят на ружу.
nApoBo3, Реализовывал подобное на FreeBSD с помощью нескольких таблиц маршрутизации и настройки тамошнего фаервола ipfw (тогда у меня было 2 канала в интернет и нужно было реализовать балансировку и отказоустойчивость). Было достаточно не тривиально и мануалов толково разъясняющих как это делать на тот момент не нашел, хотя потратил на поиски много времени. Пришлось разбираться самому.
По линуксу у меня мало опыта, не скажу на сколько там это сложно, подход, видимо, будет примерно таким же как и на FreeBSD.
А у человека вообще винда, на сколько я понимаю. Что у винды с поддержкой множественных таблиц маршрутизации - х.з.
Мне кажется, Web-сервер надо ставить в виртуалку и там строить свой отдельный роутинг. Ибо настроить в Windows разный роутинг для разных категорий пакетов (видимо, по порту) - я даже не представляю как, и в Linux/FreeBSD это довольно сложно.