Вопрос или проблема
Когда я нахожусь в своей локальной сети (подсети?), я хотел бы перейти на sub1.myserver.com
, чтобы это работало так же, как переход на 192.168.1.99:1234
– то есть целью было бы использовать то же самое доменное имя, которое я также использую публично для этого сервера, получая, например, скорости загрузки LAN.
Моя настройка:
У меня работает несколько служб на разных портах, т.е.: 192.168.1.99:1234
и 192.168.1.99:5678
на моем сервере Debian Bookworm.
Мой DNS (porkbun) имеет записи A
для моего публичного ip -> (под)доменные имена.
У меня есть nginx-прокси, который выполняет proxy_pass
такие как sub1.myserver.com
-> 0.0.0.0:1234
и sub2.myserver.com
-> 0.0.0.0:5678
.
Это работает отлично, и я могу получить доступ к своему серверу публично через sub1.myserver.com
.
Я также могу, конечно, перейти на 192.168.1.99:1234
напрямую и подключиться к тому же приложению через LAN.
Как я могу достичь повторного использования того же домена для локальных соединений LAN, и если это невозможно/нецелесообразно, каково было бы следующее лучшее решение?
У вас есть два варианта;
1 – Сценарий с разделенным DNS. Вы размещаете внутренний DNS-сервер, который будет разрешать локальный IP для компьютеров, использующих этот DNS-сервер. Публичный DNS меняться не будет, но это заставляет зону дублироваться локально с той, что в интернете.
2 – Некоторые маршрутизаторы бизнес-класса могут выполнять сценарий обратного NAT. У него есть правила на маршрутизаторе, что если компьютер обращается к указанному публичному IP из LAN, маршрутизатор переписывает пакет на локальный LAN IP. Этот сценарий более прозрачен для пользователя, даже если они пытаются пинговать имя dns.
Ответ или решение
Чтобы получить доступ к вашему публичному серверу через его доменное имя в локальной сети (LAN), вы можете рассмотреть два основных подхода: использование сплит-DNS и переадресацию на уровне маршрутизатора. Давайте подробно рассмотрим каждый из этих вариантов.
1. Сплит-DNS (Split-DNS)
В этом варианте вы создаете внутренний DNS-сервер, который будет разрешать ваши доменные имена в локальные IP-адреса. Это позволит клиентам в локальной сети обращаться к доменам, таким как sub1.myserver.com
, и получать в ответ локальный IP-адрес вашего сервера (например, 192.168.1.99
).
Пошаговая инструкция:
-
Установка DNS-сервера: Вы можете использовать такие решения, как BIND, dnsmasq или Unbound на вашем сервере Debian. Например, для установки dnsmasq выполните команду:
sudo apt install dnsmasq
-
Конфигурация DNS-сервера: Настройте конфигурацию для локального разрешения доменных имен. В файле конфигурации dnsmasq добавьте следующие строки:
address=/sub1.myserver.com/192.168.1.99 address=/sub2.myserver.com/192.168.1.99
-
Обновление настроек клиентов: Убедитесь, что устройства в вашей локальной сети используют ваш новый DNS-сервер. Для этого измените настройки DHCP на вашем маршрутизаторе или настройте вручную.
-
Тестирование: Проверьте, работает ли разрешение, используя команду
nslookup
илиdig
с локальным доменным именем:nslookup sub1.myserver.com
Если все настройки верны, команда должна вернуть локальный IP-адрес.
2. Переадресация на уровне маршрутизатора (Reverse NAT)
Если у вас есть маршрутизатор, который поддерживает обратный NAT, вы можете настроить правила так, чтобы запросы к публичному IP-адресу маршрутизатора из локальной сети перенаправлялись на локальный IP-адрес сервера.
Пошаговая инструкция:
-
Настройка правила обратного NAT: Зайдите в интерфейс вашего маршрутизатора и найдите настройки NAT. Вам нужно будет создать правило, которое будет перенаправлять трафик с публичного IP (например,
ваш public IP
) на локальный IP (например,192.168.1.99
). -
Пример настройки:
- Входящий трафик на
ваш public IP:1234
перенаправляется на192.168.1.99:1234
. - Входящий трафик на
ваш public IP:5678
перенаправляется на192.168.1.99:5678
.
- Входящий трафик на
Следуйте документации вашего маршрутизатора, так как процесс может различаться в зависимости от производителя.
Заключение
Оба подхода имеют свои преимущества и недостатки. Сплит-DNS предоставляет более явное управление, но требует настроек на каждом клиентском устройстве. Переадресация на уровне маршрутизатора более прозрачна для пользователя, но зависит от возможностей маршрутизатора. Вам следует выбрать тот вариант, который наиболее подходит под ваши нужды и технические возможности.
Если у вас возникли дополнительные вопросы или требуется помощь в процессе настройки, не стесняйтесь обращаться за поддержкой.