Какой командой посмотреть настройки DNS?
Всегда удивляло, что в галимой венде это делается одной командой ipconfig, которые выдает все- IP, шлюз, маску, DNS в Линуксе ее аналог ifconfig о DNS не сообщает ничего, как будто его нет (и про шлюз тоже) Как же это делается, есть ли такая команда?
Раньше обходился просмотром конфига /etc/resolv.conf
Но он показывает заданное значение, а интересно было бы узнать реальное значение DNS, которое, например, из-за сбоев, мало ли, может отличаться от заданного?
Так есть такая команда или нет?
Кстати, ее и смотрел, но не понял, как ей сказать, чтобы она показала dns настройки?
что такое dns настройки ?
Список серверов в /etc/resolv.conf ?
Вы сами то понимаете что вам нужно?
Но он показывает заданное значение, а интересно было бы узнать реальное значение DNS, которое, например, из-за сбоев, мало ли, может отличаться от заданного?
Каких еще сбоев? Там и указан адрес днс сервера, которым пользуеются все программы.
Так программы читают содержимое resolv.conf. В некоторых случаях (например, в некоторых вариантах настройки network-manager) он прописывает в resolv.conf localhost и одновременно поднимает dns-сервер dnsmasq, который уже сам настраивает.
Так программы читают содержимое resolv.conf.
В этом и проблема — хотелось, чтобы они не попугайничали, а определяли то, чем реально пользуется в работе, скажем, тот же bind.
— показал совершенно не то, что прописано в моем resolv.conf
ну так пропишите свой сервер в ресолв.конф. А уж в своем сервере укажите те сервера, которые вам нужны.
Всегда удивляло, что в галимой венде это делается одной командой ipconfig, которые выдает все- IP, шлюз, маску, DNS в Линуксе ее аналог ifconfig о DNS не сообщает ничего, как будто его нет (и про шлюз тоже)
Так философия разная. Одна задача — одна программа, но выполняющая ее хорошо.
Настройки интерфейсов? ifconfig
Таблица маршрутизации? route
Настрокий DNS? Так они прописываются в /etc/resolv.conf, там и смотри.
На самом деле ifconfig и route считаются устаревшими и рекомендуется использовать утилиту ip.
в галимой венде это делается одной командой ipconfig
это ты просто венду плохо знаешь, начиная с утилиты route и далее
Источник
Kolesnikow.PW
Блог Светозара Колесникова
Menu and widgets
Рубрики
Поиск
Популярное
Облачное хранилище данных
Как установить maldet на свой VPS сервер
Как сэкономить на продвижении сайта?
Услуга профессионального хостинга
Краш тест смартфонов из Airsoft пневматики
Свежие записи
Как найти IP-адрес моего DNS-сервера в Linux?
DNS (система доменных имен) является фундаментальной сетевой технологией благодаря которой работают различные почтовые серверы, обычные веб сайты и потоковые сервисы, например Netflix и Spotify.
DNS сервер работает на специальном компьютере, называемом DNS-сервером, который хранит в базе данных запись нескольких общедоступных IP-адресов вместе с соответствующими именами хостов, чтобы переводить имена хостов в IP-адреса по запросу пользователя.
Это происходит для того, чтобы нам не пришлось запоминать IP-адреса различных веб-сайтов, которые мы посещаем. Мы не запоминаем все IP адреса поисковой системы yandex.ru, или новостного сайта russian.rt.com. Мы вводим имя (хост), а DNS делает всю работу за нас.
Схема работы DNS cервера:
Хотя есть несколько вещей, которые мы можем обсудить про работу DNS, сегодня мы сосредоточимся на том, как узнать свой собственный IP-адрес DNS-сервера.
Есть несколько способов узнать это в зависимости от операционной системы, которую вы используете, но Linux, BSD и Unix-подобные системы используют одни и те же методы, поэтому давайте начнем с них.
Как найти IP-адрес моего DNS-сервера?
1. Чтобы узнать IP-адрес вашего DNS-сервера, используйте следующую команду cat или less.
2. Другой способ — использовать следующую команду grep.
nameserver 10.0.3.24 — это IP-адрес сервера DNS в нашей локальной сети. (если мы говорим об офисах, то часто внутренние ресурсы компаний «не смотрят в сеть». )
nameserver 8.8.8.8 и nameserver 8.8.4.4 — это IP-адреса DNS cерверов google.
Как найти IP-адрес DNS-сервера моего сайта?
3. Чтобы узнать IP-адрес DNS-сервера веб-сайта, вы можете использовать следующую команду dig.
В данном случае у нас 2 адреса DNS сервера. Что бы привести его в привычный вид (IP адрес), можно воспользоваться командой host.
Источник
Настройка 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 вычищается простым перезапуском
Источник