Рейтинг:0

Модуль доступа NGINX и внутренний DNS: как разрешить только локальным клиентам

флаг cn

Я искал через serverfault, но не смог найти ответ на этот вопрос. Может быть, я просто не знаю нужного ключевого слова или это концептуальное недоразумение. Любая помощь будет оценена по достоинству!

Ситуация:

  1. Мои локальные службы работают за обратным прокси-сервером NGINX
  2. я использую LAN DNS на роутере (Draytek) для разрешения локальных запросов к *.example.com непосредственно на мой локальный сервер (192.168.1.2).

Даже если нет подключения к Интернету, домены будут разрешены на локальный сервер, и все службы будут доступны. Вот почему я использую LAN DNS. Все идет нормально.

Теперь я хочу разрешить локальным клиентам доступ к определенным службам только с помощью Модуль доступа к NGINX с:

разрешить 192.168.1.0/24;
отрицать все;

Но NGINX видит только общедоступный IP-адрес маршрутизатора вместо IP-адреса клиента (192.168.1.100), поэтому каждый запрос отклоняется:

[...] доступ запрещен правилом, клиент: 123.123.123.123, сервер: service.example.de, запрос: [...]"

Мой вопрос:

Как я могу отличить локальных и удаленных клиентов на NGINX в этом сценарии?

Ссылка на схему сети


vidarlo avatar
флаг ar
Не используйте НАТ. DNS *не* перезаписывает IP-адреса.
Рейтинг:0
флаг ru

Сначала предположение/условие, которое заключается в проверке, добавляет ли ваш маршрутизатор X-переадресовано-для заголовок или что-то подобное (отслеживает фактический IP-адрес клиента)

Сначала вы должны разрешить IP-адрес клиента, через ngx_http_realip_module

Пример конфигурации, представленный там:

set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
set_real_ip_from 2001:0db8::/32;
real_ip_header X-Forwarded-For;
real_ip_recursive на;

При этом IP-адрес, используемый для проверки доступа, должен быть правильным (фактический клиент).

Один нюанс — при такой конфигурации попытки добавить роутер в заголовок X-Forwarded-For невозможны автоматически с proxy_add_x_forwarded_for, поскольку добавленный IP-адрес будет изменен предыдущей директивой. Этот конкретный случай обсуждался при переполнении стека

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.