Linux 에서 IPv6 DNS 조회 수행하기

CompTIABeginner
지금 연습하기

소개

이 실습에서는 Linux 시스템에서 IPv6 DNS 조회를 수행하고 검증하는 데 필요한 필수 기술을 배우게 됩니다. 현대 네트워킹에 매우 중요한 기능인 Linux 시스템이 도메인 이름을 IPv6 주소로 해석하는 방법을 탐구합니다. 이 실습 경험을 통해 표준 명령줄 유틸리티를 사용하여 IPv6 주소 레코드를 쿼리하고 네트워크 연결을 테스트하는 방법을 익힐 수 있습니다.

먼저 /etc/resolv.conf 파일을 검사하여 구성된 DNS 서버를 식별합니다. 다음으로, 도메인 이름을 IPv6 주소에 매핑하는 AAAA 레코드를 구체적으로 쿼리하기 위해 dignslookup이라는 두 가지 강력한 도구를 사용합니다. 마지막으로 ping6 명령을 사용하여 시스템이 대상과 IPv6 주소를 통해 직접 연결을 설정할 수 있는지 확인하여 해석 및 연결의 전체 과정을 완료합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 97%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

/etc/resolv.conf 에서 DNS 서버 구성 검사하기

이 단계에서는 Ubuntu 시스템의 DNS 서버 구성을 찾아서 검사합니다. 이는 모든 네트워크 통신, IPv6 를 포함한 도메인 이름을 IP 주소로 해석하는 방법을 이해하는 기초 단계입니다.

Linux 에서 DNS 해석을 위한 주요 구성 파일은 /etc/resolv.conf입니다. 이 파일은 시스템이 쿼리할 네임서버의 IP 주소를 나열합니다.

먼저 이 파일의 내용을 살펴보겠습니다. 이미 열려 있고 ~/project 디렉토리에 있는 터미널에서 다음 명령을 실행합니다.

cat /etc/resolv.conf

이 명령은 /etc/resolv.conf 파일을 읽고 터미널에 직접 내용을 표시합니다.

nameserver로 시작하는 하나 이상의 줄이 표시되어야 합니다. 이러한 항목은 DNS 서버를 정의합니다. 주소는 IPv4(예: 8.8.8.8) 또는 IPv6(예: 2001:4860:4860::8888) 일 수 있습니다. 이러한 서버를 식별하는 것은 DNS 관련 문제를 진단하는 첫 번째 단계입니다.

예시 출력:

## Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
##     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
## 127.0.0.53 is the systemd-resolved stub resolver.
## run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
options timeout:2 attempts:3 rotate single-request-reopen

위 예시에서 시스템은 127.0.0.53에 있는 systemd-resolved stub resolver 를 사용하도록 구성되어 있습니다. 이것은 시스템에 구성된 실제 DNS 서버로 요청을 전달하는 로컬 DNS 해석기입니다. systemd-resolve --status를 실행하여 사용 중인 실제 네임서버에 대한 자세한 내용을 볼 수 있습니다. 시스템이 IPv6 DNS 에 대해 구성되었다면 여기에 IPv6 형식의 주소가 표시될 것입니다.

이 단계를 완료함으로써 시스템이 이름 해석에 의존하는 DNS 서버를 찾는 방법을 알게 되었습니다. 다음 단계에서는 명령줄 도구를 사용하여 이러한 서버 중 하나에 IPv6 주소 레코드를 적극적으로 쿼리합니다.

dig 를 사용하여 IPv6 AAAA 레코드 조회하기

이 단계에서는 dig 명령줄 도구를 사용하여 DNS 서버에 특정 IPv6 주소 레코드를 쿼리합니다. A 레코드는 도메인 이름을 IPv4 주소에 매핑하는 반면, AAAA 레코드 (또는 "quad-A" 레코드) 는 도메인 이름을 IPv6 주소에 매핑합니다.

dig (domain information groper) 유틸리티는 DNS 서버를 질의하는 강력하고 유연한 도구입니다. dnsutils 패키지의 일부이며, 기본적으로 설치되지 않을 수 있습니다.

