- Настройка DNS в Linux
- files
- resolve
- myhostname
- mymachines
- Кэш DNS в linux
- systemd-resolved
- dnsmasq
- Как очистить (очистить) кеш DNS в Windows, MacOS и Linux
- Очистить / очистить кеш DNS в Windows
- Windows 10 и Windows 8
- Windows 7
- Очистить / очистить кеш DNS в Linux
- Systemd решено
- DNSMasq
- Очистить / очистить кеш DNS в macOS
- Очистить / очистить кеш DNS браузера
- Гугл Хром
- Fire Fox
- Выводы
Настройка DNS в Linux
Сразу отметим, что речь в данной статье пойдет исключительно о клиентской части системы DNS в linux. О серверной части мы поговорим в другой статье (она-то как раз гораздо проще для восприятия). Итак, начнем.
Разобраться, как работает DNS в вашей системе, можно только поняв, как устроена та программа, которую вы запускаете. Серьезно, только сама программа определяет, как она будет работать с DNS, а не операционная система в целоми и не linux в частности. Нужно смотреть, как была написана вот эта вот конкретная программа. Но не огорчайтесь сразу, вам скорее всего не понадобится срочно изучать все возможные языки программирования, только чтобы настроить вашу программу на работу с DNS. Указанный выше случай справедлив больше для программ собраных статически, разнообразных самопалов или чисто академических творений всемозможных энтузиастов.
Современные программисты достаточно ленивы и собирают свои программы динамически, т.е. с использованием разделяемых библиотек. Они позволяют им не заботиться о ряде функциональных возможностей, таких как работа с сетью, шифрованием или DNS. Действительно, вам бы не понравилось переносить один и тот же код из программы в программу только ради того, чтобы дать ей возможность преобразовывать имена в IP адреса. А если в этом коде потом обнаружиться баг или серьезная уязвимость? Нет. Вся функциональность нынче вынесена в библиотеки. И так уж получилось, что в linux самой популярной библиотекой для преобразования имен является libnss. Т.е. повторюсь, это совсем не обязательно, что ваша программа будет собрана с использованием libnss. Да, большинство (99% программ) будут следовать законам libnss, однако имейте ввиду, что возможна сборка с какой-нибудь другой библиотекой, или вообще статически с самописным кодом. Это будет лишь означать, что настраиваться DNS в этих немногочисленных случаев по-особому.
Итак, после того, как мы выяснили, что большинство программ в linux использует библиотеку libnss для преобразования имен в IP адреса, осталось лишь понять, как настроить этот самый libnss, и дело в шляпе. И тут мы натыкаемся на очередной сюрприз — libnss сам динамический. Да, это не конец цепочки Программа -> libnss -> dns-сервер. Оказывается, есть множество способов для резолвинга. Например, libnss, с помощью, опять же, подключаемых модулей, может заглянуть в файлик (например /etc/hosts) в поиске IP адреса, а потом спросить у местного MySQL, а далее еще пройти чере фильтр-сервер, отдающий запросы в соответствии со своим API по http протоколу. Т.е. вы уже начинаете понимать, что DNS сервера в этой цепочке-то может и не быть. Как же всем этим хозяйством управлять? Головным конфигурационным файлом для libnss является /etc/nsswitch.conf, именно там мы указываем:
- какие модули libnss будет использовать для перобразования имен в адреса
- в каком порядке (приоритет) их вызывать.
И только когда libnss, пройдясь по всем модулям, так и не сможет найти соответствующий запрашиваемому имени IP адрес, тогда вам будет возвращен ответ примерно такого вида
# ping google.com
ping: google.com: Name or service not known
Заглянем в /etc/nsswitch.conf
# Name Service Switch configuration file.
# See nsswitch.conf(5) for details.
passwd: files mymachines systemd
group: files mymachines systemd
shadow: files
hosts: files mymachines myhostname dns
networks: files
protocols: files
services: files
ethers: files
rpc: files
Мы видим много разных строчек. Действительно, libnss отвечает далеко не только за преобразование имен хостов в IP-адреса, а также за преобразование имен пользователей в uid, групп в gid, имен протоколов в номера портов и т.д. Заострим наш взгляд на строке начинающейся с «hosts:», ведь именно о ней-то мы и говорим. Здесь все очень просто — мы определяем, какие модули мы хотим использовать для преобразования имен хостов в IP-адреса и в какой последовательности. Почти наверняка на первом месте у вас будет «files», что означает, что при поступлении запроса на резолвинг, мы сначала вызываем модуль «files», который в свою очеред заглядывает в /etc/hosts в поисках интересующего пользователя имени. Рассмотрим самые распространенные модули, что они делают и как настраиваются на диаграмме
Подведем промежуточный итог:
files
Модуль files не настраивается. Работает с /etc/hosts в качестве базы данных имен и адресов. Синтаксис /etc/hosts предельно простой: IP адрес, полное имя (FQDN) набор алиасов (дополнительных имен)
# cat /etc/hosts
127.0.0.1 www.hippolab.ru hippolab.ru
127.0.0.1 localhost
resolve
Модуль resolve задействует механизм резолвинга имен внедренный в линукс командой, разрабатывающей systemd. Настраивается через /etc/systemd/resolved.conf. Соответственно узнать, какой DNS сервер сейчас используется можно посмотрев на диррективу «DNS=» в указанном файле. Если она закомментирована (перед строкой стоит решетка #), то systemd-resolved наследует конфигурацию либо у демона настройки сети systemd-networkd, либо берет информацию о доступных DNS серверах из /etc/resolv.conf. Если ему вообще не удается найти DNS сервера, то он попытается присоединиться к серверам Google: 8.8.8.8 и 8.8.4.4. Подробно о systemd-resolved в одной из наших предыдущих статей. В большинстве дистрибутивов по-умолчанию не задействован
myhostname
Модуль myhostname не настраиваются. Тоже часть systemd. Резолвит локальные имена машины сами в себя. Например можно пингануть hippo.localhost и вы получите результат. Зачем она надо, спросите вы, если уже есть /etc/hosts? Модуль myhostname надежнее. Редактируя /etc/hosts, человек может совершить ошибку, тогда как myhostname общается напрямую с ядром и ошибок не совершает
mymachines
Модуль mymachines позволяет резолвить имена контейнеров, запущенных systemd.
Модуль dns настраивается через /etc/resolv.conf, в качестве базы данных использует DNS сервера, обращаясь к ним через сеть. Соответственно узнать или прописать адреса DNS серверов можно в указанном файле. И тут стоит быть осторожным. Так как модуль dns является самым популярным способом резолвинга имен хостов в linux, файл /etc/resolv.conf является объектом пристального внимания разнообразных автоматических конфигураторов сети, таких как NetworkManager и т.п. Если вы работаете с одним из таких конфигураторов, то менять настройки надо в их собственных конфигурационных файлах, а не напрямую в /etc/resolv.conf, так как весьма вероятно, что им это не понравится, и ваша конфигурация будет перезаписана. Синтаксис /etc/resolv.conf простой и задается в формате ключ/значение: nameserver указывает на IP адрес DNS сервера, search позволяет указать домен поиска при использовании коротких имен без доменной части.
# cat /ets/resolve.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
search hippolab.ru
Модульная архитектура libnss позволяет действительно творить чудеса. Мы уже упомянули в начале статьи, что вы можете потенциально подключить модуль, который будет резолвить имена, используя базы данных MySQL или HTTP сервера. Возможности по истине безграничные
Кэш DNS в linux
Настало время поговорить о кэшэ DNS в linux. Кэш по-умолчанию в вашем дистрибутиве скорее всего выключен, однако мест, где его можно поискать не так уж и много. Понимая модульность libnss, вы наверняка уже догадались, что кэш можно встретить
- на этапе вызова модуля (например systemd-resolved, имеют свой собственный кэш)
- в самом libnss (демон nscd если запущен, то скорее всего кэширует результаты резолвинга)
- в демонах кэша, которые еще называют stub-resolver, такие как dnsmasq и systemd-resolved, с недавних пор получивший функцию stub-resolver’а
- на самих DNS серверах
Проверить, запущен ли nscd, можно с помощью systemctl
systemctl status nscd
ps -A | grep nscd
Настраивается nscd через /etc/nscd.conf. Его синтаксис перекликается с таковым у /etc/nsswitch.conf, например, имена сервисов и там, и там одинаковые. Кроме того, поддерживается ряд глобальных параметров
logfile
debug-level
threads
max-threads
server-user
stat-user
reload-count unlimited|
paranoia
restart-interval
enable-cache
positive-time-to-live
negative-time-to-live
suggested-size
check-files
persistent
shared
max-db-size
auto-propagate
Т.е. для включения кэша в nscd (этот кэш первичный, т.е. отрабатывает ДО вызова любого модуля из /etc/nsswitch.conf) вам достаточно убедиться в наличии строки
enable-cache hosts yes
Простого перезапуска nscd бывает недостаточно для очистки кэша. Для очистки кэша резолвинга имен хостов в nscd используйте команду
Этой же командой вы можете очистить кэш и других сервисов, например passwd или groups. Просто замените «hosts» на нужный сервис
systemd-resolved
О systemd-resolved мы уже писали в статье Переходим на systemd-resolved. Но на всякий случай напомним. Для очистки кэша systemd-resolved в большинстве случаев достаточно просто перезапустить systemd-resolved командой
systemctl restart systemd-resolved
Или, не перезапуская сервис
dnsmasq
Кэш dnsmasq вычищается простым перезапуском
Источник
Как очистить (очистить) кеш DNS в Windows, MacOS и Linux
Кэш DNS — это временная база данных, в которой хранится информация о предыдущих поисках DNS. Другими словами, всякий раз, когда вы посещаете веб-сайт, ваша ОС и веб-браузер будут вести учет для домена и соответствующего IP-адреса. Это устраняет необходимость в повторяющихся запросах к удаленным DNS-серверам и позволяет вашей ОС или браузеру быстро разрешать URL-адрес веб-сайта.
Однако в некоторых ситуациях, например, при устранении неполадок в сети или после смены преобразователей DNS, вам потребуется очистить кеш DNS. Это очистит кэшированные записи DNS и выполнит последующий поиск для разрешения домена на основе вновь настроенных параметров DNS.
В этой статье приведены инструкции по очистке кеша DNS в разных операционных системах и веб-браузерах.
Очистить / очистить кеш DNS в Windows
Процесс очистки кеша DNS одинаков для всех версий Windows. Вам нужно открыть командную строку с правами администратора и запустить ipconfig /flushdns .
Windows 10 и Windows 8
Чтобы очистить кеш DNS в Windows 10 и 8, выполните следующие действия:
Введите cmd в строку поиска Windows.
Щелкните правой кнопкой мыши командную строку и выберите Запуск от имени администратора. Откроется окно командной строки.
В командной строке введите следующую строку и нажмите Enter:
В случае успеха система вернет следующее сообщение:
Windows 7
Чтобы очистить кеш DNS в Windows 7, выполните следующие действия:
Щелкните по кнопке Пуск.
Введите cmd в текстовое поле поиска меню «Пуск».
Щелкните правой кнопкой мыши командную строку и выберите Запуск от имени администратора. Откроется окно командной строки.
В командной строке введите следующую строку и нажмите Enter:
В случае успеха система вернет следующее сообщение:
Очистить / очистить кеш DNS в Linux
В Linux кэширование DNS на уровне ОС отсутствует, если не установлена и не запущена служба кэширования, такая как Systemd-Resolved, DNSMasq или Nscd. Процесс очистки кеша DNS отличается в зависимости от дистрибутива Linux и службы кэширования, которую вы используете.
Systemd решено
Большинство современных дистрибутивов Linux, таких как Ubuntu 18.04, используют службу с разрешением systemd для кэширования записей DNS.
Чтобы узнать, запущена ли служба, используйте следующую команду:
Если служба запущена, команда будет печатать как active . В противном случае вы увидите inactive .
Чтобы очистить кэш Systemd Resolved DNS, введите:
В случае успеха команда не возвращает никакого сообщения.
DNSMasq
Dnsmasq — это облегченный кэширующий сервер имен DHCP и DNS.
Если ваша система использует DNSMasq в качестве кэширующего сервера, для очистки кеша DNS вам необходимо перезапустить службу Dnsmasq:
Nscd — это демон кеширования, и это предпочтительная система кэширования DNS для большинства дистрибутивов на основе RedHat.
Если ваша система использует Nscd, чтобы очистить кеш DNS, вам необходимо перезапустить службу Nscd:
Очистить / очистить кеш DNS в macOS
Команда для очистки кеша в macOS немного отличается в зависимости от используемой версии. Команда должна быть выполнена от имени пользователя с правами системного администратора (пользователь sudo).
Чтобы очистить кеш DNS в macOS, выполните следующие действия:
Перейдите в Приложения> Утилиты> Терминал. Это откроет окно терминала.
В командной строке введите следующую строку и нажмите Enter:
Введите свой пароль sudo и снова нажмите Enter. В случае успеха система не возвращает никаких сообщений.
Для более ранних версий macOS команда очистки кеша отличается.
macOS версии 10.11 и 10.9
macOS версии 10.10
macOS версии 10.6 и 10.5
Очистить / очистить кеш DNS браузера
Большинство современных веб-браузеров имеют встроенный DNS-клиент для предотвращения повторяющихся запросов при каждом посещении веб-сайта.
Гугл Хром
Чтобы очистить кеш DNS Google Chrome , выполните следующие действия:
- Откройте новую вкладку и введите chrome://net-internals/#dns в адресной строке Chrome.
- Нажмите кнопку «Очистить кеш хоста».
Если это не сработает, попробуйте очистить кеш и файлы cookie.
- Откройте диалоговое окно «Очистить данные просмотра» с помощью CTRL+Shift+Del .
- Выберите временной диапазон. Выберите «За все время», чтобы удалить все.
- Установите флажки «Файлы cookie и другие данные сайта» и «Кэшированные изображения и файлы».
- Нажмите кнопку «Очистить данные».
Этот метод должен работать для всех браузеров на базе Chrome, включая Chromium , Vivaldi и Opera .
Fire Fox
Чтобы очистить кеш DNS Firefox, выполните следующие действия:
- В верхнем правом углу щелкните значок гамбургера ☰ чтобы открыть меню Firefox:
- Щелкните ⚙ Options (Preferences) .
- Щелкните вкладку Конфиденциальность и безопасность или Конфиденциальность слева.
- Прокрутите вниз до раздела « History » и нажмите кнопку « Clear History. .
- Выберите временной диапазон для очистки. Выберите «Все», чтобы удалить все.
- Установите все флажки и нажмите «Очистить сейчас».
Если это не сработает, попробуйте следующий метод и временно отключите кеш DNS.
- Откройте новую вкладку и введите about:config в адресной строке Firefox.
- Найдите network.dnsCacheExpiration , временно установите значение 0 и нажмите OK. После этого верните значение по умолчанию и нажмите OK.
- Найдите network.dnsCacheEntries , временно установите значение 0 и нажмите OK. После этого верните значение по умолчанию и нажмите OK.
Выводы
Мы показали вам, как очистить или очистить кеш DNS в операционных системах Windows, Linux и macOS.
Пользователи Linux и macOS могут использовать команду dig для запроса и устранения проблем с DNS.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник