Откуда еще на Mac может поступать информация о хостах, помимо DNS и /etc/hosts?

Откуда еще на Mac может поступать информация о хостах, помимо DNS и /etc/hosts?

Все имена и адреса изменены. 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

В 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. Активный каталог
  5. ПОБЕДЫ
  6. Служба имен NetBIOS
  7. NIS (ранее YellowPages/yp; сетевая информационная служба Sun/Oracle)

Вы можете изменить эти параметры с помощью dsclинструмента командной строки или с помощью приложения Directory Utility, которое находится по адресу:

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

Связанный контент