먼저 시스템에서 dig를 사용할 수 있는지 확인합니다. 다음 명령을 실행하여 패키지 목록을 업데이트하고 dnsutils를 설치합니다.

sudo apt-get update
sudo apt-get install -y dnsutils

이제 dig가 설치되었으므로 IPv6 지원이 가능한 것으로 알려진 도메인 (예: ipv6.google.com) 의 AAAA 레코드를 조회하는 데 사용할 수 있습니다.

터미널에서 다음 명령을 실행합니다.

dig AAAA ipv6.google.com

이 명령은 dig에게 ipv6.google.com 도메인에 대한 AAAA 유형의 레코드를 검색하도록 지시합니다.

출력을 살펴보겠습니다. 여러 섹션으로 나뉘지만, 우리에게 가장 중요한 것은 ANSWER SECTION입니다.

예시 출력:

; <<>> DiG 9.18.1-1ubuntu1.3-Ubuntu <<>> AAAA ipv6.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35612
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;ipv6.google.com.  IN AAAA

;; ANSWER SECTION:
ipv6.google.com.        10      IN      CNAME   ipv6.l.google.com.
ipv6.l.google.com.      10      IN      AAAA    2607:f8b0:4005:814::200e

;; Query time: 148 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jul 17 10:56:59 CST 2025
;; MSG SIZE  rcvd: 93

ANSWER SECTION에서 ipv6.google.com이 먼저 ipv6.l.google.com을 가리키는 CNAME 레코드로 확인되고, 이어서 IPv6 주소 (예: 2607:f8b0:4005:814::200e) 로 확인되는 것을 볼 수 있습니다. CNAME 및 AAAA 레코드가 모두 존재한다는 것은 ipv6.google.com에 IPv6 주소가 있으며 시스템이 이를 성공적으로 해석했음을 확인합니다.

이제 dig를 사용하여 특정 IPv6 DNS 조회를 성공적으로 수행했습니다. 다음 단계에서는 또 다른 일반적인 유틸리티인 nslookup을 사용하여 동일한 작업을 수행하는 방법을 배웁니다.

nslookup 을 사용하여 AAAA 레코드 조회하기

이 단계에서는 또 다른 일반적인 유틸리티인 nslookup을 사용하여 AAAA 레코드에 대한 쿼리를 수행하는 방법을 배웁니다. dig는 상세한 출력으로 인해 시스템 관리자가 선호하는 경우가 많지만, nslookup도 널리 사용 가능하며 빠른 조회를 위해 유용합니다.

nslookup (name server lookup) 도구도 이전 단계에서 설치한 dnsutils 패키지의 일부이므로 새로운 것을 설치할 필요는 없습니다.

nslookup에 특정 유형의 레코드를 요청하려면 -query= 옵션을 사용합니다. 이번에는 다른 IPv6 지원 도메인인 facebook.com을 사용하여 AAAA 레코드를 다시 조회할 것입니다.

터미널에서 다음 명령을 실행합니다.

nslookup -query=AAAA facebook.com

이 명령은 nslookup에게 기본 DNS 서버에서 facebook.com에 대한 AAAA 레코드를 구체적으로 요청하도록 지시합니다.

nslookup의 출력은 일반적으로 dig보다 간결합니다. "Non-authoritative answer" 섹션을 찾으십시오.

예시 출력:

Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   facebook.com
Address: 2a03:2880:f131:83:face:b00c:0:25de

출력은 "Non-authoritative answer" 섹션 아래에 facebook.com과 관련된 IPv6 주소를 명확하게 보여줍니다. "Non-authoritative"라는 용어는 단순히 해당 도메인의 최종 권한이 아닌 DNS 서버에서 응답이 왔다는 것을 의미하며, 이는 재귀적 DNS 쿼리에서 일반적입니다.

이제 두 가지 다른 도구인 dignslookup을 사용하여 도메인 이름을 IPv6 주소로 성공적으로 확인했습니다. 마지막 단계에서는 확인된 도메인 중 하나를 사용하여 실제 네트워크 연결을 테스트합니다.

ping6 로 IPv6 연결 테스트하기

이 마지막 단계에서는 DNS 확인과 네트워크 테스트를 결합하여 종단 간 IPv6 연결을 확인합니다. 이전 단계에서 도메인 이름을 해당 IPv6 주소로 성공적으로 확인한 후, 이제 시스템이 실제로 네트워크를 통해 해당 주소와 통신할 수 있는지 확인해야 합니다.

이를 위해 ping6 명령을 사용합니다. 이 유틸리티는 익숙한 ping 명령의 IPv6 버전이며, 대상 호스트에 ICMPv6 에코 요청 패킷을 보내 네트워크 도달 가능성을 테스트하는 데 사용됩니다.

ping6에 도메인 이름을 제공하면 두 가지 작업을 수행합니다.

  1. 먼저 AAAA 레코드를 쿼리하여 도메인 이름을 IPv6 주소로 확인합니다.
  2. 그런 다음 확인된 IPv6 주소로 ping 패킷을 보냅니다.

ipv6.google.com에 대한 연결을 테스트해 보겠습니다. -c 4 옵션을 사용하여 4 개의 패킷만 보내고 중지합니다. 그렇지 않으면 ping은 무기한 실행됩니다.

터미널에서 다음 명령을 실행합니다.

ping6 -c 4 ipv6.google.com

출력을 관찰합니다. 시스템에 인터넷에 대한 작동하는 IPv6 연결이 있다면 성공적인 응답을 볼 수 있습니다.

성공적인 출력 예시:

PING ipv6.google.com(prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e)) 56 data bytes
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=1 ttl=118 time=1.23 ms
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=2 ttl=118 time=1.30 ms
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=3 ttl=118 time=1.25 ms
64 bytes from prg03s07-in-x0e.1e100.net (2a00:1450:4001:82e::200e): icmp_seq=4 ttl=118 time=1.28 ms

--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.230/1.265/1.300/0.027 ms

대부분의 LabEx 환경에서 예상되는 출력:

ping6: connect: Network is unreachable

중요 참고 사항: LabEx VM 에서는 IPv6 주소로 ping 을 시도할 때 "Network is unreachable"이 표시될 가능성이 높습니다. 이는 실험실 환경이 IPv6 주소를 확인할 수는 있지만 공개 인터넷에 대한 IPv6 경로가 없기 때문입니다. "IPv6 gap"으로 알려진 이 일반적인 시나리오는 성공적인 DNS 확인과 실제 네트워크 연결 간의 중요한 차이를 보여줍니다. 이전 단계에서 DNS 확인은 작동했지만 여기서 연결이 실패한다는 사실은 실제 IPv6 연결을 설정할 수는 없더라도 시스템이 IPv6 주소를 올바르게 쿼리하고 받을 수 있음을 보여줍니다.

축하합니다! 이 실험실을 완료했습니다. 로컬 DNS 구성을 검사하는 방법, dignslookup을 사용하여 IPv6 AAAA 레코드를 쿼리하는 방법, ping6를 사용하여 IPv6 연결을 테스트하는 방법을 배웠습니다.

요약

이 실험실에서는 Linux 환경에서 IPv6 DNS 조회를 수행하는 기본 단계를 배웠습니다. 시스템이 사용하도록 구성된 DNS 서버를 식별하기 위해 /etc/resolv.conf 파일을 검사하는 것부터 시작했습니다. 그런 다음 두 가지 필수 명령줄 유틸리티인 dignslookup을 사용하여 IPv6 AAAA 레코드를 구체적으로 쿼리하고 도메인 이름을 해당 IPv6 주소로 성공적으로 확인하는 연습을 했습니다.

마지막으로 ping6 명령을 사용하여 IPv6 연결을 테스트했으며, 이는 DNS 확인과 실제 네트워크 연결 간의 중요한 차이점을 보여주었습니다. 실험실 환경은 IPv6 주소를 성공적으로 확인할 수 있지만 공개 인터넷에 대한 IPv6 라우팅이 부족하여 "Network is unreachable" 오류가 발생합니다. 이러한 단계를 완료함으로써 Linux 에서 IPv6 이름 확인을 관리하고 문제를 해결하는 핵심 도구 및 개념에 대한 실습 경험을 쌓았으며 성공적인 DNS 쿼리와 실제 네트워크 연결 간의 차이점을 이해하게 되었습니다.