Есть два сервера А (XXX.XXX.XXX.XXX) и Б(YYY.YYY.YYY.YYY), на каждом из них по внешнему IP, к примеру как описано, в
статье. Нам нужно чтобы трафик попал c A(XXX.XXX.XXX.XXX) на Б(YYY.YYY.YYY.YYY), например, потому что A-сервер фильтруется защитой. Между ними создается туннель, на сервере A (IP туннеля 192.168.168.1) на сервере Б (192.168.168.2). Далее при помощи DNAT на сервере A перенаправляем:
iptables -t nat -A PREROUTING -p tcp -d XXX.XXX.XXX.XXX -j DNAT --to-destination 192.168.168.2
iptables -A FORWARD -d 192.168.168.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
На сервере Б прописываем правила роутинга:
ip rule add from 192.168.168.0/30 table 5
ip route add default via 192.168.168.1 table 5
Трафик успешно попадает на сервер Б, но на IP 192.168.168.2, нам же теперь нужно чтобы трафик попал на IP YYY.YYY.YYY.YYY, потому что там висят все нужные нам записи в конфигах веб-сервера.
Пытаюсь сделать:
iptables -t nat -A PREROUTING -d 192.168.168.2 -p tcp -m tcp --dport 80 -j DNAT --to-destination YYY.YYY.YYY.YYY:80
Но назад пакеты не уходят. Если на сервере A сделать:
ipables -t nat -A POSTROUTING -j MASQUERADE
То пакеты уйдут и прийдут, но естественно подменится src посетителя на 192.168.168.1, что нам не нужно.
Есть еще вариант на сервере Б сделать:
ip rule add from YYY.YYY.YYY.YYY/32 table 5
Так оно заработает, но при этом естественно отпадет прямая связь с YYY.YYY.YYY.YYY, в общим это тоже плохой вариант.
В целом нужно, чтобы при заходе на IP А (XXX.XXX.XXX.XXX) попасть на Б(YYY.YYY.YYY.YYY)
Кто с таким сталкивался, подтолкните на более рациональное решение, спасибо.