본문 바로가기

서버이야기

Linux에서 DNS 질의(Query) 동작 이해 (Ubuntu 기준) - Part 3

이번 포스팅에서는 Ubuntu에서 Netplan으로 설정한 DNS가 2차 이상으로 여러 개 일 때, 

DNS 질의가 실패 할 경우 어떻게 동작하는지에 대해서 테스트를 통해서 알아봅니다.


Netplan에서 적용하는 Yaml에 다음과 같이 nameserver 설정을 해두었습니다.

위에서 부터 차례로 1차 DNS, 2차 DNS로 순서가 정해집니다.

설정한 Yaml 파일을 netplan apply로 적용하고 나면, 

resolvectl status 명령으로 systemd-resolved에서 사용 할 DNS Server 정보가 갱신되는 것을 볼 수 있습니다. 

 

이제 도메인 질의(Query)하는 패킷을 tcpdump로 확인해 보면, 

1차 DNS로 설정된 8.8.8.8로 도메인 질의를 하고 응답 받는 것을 볼 수 있습니다.

 

그러다가, 1차 DNS에 질의를 하고 답변을 못하게 되면, 

2차 DNS로 질의를 던져서 응답을 받게 됩니다.

 

resolvectl status 명령으로 확인하면 

아래와 같이 DNS Servers 목록은 동일하게 있지만, 

Current DNS Server가 2차 DNS인 1.1.1.1로 변경된 것을 볼 수 있습니다.

마치 1차 DNS가 실패하면 2차 DNS로 절체되는 것처럼 동작합니다.

 

물론 2차 DNS도 통신이 안되는 경우에는, 

DNS Servers의 다음 3차 DNS Server로 전달됩니다. 

참고로, 168.63.129.16은  Azure 사용 시 기본 값으로 설정되는 DNS 서버입니다. (Test 환경 : Azure VM) 

 

resolvectl status 명령으로 확인하면 

마찬가지로 DNS Servers 목록은 동일하게 있지만, 

Current DNS Server가 3차 DNS인 168.63.129.16으로 변경된 것을 볼 수 있습니다.

 

만약, 그럼 설정된 DNS Servers의 마지막도 질의가 안된다면?

다시 1차 DNS로 질의를 하게 됩니다.

tcpdump로 확인해보면, 아래와 같이 3차 DNS로 절체된 이후에 

3차 DNS가 응답을 하지 못하면,

다시 1차 DNS인 8.8.8.8로 질의 하는 것을 볼 수 있습니다.

 

resolvectl status 명령으로 확인하면

다시, 1차 DNS인 8.8.8.8이 Current DNS Server가 됩니다.