와일드 카드로 DNS를 검색 하시겠습니까?


8

같은 것을 nslookup하거나 dig검색하거나 뭔가 와일드 카드는 A ... 이름에 포함 된 것을 기반으로 검색 할 수있는 기능을 제공합니다?

헬프 데스크 팀을 위해 GUI 래퍼로 작은 스크립트를 만들려고합니다. 이상적으로는 사용자의 성 (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 서버의 인증 된 시스템에 대해이를 허용해야합니다.

완료되면 전송을 실행하고 결과를 grep 할 수 있습니다.

dig axfr localdomain.com | grep -i miller

내가 기대했던 것만 큼 쉽고 간단합니다. 감사합니다
TryTryAgain

grep -i대소 문자를 구분하지 않도록 포함 하도록 답변을 편집하고 싶습니다 . 그렇지 않으면 대소 문자가 너무 많은 문제를 일으킬 수 있음을 깨달았습니다. 그래도 약간의 편집은 할 수 없습니다. 내가 찾고있는 것과 같은 우아한 솔루션에 다시 한번 감사드립니다.
TryTryAgain

6

이름 서버는 의도적으로 영역을 검색하거나 권한있는 영역을 쿼리 할 수 ​​없습니다. 공격 경로를 줄이는 명백한 이유 외에도 (이름을 모르는 경우 호스트에 HTTP / 1.1 요청을 할 수 없음) 다음과 같은 이유가 있습니다. 영역에는 와일드 카드 자체가 포함될 수 있습니다. 이러한 영역의 모든 호스트는 0으로 나누는 것과 같습니다.

레코드를 검색하려는 이름 서버를 운영하는 경우 로컬 이름 서버로 영역 전송을 수행하고 레코드를 직접 검색 할 수 있습니다. 로컬 이름 서버는 다르게 응답하지 않기 때문에 전송 된 형식에 관계없이 텍스트 레코드를 구문 분석해야합니다.


6

특정 레코드가있는 DNS 서버에만 요청할 수 있습니다. 따라서 DNS에는 그러한 도구가 없습니다.

편집하다

사용 가능한 경우 영역 전송이 가능합니다.


내가 예상 한대로 당신이 틀렸다는 것이 보입니다.
TryTryAgain

3
@TryTryAgain 사실, 일반적인 경우에 그는 매우 정확합니다 : 당신이 받아 들인 답에 핵심 단어를 적어 두십시오 : need to allow this for authorized systems in your DNS server. 예를 들어, 당신은에 대한 영역 전송을 시도하는 경우 serverfault.com(또는 실제로 거의 모든 사용자가 제어하지 않거나하는 당신은 DNS 관리자와 계약을하지 않은 영역)이 더 결과를 얻을 수 없습니다.
voretaq7

4
@TryTryAgain 문구도 약간 무례하게 나옵니다. 당신이 소리를내는 것만 큼 대답이 분명하다면, 당신은 질문을 게시하지 않았을 것입니다. 우리는 모두 서로를 돕기 위해 여기 있습니다 ... 보통.
앤드류 B

1

체크 된 답변에 동의하면서, for-loop는 영역 전송 권한이없는 사람을위한 대안이 될 수 있다고 생각했습니다. 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 및 컴퓨터 이름을 가진 로컬 사용자에게 내 데스크탑을 열고 싶었 기 때문에이 답변을 찾았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.