Все имена и адреса изменены. 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-адресе с помощью множества других средств, включая:
- mDNS (Apple Bonjour / IETF ZeroConf)
- Open Directory (схема Apple на LDAP)
- Другой LDAP-протокол
- Активный каталог
- ПОБЕДЫ
- Служба имен NetBIOS
- NIS (ранее YellowPages/yp; сетевая информационная служба Sun/Oracle)
Вы можете изменить эти параметры с помощью dscl
инструмента командной строки или с помощью приложения Directory Utility, которое находится по адресу:
/System/Library/CoreServices/[Applications]/Directory\ Utility.app