Задать вопрос

Как правильно настроить PREROUTING?

Есть два сервера А (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)

Кто с таким сталкивался, подтолкните на более рациональное решение, спасибо.
  • Вопрос задан
  • 1266 просмотров
Подписаться 4 Оценить 13 комментариев
Пригласить эксперта
Ответы на вопрос 3
littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.
Пожалуйста, переформулируйте вопрос, ибо очень сложно понять, что есть и что нужно.

Например:
есть сервер, нужно трафик с его интерфейса eth1 перенаправлять на ip xxx.xx.xx.xx/другой интерфейс, как это сделать?
Ответ написан
sharikoff
@sharikoff
Поставь на Б rinetd и заворачивай им на YYY: PORT или то же средствами iptables
Ответ написан
@alegzz
Копайте в сторону маркировки входящих соединений, восстановления маркировки и маршрутизации по маркировке. Не забудьте сделать маскарадинг на б, чтобы а не отбрасывал невалидные пакеты, и исходящий маскарадинг на а
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы