특정 이름 서버에 대해 일괄 역방향 DNS 쿼리를 수행하고 싶습니다.
현재 여기와 구글에서 검색한 결과입니다. 1개의 항목에 대해 작동하도록 하려면 다음 명령을 사용했습니다.
dig @NAMESERVER -x 10.10.10.10 +short
이것이 바로 내가 원하는 것입니다. 하지만 여러 IP 주소에 대해 이 작업을 수행하면 실패합니다. 내가 한 일은 테스트를 위해 2개의 IP 주소를 나열하는 것이었습니다.
다음 명령을 사용하려고 합니다.
dig @NAMESERVER -x -f dnsquery.txt +short
아무런 결과도 나오지 않습니다. 제가 뭘 잘못하고 있는 걸까요?
입력 파일에는 2개의 라인이 있으며 각 라인에는 1개의 IP 주소가 있습니다.
10.10.10.10
10.10.10.11
답변1
thrig가 언급했듯이 loop 에서 호출할 수 있습니다 dig
.
예를 들어, 이 작은 bash 스크립트를 사용하여 다음이라는 파일에 저장할 수 있습니다 bulkreverse.sh
.
#!/bin/bash
filename='ip_in.txt' # name of file with IPs to handle
nameserver='8.8.8.8' # nameserver to query
for ip in `cat $filename`
do
echo 'Handling reverse DNS for $ip'
dig @$nameserver -x $ip +short
done
이 변수는 filename
IP 주소 목록(예: 한 줄에 하나의 IP 주소)이 포함된 파일 이름을 지정합니다. nameserver
쿼리할 네임서버입니다.
스크립트를 이라는 파일에 저장한 경우 bulkreverse.sh
다음을 실행하여 실행 가능하게 만들어야 합니다.
chmod +x bulkreverse.sh
나중에 실행할 수 있습니다
./bulkreverse.sh
이게 도움이 되길 바란다!
답변2
그 수가 많으면 GNU Parallel이 작업 속도를 높이는 데 도움이 될 수 있습니다.
nameserver=80.80.81.81
parallel -j100 --retries 3 dig @$nameserver -x {} +short :::: ip_in.txt
답변3
awk
다음을 사용하여 정방향 주소를 역방향 주소로 변환 할 수 있습니다.dig
awk -F. '{printf "%s.%s.%s.%s.in-addr.arpa\n",$4,$3,$2,$1}' dnsqueries.txt |
dig +short ptr @NAMESERVER -f -
답변4
원본 코드가 작동하지 않는 이유는 -x
파일에서 읽은 모든 데이터 줄에 코드가 포함되어야 하기 때문입니다. 이것은 매뉴얼 페이지에 문서화되어 있지만 개인적으로 더 명확할 수 있다고 생각합니다.
-f file
배치 모드:dig
지정된 파일에서 처리할 찾기 요청 목록을 읽습니다. 파일의 각 줄은dig
명령줄 인터페이스를 사용하여 쿼리로 표시되는 것과 동일한 방식으로 구성되어야 합니다.
마지막 문장은 통역사이며, 그 줄은 "쿼리로 마이닝되는 것과 동일한 방식으로 구성". 즉, 샘플 파일에는 다음이 포함되어야 합니다.
-x 10.10.10.10
-x 10.10.10.11
파일이 변경 불가능하다고 가정하면 이를 사용하여 sed
필요한 콘텐츠 앞에 추가한 -x
다음 결과를 다음으로 파이프할 수 있습니다 dig
.
sed 's/^/-x /' dnsquery.txt | dig +short -f -