Как настроить маршрутизацию (проброс порта) из интернета через tun в локальную сеть за NAT?
Имеется стандартный выделенный linux сервер (Debian) с внешним интерфейсом , допустим 91.91.91.91 (Внешний сервер).
Имеется виртуалка , где-то в глубине предприятия за кучей натов, но с нормальным доступом к интернету. на которой крутится вэб сервер (Внутренний сервер).
Между Внешним и Внутренним сервером проброшен тоннель (как не суть важно, допустим даже стандартным ssh -w0:0 ...). Т.е. подняты интерфейсы tun0 c адресами 10.0.1.1 на Внутреннем и 10.0.1.2 на Внешнем.
Сервера между собой пингуются по этим адресам нормально, также с Внешнего сервера доступен требуемый вэб сервер ,который болтается на Внутреннем серваке (по локальному адресу 10.0.1.1).
Задача банальная, открыть доступ к этмому серверу наружу чтобы можно было зайти на Внешний сервер по его интернет адресу 91.91.91.91 и получить ответ от вэб сервера на Внутреннем сервере 10.0.1.1. При этом в логах вэб сервера должны отображаться реальные интернет ип адреса посетителей, а не ип адрес шлюза.
Пробую на внешнем сервере добавлять правило:
iptables -t nat -A PREROUTING -p tcp -d 91.91.91.91 --dport 80 -j DNAT --to-destination 10.0.1.1:80 (в sysctl forwaring не забываю)
В одну сторону сигнал проходит , а обратно никак. Т.е. сниффером на внутреннем сервере запрос я вижу, а ответ не уходит.
Если я правильно понимаю, нужно на внутреннем добавить правило в маршрутизацию, чтобы NAT пакеты уходили обратно по tun0 интрфейсу, но что-то я делаю не так , поэтому обратка не уходит.
Схема сети такая: Внешний [eth0 91.91.91.91, tun0 10.0.1.2] <=> Внутренний [tun0 10.0.1.1, eth0 192.168.0.50]. На обоих серверах сейчас : default gw eth0
Ну и трафик будет ходить так: 91.91.91.91 <=80=> 10.0.1.2 <=80=> 10.0.1.1
пробовал, безрезультатно , сниффером вижу, что коннект с внешки приходит , но обратно - глухо
вот такая сейчас маршрутизация на внутреннем вэб сервере 10.0.1.1
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.1.2 0.0.0.0 UG 0 0 0 tun1
0.0.0.0 192.168.0.50 0.0.0.0 UG 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.252 U 0 0 0 tun1
192.168.0.0 0.0.0.0 255.255.255.192 U 0 0 0 eth0
Так у вас два шлюза по умолчанию стоит.
Для доступа в локалку нужно дописать шлюзы, если они нужны, но только на эту локалку.
Осторожно! Ошибетесь - потеряете связь.