В настоящее время мы используем сервер NGINX в качестве обратного прокси-сервера для различных служб и приложений. Он обрабатывает и передает трафик в созданное нами веб-приложение, прокси-сервер API, а также отдельный программный API. Ниже приведен пример схемы, показывающей ресурсы, стоящие за прокси.
foobar.com
|-foobar.com/api
|-foobar.com/webapp
|-foobar.com/proxy
У нас есть корпоративная система AD с возможностью единого входа. Я пытаюсь интегрировать это с обратным прокси-сервером NGINX для аутентификации пользователей при доступе к одной или нескольким из этих служб за NGINX.
Я видел сообщения вроде https://www.nginx.com/blog/nginx-plus-authenticate-users/ , в которых описывается, как заставить NGINX использовать AD-аутентификацию пользователей, когда пользователи заполняют форма входа в систему, но в нашем случае это не сработает. Это связано с тем, что некоторые из этих пользователей будут взаимодействовать со службой API и прокси-службой через операции HTTP CRUD и / или команды curl. Кроме того, эти пользователи API и прокси могут принадлежать другим приложениям, а не людям. В этом смысле они являются полностью программными взаимодействиями. Я хочу перенаправить порт 443 на IP C: 443 поэтому я могу подключить A: 443 ---- к --- c: 443, если я использую (A: 443 NAT на C: 443), это не сработало -A ...
у сервера два IP-адреса A и B (шлюз по умолчанию - B) Я хочу перенаправить порт 443 на IP C: 443 поэтому я могу подключить A: 443 ---- к --- c: 443
, если я использую (A: 443 NAT к C: 443), это не сработает
-A PREROUTING -d A/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source A:443
, если я использую (B: 443 NAT для C: 443) Я могу подключить B: 443, но это не то, что я хочу
-A PREROUTING -d B/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source B:443
, и это не сработало, даже если я использую (A: 443 NAT к B: 443 B: 443 к C: 443)
-A PREROUTING -d A/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination B:443
-A POSTROUTING -d B/32 -p tcp -m tcp --dport 443 -j SNAT --to-source A:443
-A PREROUTING -d B/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination C:443
-A POSTROUTING -d C/32 -p tcp -m tcp --dport 443 -j SNAT --to-source B:443
, поэтому как я могу сделать эту работу, спасибо
Если я правильно вас понял (если вы хотите перенаправить порт 443 с A на C), вам следует настроить iptables следующим образом:
*nat
-A PREROUTING -d A/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination C:443
-A POSTROUTING -p tcp -m tcp --dport 443 -j MASQUERADE
Также вы должны проверить конфигурацию iptables на предмет правила -A FORWARD -j REJECT --reject-with icmp-host -hibited
он вообще отключает пересылку.
И вы должны были включить net.ipv4.ip_forward
в sysctl
.