Это теоретический вопрос: учитывая, что у меня есть несколько серверов, у которых есть как общедоступный IP-адрес, так и частный IP-адрес (диапазон 192.xxx). Оба приложения используются для разных Сервисов. Я не хочу работать внутри (для частной LAN) с IP-адресами, но также и с именами хостов, так как их гораздо лучше запомнить:
Пример: foobar.myhost.com => Общедоступный IP-адрес 222.xxx И Частный IP-адрес 192.xxx.
Я знаю, что могу использовать файл / etc / network / hosts для определения всех имен хостов "Private LAN", но это очень громоздко и чревато ошибками. Поскольку мне нужно синхронизировать все эти файлы.
Каковы наилучшие методы / ваши варианты использования стандартных общедоступных записей DNS (моего домена), чтобы также перечислить частные имена? Имеет ли это смысл? Однако это меняет структуру моей частной локальной сети, хорошо ли это? И в общедоступных записях DNS также будут перечислены частные IP-адреса (этого я никогда раньше не видел).
И самая большая проблема: на самом деле я хотел иметь одно единственное имя хоста, но это имя хоста имеет как публичный, так и частный IP-адрес. Есть ли возможность определить оба из них в записях DNS (с тем же именем foobar.myhost.com), но позже различать частные и публичные IP-адреса?
Мы очень ценим любые хорошие сообщения в блогах / передовой опыт / статьи / мнения.
Спасибо, Дженс
Есть несколько способов добиться этого. Очевидно, вы не хотите создавать записи A как для общедоступных, так и для частных IP-адресов и публиковать эти записи для общедоступного использования, потому что тогда пользователи будут пытаться получить доступ через частный IP-адрес. Если для одного имени указано несколько записей A, они будут использоваться в циклическом режиме, в результате чего пользователи иногда не могут подключиться.
Вот несколько решений, которые я использовал:
Мое любимое решение - создать подзону DNS для этих серверов, возможно, с названием "private.example.com". Затем серверы в «example.com», имеющие частные IP-адреса, я перечисляю в зоне «private.example.com». Затем настройте ваш /etc/resolv.conf (возможно, через DHCP), чтобы при подключении к частной сети ваш путь поиска DNS был "private.example.com example.com". Теперь, если вы попытаетесь получить доступ к «hostname», он сначала попытается найти «hostname.private.example.com». а затем hostname.example.com. Таким образом, любые хосты в этом домене, у которых нет частных IP-адресов, вам не нужно указывать в нескольких местах. Вы также можете явно сослаться на общедоступный IP-адрес, указав hostname.example.com и аналогично для частного IP. Но если вы просто скажете «имя хоста», он будет искать совпадение.
Примечание. Если третьи стороны поймут, что существует зона private.example.com, они могут запросить или «раскопать» ее и увидеть IP-адресацию. Раскрытие этой информации может быть для вас проблемой, в зависимости от ваших конкретных требований, но для моих нужд раскрытие некоторых частных IP-адресов никогда не было проблемой.
Вы можете настроить то, что BIND называет «представлениями». Вот ссылка на другой вопрос, в котором показан пример конфигурации представлений.. По сути, вы настраиваете списки контроля доступа, в которых указывается, какой файл зоны использовать для ответа на запрос, в зависимости от того, какой IP-адрес его запрашивает. Поэтому, если вы получите запрос из частной сети, вы можете ответить частным IP-адресом. Однако представления могут быть трудными в настройке и обслуживании. Существует также проблема хранения дубликатов записей в разных представлениях, подробнее см. Мое следующее предложение.
Если в вашей частной сети есть хост, на котором вы можете запускать DHCP и DNS, который отделен от вашего общедоступного DNS-сервера, вы можете настроить DNS на этом хосте в качестве DNS-сервера по умолчанию для машин в частной сети, а затем настроить DNS-сервер для ответа на запросы этих машин с использованием частных IP-адресов. Однако, если не все машины в зонах DNS, которые вас интересуют, будут иметь частные IP-адреса, это может привести к дублированию записей, в которых теперь вам нужно указать IP-адреса для серверов на обоих DNS-серверах. Подобно представлениям выше, но концептуально немного проще в настройке и тестировании, поскольку у вас есть полностью отдельные DNS-серверы.
Если вы не хотите связываться с представлениями BIND для небольшого количества записей (или вы используете DNS-сервер, который не имеет такой функциональности, например, Microsoft DNS), вы можете создать зоны на своих внутренних DNS-серверах, которые соответствуют FQDN внутренних хостов, которые содержат только запись @ A. Остальные записи в вашем домене будут разрешены через DNS в Интернете. Для клиентов в вашей LAN, которые используют внутренние DNS-серверы, будут возвращены зоны FQDN с указанными IP-адресами LAN (поскольку DNS-сервер LAN будет авторитетным для этих имен).
Конечно, перечисление диапазона частных IP-адресов на том же сервере в качестве авторитетных общедоступных адресов - плохая идея. Однако, если вы используете внутренний сервер, который не является авторитетным для вашего домена (т.е. доступен только для внутренних серверов), тогда нет технических проблем с репликацией общедоступных адресов в той же зоне, что и частные адреса (кроме проблемы обновления адреса, измененные на публичном сервере). В самом деле, имеет смысл предоставить внутреннюю службу DNS.
Некоторое время назад я написал сценарий для настройка Bind но обратите внимание, что это в первую очередь предназначено для сценариев, когда внутренние адреса находятся в отдельном домене от общедоступных адресов. В наши дни (если вы работаете в Unix / Linux / POSIX) dnsmasq - лучшее решение (с дополнительным преимуществом адресов DHCP).
Добавление глобально немаршрутизируемых диапазонов IP-адресов в DNS может привести к путанице при доступе в другой LAN, потому что могут быть другие серверы с этим диапазоном IP-адресов, что потенциально может позволить фишинговые атаки при обмане пользователя при доступе к системе LAN за пределами LAN.
Настройте DNS-сервер с рекурсией в LAN, если у вас его нет, добавьте необходимые зоны / записи туда и укажите там DHCP / компьютеры LAN или используйте BIND-представления или соответствующую функцию вашего DNS-сервера, чтобы показать другую зону из вашей LAN