Nslookup - это программа для запроса серверов доменных имен в Интернете . Nslookup очень хорош для запросов к DNS-серверам, но не дает полной картины, когда дело касается разрешения имен.
В Linux разрешение имен чаще всего контролируется NSS, который настраивается с помощью /etc/nsswitch.conf
. В частности, эта конфигурация содержит hosts
запись. Например:
hosts: files dns
В приведенной выше записи , которую вы можете увидеть , что первое , что нужно быть запрошены в files
следует dns
, что означает , что /etc/hosts
будет запрошен перед тем DNS. Существуют и другие варианты, включая LDAP , Multicast DNS и WINS .
Отвечая на ваш вопрос напрямую, SSH разрешает имя хоста в IP-адрес, используя NSS (получение результатов из нескольких источников), где nslookup запрашивает только DNS.
Вы можете проверить, какой IP NSS разрешает имя хоста для использования getent. Например, чтобы решить somename
:
getent hosts somename
Также в случае SSH вы можете настроить информацию о хосте в /etc/ssh/ssh_config
и ~/.ssh/config
. Это даже позволит вам указать IP-адрес для имени хоста, полностью пропуская разрешение имени.
Следующее говорит SSH использовать 192.168.1.25
для обоих dev
и dev.example.com
. SSH будет использовать этот адрес независимо от того, существуют ли эти имена как DNS-имена для другого IP:
# contents of $HOME/.ssh/config
Host dev dev.example.com
HostName 192.168.1.25
/etc/hosts
или~/.ssh/config
?