По какой-то причине, когда я пытаюсь получить доступ к локальным хостам через их имена, это не разрешается должным образом.
# ping server.domain.tld
PING server.domain.tld.domain.tld (###.###.###.###) 56(84) bytes of data.
Очевидно, это нарушает работу ssh и любых сценариев, которые зависят от имен хостов. Все, что в этом домене имеет публичный IP-адрес, разрешается правильно.
Каков мой следующий шаг в устранении этой проблемы? Google не нашел ничего похожего на поисковые запросы, которые я придумал, поэтому любая помощь приветствуется.
Не уверен, что это имеет значение, но когда я пытаюсь пропинговать только сервер, я получаю следующее (что, как мне кажется, должно быть):
# ping server
ping: unknown host server
Похоже, вы хотите настроить разделить горизонт DNS. То есть вы хотите иметь DNS-сервер, который «знает» о частных IP-адресах и именах ваших серверов. Ваши серверы могут использовать этот DNS-сервер для преобразования имен в свои частные IP-адреса вместо общедоступных адресов, которые будут преобразовывать ваши общедоступные DNS-серверы.
Вы не упоминаете, какое программное обеспечение DNS-сервера вы используете (или даже если вы размещаете свой собственный DNS). BIND имеет Просмотры функциональность, которая может делать то, что вам нужно. Другое программное обеспечение DNS-сервера, вероятно, имеет аналогичные функции (я использую BIND только в Linux, поэтому я не могу говорить по опыту).
Если вы не размещаете DNS для своего домена и не можете заставить своего поставщика DNS использовать представления, вы можете подумать о том, чтобы просто настроить собственный DNS-сервер за своим устройством NAT и настроить свои серверы для его использования.
Если у вас есть хосты с именами в вашем домене, которые расположены за пределами вашего устройства NAT, убедитесь, что ваш внутренний DNS-сервер (или представление) правильно возвращает общедоступные IP-адреса для этих хостов.
Редактировать:
Как говорит @BillThor, чтобы ваши серверы разрешали неквалифицированные имена для записей в вашем домене, вам нужно добавить search domain.tld
линия к серверам /etc/resolv.conf
.
Добавить domain.tld
в список поиска в /etc/resolv.conf
. Сначала у вас должен быть домен, чтобы он был проверен. Если ваш домен был example.com
, следующий список поиска может быть подходящим.
search example.com com net org
Чтобы проверить свой резолвер, используйте такую команду, как:
getent hosts server
Это вернет IP и полное доменное имя сервера, если распознаватель сможет его разрешить.