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

Перенаправление портов с IPTABLES и обнаружение удаленного IP

Мне удалось перенаправить 80 порт с моего основного сервера 192.168.90.1 на второй 192.168.90.2 с IPTABLES

Основной сервер имеет публичный адрес X.X.X.X

поэтому я перенаправил X.X.X.X: 80 -> 192.168.90.2:80

Моя проблема в том, что второй сервер считает, что весь трафик, поступающий из Интернета, идет с 192.168.90.1 (все удаленные адреса - 192.168.90.1, а не реальный адрес клиентов exp: вместо IP-адреса клиента будет отображаться 192.168.90.1)

Есть кто-нибудь, кто сталкивался с этой проблемой? Мне нужно исправить это без использования обратного прокси-сервера

Вот как я пересылаю свои пакеты:

iptables -A PREROUTING -t nat -d X.X.X.X -p tcp --dport 80 -j DNAT --to-destination 192.168.90.2:80

iptables -t nat -A POSTROUTING -d 192.168.90.2 -p tcp --dport 80 -j SNAT --to X.X.X.X

Насколько я понимаю, ваш основной сервер имеет два фиксированных IP-адреса:

  • частный: 192.168.90.1 (скажем, eth0)
  • публичный: X.X.X.X (скажем, wan0)

Предполагая, что я прав:

Фактически, ваше правило SNAT выполняет NAT для всего TCP-трафика, когда адресатом 192.168.90.2:80

Я не уверен, что это правило актуально, потому что вы уже перенаправили порт 80 в своем правиле DNAT, а первичный и вторичный серверы находятся в одной подсети (частные IP-адреса), поэтому вам не нужна конкретная маршрутизация, чтобы они говорили вместе. .

Я думаю, вам следует удалить правило SNAT.


На мой взгляд, ваше правило SNAT имеет больше смысла для NAT всего исходящего трафика в Интернет с вашего общедоступного IP-адреса.

Возможно, вам стоит изменить его, добавив фильтр на исходящий интерфейс, чтобы трафик только SNAT поступал на ваш интерфейс WAN:

iptables -t nat -A POSTROUTING -o wan0 -p tcp --dport 80 -j SNAT --to X.X.X.X

Но если ваш вторичный сервер уже имеет доступ к Интернету, это означает, что ваша маршрутизация и правила уже верны. Так что вам не нужно это правило SNAT.

  1. Похоже, что он исходит от первого роутера, так как SNAT-Тед. Так что удалите SNAT правило, чтобы сохранить исходный IP-адрес источника входящего трафика.
  2. Затем сообщите второму серверу, что его маршрутизатор по умолчанию должен быть первым сервером, который знает, как направить его обратно к источнику.

Я предполагаю, что все остальное настроено правильно:

  • Переадресация IP включена
  • нет других правил блокировки iptables