Назад | Перейти на главную страницу

Переадресация портов IPTables сохраняет исходный IP-адрес

Я надеюсь, что кто-нибудь поможет мне с этой конфигурацией. У меня уже есть рабочая установка, в которой Linux-сервер действует как маршрутизатор, просто перенаправляя порт для общедоступных IP-адресов. Кстати, это все общедоступные IP-адреса.

HOST_x - может быть любой хост с публичным IP. (например, x.x.x.x)

MY_LINUX - Использование IPtables просто для перенаправления портов для общедоступных IP-адресов. (Фиксированный IP, например: 2.2.2.2)

СЕРВЕР - веб-сервер с публичным IP-адресом. (Фиксированный IP, например, 3.3.3.3)

ПОРТ - (TCP PORT = 80)

Вот конфигурация MY_LINUX:

iptables -t nat -A PREROUTING -p tcp -d 2.2.2.2 --dport 80 -j DNAT --to-destination 3.3.3.3:80 iptables -t nat -A POSTROUTING -p tcp -d 3.3.3.3 --dport 80-Я МАСКАРАД

Приведенная выше конфигурация работает. Когда HOST_x вводит 2.2.2.2 в браузере, он получает веб-страницу из 3.3.3.3.

Единственная проблема, с которой я столкнулся, заключается в том, что целевой СЕРВЕР (3.3.3.3) видит запрос, исходящий из MY_LINUX (2.2.2.2), я хочу видеть исходный IP-адрес запрашивающего HOST_x (x.x.x.x).

Буду признателен за любые предложения, спасибо.

Я бы сказал, что это невозможно на уровне Уровня-3. HOST_x ожидает, что оставшиеся пакеты придут от хоста, на котором он инициировал соединение MY_LINUX. Если SERVER внезапно окажется в середине рукопожатия TCP и ответа, HOST_x просто проигнорирует эти пакеты.

Поскольку HOST_x и SERVER имеют прямое соединение, я думаю, что было бы лучше переместить эту схему маршрутизации на уровень приложения и реализовать перенаправления HTTP. Затем HOST_x открывает соединение непосредственно с конечной точкой.

Вы можете сделать это, если у вас есть доступ к веб-серверам (или их шлюзу). Единственное решение, которое приходит мне в голову, - это туннель между маршрутизатором и веб-сервером. Затем веб-сервер (шлюз) может отправлять все ответные пакеты на маршрутизатор без необходимости изменять адрес назначения. Если это вариант для вас, я собираюсь взглянуть на детали.