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, и мне не нужно устанавливать ничего другого, в противном случае я открыт для любых решений, которые вы можете предложить. Спасибо

TryTryAgain
источник

Ответы:

11

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

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

dig axfr localdomain.com | grep -i miller
Шейн Мэдден
источник
Так легко и просто, как я мог надеяться. Спасибо
TryTryAgain
Я хотел бы отредактировать ваш ответ grep -iтак, чтобы он учитывал регистр, иначе я понял, что регистр вызовет слишком много проблем. Я не могу сделать такое незначительное редактирование, хотя. Еще раз спасибо за такое элегантное решение, именно то, что я искал.
TryTryAgain
6

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

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

dartonw
источник
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 и имя машины я не знал.

user456228
источник