/usr/bin/host не взятие изменений в/etc/hosts даже после перезагрузки

Если Вы настаиваете на том, чтобы использовать cat, это работает на оба типа файлов, с и без новой строки в конце:

echo "`cat example.txt`"

Можно превратить его в функцию с именем по Вашему выбору (даже cat) в Вашем .bashrc:

cat1(){ echo "`/bin/cat $@`";}
4
14.11.2013, 17:42
3 ответа

Команда хоста не проверяет файл hosts. Из страницы справочника:

host is a simple utility for performing DNS lookups.

Если Вы хотите протестировать поиски при уважении файла hosts то используйте ping или getent.

$ tail -1 /etc/hosts
127.0.0.1   google.com
$ ping -c1 google.com | head -1
PING google.com (127.0.0.1) 56(84) bytes of data.
$ getent ahosts google.com
127.0.0.1       STREAM google.com
127.0.0.1       DGRAM  
127.0.0.1       RAW    
8
27.01.2020, 20:47

host утилита используется для поисков DNS. Это не заботится о файлах hosts или методах не-DNS разрешения имени хоста. Если бы Вы хотите видеть, как Ваша система разрешила бы имя хоста при нормальных обстоятельствах (принимающий во внимание nsswitch.conf), можно использовать getent. host утилита должна быть зарезервирована для тестирования DNS. Вот пример:

$ host foobar.com
foobar.com has address 69.89.31.56
foobar.com mail is handled by 0 foobar.com.
$ getent hosts foobar.com
10.188.14.16    foobar.com
2
27.01.2020, 20:47
  • 1
    @0xC0000022L, Что оператор является неправильным. При рассмотрении страницы справочника, она использует gethostbyaddr(3), который является a libc функция. –  jordanm 14.11.2013, 18:33
  • 2
    @0xC0000022L libc функции не являются системными вызовами, таким образом, они не обнаружатся в strace. Только вещи в "2" раздел страниц справочника обнаружились бы в strace. –  jordanm 14.11.2013, 18:44
  • 3
    @0xC0000022L - также, с тех пор getent часть libc в моей системе не имело бы никакого смысла для него не пользоваться библиотекой, с которой это распределяется. –  jordanm 14.11.2013, 18:46

Программы как dig, host и nslookup запросите DNS только. Они не запрашивают другие источники имен хостов такой как /etc/hosts, NIS или LDAP.

В большинстве установок самый легкий способ гладко добавить имена хостов локально состоит в том, чтобы выполнить сервер DNS. Выполнение кэша DNS является хорошей идеей так или иначе для производительности. Другими словами, то, что никакой сервер DNS не работает локально, является чем-то для фиксации, а не что-то для работы вокруг.

Dnsmasq является общим выбором: это является широко доступным, маленьким (это используется на многих основанных на Linux маршрутизаторах), и легкий настроить. Запросы DNS кэшей Dnsmasq и могут служить дополнительным именам от файла hosts. Это также обеспечивает основной сервер DHCP, подходящий для небольших сетей, но Вы не должны использовать ту часть. Если Вы имеете изолированную машину, выполняете Dnsmasq на нем. Если Вы имеете локальную сеть, выполняете Dnsmasq (или некоторое другое эквивалентное программное обеспечение, это уже там) на Вашем маршрутизаторе. Посмотрите, Как сделать машину доступной из LAN с помощью ее имени хоста для получения дополнительной информации включая то, как создать Dnsmasq.

1
27.01.2020, 20:47

Теги

Похожие вопросы