DNS поиск с подстановочными знаками?


8

Что-нибудь вроде nslookupили digпредлагать возможность поиска на основе чего-то, содержащегося в имени ... как поиск по шаблону или что-то?

Я пытаюсь сделать небольшой скрипт с оболочкой графического интерфейса для нашей службы поддержки. В идеале я хотел бы, чтобы они могли искать фамилию пользователя (что всегда присутствует в записи DNS), а затем я заполнил раскрывающийся список с возможными вариантами выбора.

Я не могу найти способ эффективно иметь эквивалент nslookup *miller*... было бы здорово, чтобы потом вернуться

Name: sf-jacobmiller.localdomain.com
Address: 10.10.10.121

Name: sf-justinmiller.localdomain.com
Address: 10.10.10.144

... который я мог бы затем разобрать в раскрывающемся списке для них, чтобы выбрать из.

Я еще не изучил то, что доступно, с тем, ldapsearchчто может сделать то, что я ищу. Мое единственное требование - это то, что он встроен в OSX, и мне не нужно устанавливать ничего другого, в противном случае я открыт для любых решений, которые вы можете предложить. Спасибо

Ответы:


11

Вы можете получить полный список записей в зоне с передачей зоны; Вы должны разрешить это для авторизованных систем на вашем DNS-сервере.

Как только это будет сделано, вы можете запустить передачу и получить результат:

dig axfr localdomain.com | grep -i miller

Так легко и просто, как я мог надеяться. Спасибо
— TryTryAgain

Я хотел бы отредактировать ваш ответ grep -iтак, чтобы он учитывал регистр, иначе я понял, что регистр вызовет слишком много проблем. Я не могу сделать такое незначительное редактирование, хотя. Еще раз спасибо за такое элегантное решение, именно то, что я искал.
— TryTryAgain

6

Сервер имен по своей природе не позволяет вам искать зону или запрашивать, для каких зон он является авторитетным. Помимо очевидной причины уменьшения векторов атак (вы не можете сделать запрос HTTP / 1.1 к хосту, если вы не знаете его имени), есть очень веская причина для этого: зона может содержать символы подстановки, поэтому для каждого хоста в такой зоне все равно, что делить на ноль.

Если вы работаете с сервером имен, в записях которого вы хотите искать, вы можете перенести зону на локальный сервер имен и искать записи напрямую. Вам все равно нужно будет проанализировать текстовые записи в любом формате, в котором они переданы, поскольку локальный сервер имен не будет реагировать по-другому.


6

Вы можете только спросить DNS-сервер, если у него есть конкретная запись. Так что нет такого инструмента для DNS не будет.

редактировать

Zonetransfer, конечно, возможен, если он доступен.


Похоже, вы ошиблись, как я и ожидал.
— TryTryAgain

3
@TryTryAgain На самом деле, в общем случае он совершенно правильно: Обратите внимание на ключевые слова в ответ вы приняли: need to allow this for authorized systems in your DNS server. Например, если вы попытаетесь перенести зону serverfault.com(или даже практически в любую зону, которую вы не контролируете или для которой вы не договорились с администраторами DNS), вы не получите никаких результатов.
— voretaq7

4
@TryTryAgain Фраза также выглядит немного грубо. Если бы ответ был настолько очевиден, насколько это возможно, вам не пришлось бы публиковать вопрос. Мы все здесь, чтобы помогать друг другу ... обычно.
— Андрей Б

1

Согласившись с проверенным ответом, я подумал, что цикл for может стать альтернативой для того, кто не авторизован для передачи зоны. Если вы знаете диапазон IP:

name="mthebeau"
net="123.45.67."
for ip in $( seq 1 255 ); do {
    sleep 1; # be kind to the server, unauthorized user
    text="$( nslookup $net$ip 2>&1 | grep "$name" )";
    if [ -z "$text" ]; then continue; fi;
    echo "$text";
}; do

Я посмотрел этот ответ, потому что хотел открыть свой рабочий стол для локального пользователя, чей IP и имя машины я не знал.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.