Как настроить доступ к веб-сайту по доменному имени в локальной сети (ЛВС) с использованием внутреннего IP-адреса, а из интернета — по внешнему IP-адресу?

Добрый день! В нашей организации установлен роутер Keenetic, порты проброшены до сервера, доменное имя разрешается, все работает хорошо. Однако при доступе к сервису по доменному имени он происходит через внешний IP, даже если запрос идет из внутренней сети. В результате, когда интернет недоступен, доступ к сервису теряется для всех пользователей. <br/> Могу ли я настроить так, чтобы внутри сети доменное имя ссылалось на внутренний адрес сервиса, а извне — на внешний? <br/> Я вспомнил, что в прошлом делал что-то подобное с помощью DNS сервера, но сейчас детали подводят.
  • 20 февраля 2025 г. 11:44
Ответы на вопрос 4
Добрый день!

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

### 1. Использование локального DNS-сервера

Если вы ранее настраивали DNS-сервер, то этот способ подойдет вам лучше всего. Вам нужно:

1. **Установить локальный DNS-сервер** (например, `dnsmasq`, `Bind` или любой другой). 
2. **Настроить его для вашей локальной сети** таким образом, чтобы он обрабатывал DNS-запросы.
3. Добавить запись для вашего доменного имени, указывающую на внутренний IP-адрес сервера.
4. Настроить роутер или клиентские устройства так, чтобы они использовали ваш локальный DNS-сервер для разрешения доменных имен.

Таким образом, когда пользователи в локальной сети будут запрашивать ваше доменное имя, они будут получать внутренний IP-адрес.

### 2. Изменение файла hosts

Похожий подход заключается в редактировании файла `hosts` на каждом клиентском устройстве в локальной сети.

1. **На каждом клиентском компьютере** отредактируйте файл `/etc/hosts` (Linux/Mac) или `C:\Windows\System32\drivers\etc\hosts` (Windows).
2. Добавьте строку, где доменное имя будет соответствовать внутреннему IP-адресу вашего сервера.

Пример:
```
192.168.1.100 yourdomain.com
```

### 3. Использование Split DNS

Этот метод также требует наличия DNS-сервера. Однако вместо редактирования базовых записей, вам нужно настроить его как Split DNS. Это означает, что у вас будет две разные зоны для вашего домена:

- **Внешняя зона** (с внешним IP-адресом), которая будет доступна из интернета.
- **Внутренняя зона** (с внутренним IP-адресом), которая будет доступна только локальным пользователям.

Плюс в том, что в этом случае не нужно будет вручную изменять настройки на каждом клиенте.

### 4. Настройка NAT Loopback (если возможно)

Некоторые роутеры поддерживают функцию NAT Loopback (или Hairpin NAT), которая позволяет внутренним устройствам обращаться к внешнему адресу и получать ответ от внутреннего сервера. Если ваш роутер Keenetic поддерживает эту функцию, вы можете попробовать её использовать.

### Рекомендации

- Для более простого и надежного решения рекомендуется использовать локальный DNS-сервер, так как это позволит избежать необходимости редактирования файлов на каждом клиенте и обеспечит более гибкое управление разрешением имен.
- Если вы решите использовать редактирование файла hosts, имейте в виду, что это может создать трудности с поддержкой и обновлением, особенно если количество устройств в сети велико.

Выбирайте способ, который наиболее удобен и подходит для вашей инфраструктуры.
bind view 
из клиентской сети днс резолвит в один адрес, из мира - в другой
Простите, можете уточнить причем тут "память подводит"? 
Я возможно не прав - но или есть понимание того, как работает DNS и тогда можно оценить в поддерживаемой или любой инфраструктуре - как обеспечить внутри резольвинг DNS имен определенной зоны на внутренние адреса, или понимания нет.
А вообще есть 3 обычных подхода - обычный дубликат зоны внутри с нужными изменениями, редактирование hosts на конечных машинах или split dns\split-brain dns.
Все верно. 
DNS сервере или роутере.
Запись А www.cheburashka.ru 192.168.1.5
и
Запись А cheburashka.ru 192.168.1.5
Похожие вопросы