Мне удалось перенаправить 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-адреса:
eth0
)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.
SNAT
-Тед. Так что удалите SNAT
правило, чтобы сохранить исходный IP-адрес источника входящего трафика.Я предполагаю, что все остальное настроено правильно: