Я работаю над инструментом сетевого анализа (академическое исследование), и мне хотелось бы узнать, какой DNS используется на машине, на которой работает программное обеспечение. Я не сетевой администратор, и мне интересно: как проще всего это выяснить; на разных платформах (то есть на каждом Linux, Mac и Windows) и предпочтительно с использованием чего-то, что доступно в Python?
Обычно кажется, что системы удобно скрывают это от пользователя - я могу установить фиксированный DNS, или я могу использовать настройки моего маршрутизатора через DHCP, или ... Я уверен, что есть и другие системы (LDAP?). Так что простой просмотр файла resolv.conf не всегда может привести к правильному ответу - или да?
Большое спасибо!
Если вы используете Linux, resolv.conf
действительно сокращает это. Но только для DNS. Другие методы определения хостов не связаны с DNS. Проверьте свою систему nsswitch.conf
Чтобы получить больше информации.
К вашему сведению, автоматическая настройка DHCP работает путем автоматического редактирования resolv.conf
.
Что касается OS X, я их недостаточно использую. Я считаю, что такие вещи хранятся в некоторых двоичных базах данных, которые заменяют локальные файлы, но на самом деле я не знаю.
Для Windows я считаю netsh interface ip show dns
делает что хотите. Windows также использует механизмы разрешения имен, отличные от DNS: сетевые широковещательные рассылки особенно раздражают.
Вероятно, это не та часть, но я все равно собираюсь укусить, так как она не была перемещена.
Этот код Python должен помочь вам узнать. Я не уверен, на какой операционной системе он был протестирован, поэтому вам, возможно, придется его настроить.
http://osdir.com/ml/python.tutor/2002-06/msg00473.html
Linux и OSX будут использовать resolv.conf
Windows сохранит его в реестре.