Все имена и адреса изменены. example.com - мой домен.

% ping foo.example.com
PING foo.example.com (1.1.1.1)

1.1.1.1 - это IP-адрес, о котором я никогда не слышал. То же самое для других программ (ssh, curl)

% host foo.example.com
foo.example.com has address 2.2.2.2

2.2.2.2 - это правильный IP-адрес.

% grep foo /etc/hosts
(empty)

Это на Mac. В Linux я бы искал /etc/nsswitch.conf для других источников информации о хосте. Есть ли что-то похожее на Mac?

1 ответ1

4

У macOS есть сложная система маршрутизации DNS в определенных областях для таких вещей, как VPN. Так, если у вас, например, есть VPN-соединение, которое «работает» прямо сейчас, запросы доменных имен вашей работы могут отправляться на DNS-сервер на работе.

Чтобы увидеть весь список, запустите:

scutil --dns

Для запроса DNS, как это делает система, используйте:

dns-sd -G v4v6 example.com
dns-sd -q example.com 255 255

(вы должны нажать Ctrl-C, чтобы выйти из dns-sd).

Команды host , dig и nslookup - это старые команды unix для устранения неполадок DNS-сервера, которые содержат собственный код распознавателя DNS и не используют системные библиотеки. Поэтому, если вы не укажете, какой сервер вы хотите использовать, они просто получат его из автоматически сгенерированного файла /etc/resolv.conf , который заполняется серверами по умолчанию только для запросов с незаданной областью. Но такой инструмент, как ping вероятно, просто вызывает gethostbyname(3) который использует системную маршрутизацию DNS.

Отредактировано, чтобы добавить: я должен также упомянуть, что macOS может получить информацию о разрешении имени хоста для IP-адреса из множества других средств, включая:

  1. mDNS (Apple Bonjour / IETF ZeroConf)
  2. Open Directory (схема Apple в LDAP)
  3. Другой LDAP
  4. Active Directory
  5. WINS
  6. Служба имен NetBIOS
  7. NIS (ранее YellowPages / yp; информационная служба сети Sun / Oracle)

Вы можете редактировать эти параметры с помощью инструмента командной строки dscl или с помощью приложения «Утилита каталогов», которое скрывается по адресу:

/System/Library/CoreServices/[Applications]/Directory\ Utility.app

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .