몰?.루();

루트 DNS 서버는 몇 대일까 본문

컴퓨터 관련 정보

루트 DNS 서버는 몇 대일까

toonraon 2024. 2. 13. 23:44

루트 DNS 서버는 전 세계에 몇 대 있을까?

개발자 면접 단골 질문 중에 '브라우저 주소창에 www.google.com을 검색하면 일어나는 일을 말씀해주세요'가 있습니다.

 

제가 입사할 때도 들었던 질문이었습니다. 평범한 면접과 압박 면접 사이...의 분위기였기에 긴장했어서 잘 기억은 안 나지만, 윈도우 host 파일/ISP DNS/루트 DNS/캐시 등의 단어를 이용해서 설명을 했었습니다.

그 답변에 대한 꼬리 질문 중에 하나가 '그럼 루트 DNS는 딱 1개 존재하는 것인가?' 였습니다.

 

루트 DNS에 대한 DDos 테러 사건에 대한 기사를 봤던 기억을 떠올리며, '전세계에 13대 존재한다'고 말했었습니다.

 

그러다가 최근 우연한 계기로 해당 내용과 관련된 자료를 찾아보다가 그 당시 답변이 틀렸다는 사실을 깨달았습니다.

 

정답은 '논리적 개수는 13대이지만, 물리적 개수는 1700여 대이다' 였습니다.

왜냐하면 13개의 IP주소를 수백 대가 나눠서 공유하는 구조이기 때문이었죠.

 

어떻게 13개의 IP주소를 수백 대의 기기가 공유할까?

분명 IP주소는 1대1 매칭이 되어야합니다. 사설 IP면 모를까 DNS 서버 IP는 무조건 공인 IP이므로 하나의 IP를 여러 대의 기기가 갖고 있는 것은 유니캐스트 방식에서는 불가능합니다.

하지만 애니캐스트지오캐스트 방식 등에서는 가능합니다.

이 방식에서는 동일 IP를 가진 기기가 여러 대 존재하더라도, 그 중 아무 거나 한 대 혹은 거리 상 가까운 한 대와 통신하기 때문입니다.

즉, 워싱턴에서 198.41.0.4(루트 DNS IP 중 1개)에 통신을 시도할 때 연결되는 기기와, 서울에서 198.41.0.4에 통신을 시도할 때 연결되는 기기는 서로 다릅니다.

 

사실 13대라면 매우 악랄한 목적을 가진 13명을 모아서 해당 장소에 폭탄만 던져도 전세계 루트 DNS를 마비시키고, 인터넷 세상에 혼란을 가져올 수 있습니다. (물론 그 13대 중에 1대는 미군 기지에 있기 때문에 그 DNS 담당인 사람은 많은 노오력^^을 해야겠죠.)

 

13대만으로 전세계 인터넷을 마비시킬 수 있다는 점은 꽤나 위험하게 보입니다. 그렇기에 지금 현실도 그렇듯, 훨씬 많은 루트 DNS 서버가 준비되어있는 것이죠. 이제 테러범은 뜻이 맞는 13명이 아니라, 현재 시간(24.2.13) 기준 1732명을 모집해야합니다. 루트 DNS 서버가 지금 1732대 거든요.

 

근데 왜 IP주소를 각각 1732개 할당 받지 않고 13개 뿐이지?

처음에야 루트 DNS 서버가 13대 뿐이었으니 그 땐 IP주소도 13개만 있으면 된다치지만

왜 1732대로 늘어난 이 상황에도 여전히 IP주소가 13개뿐이고 굳이 IP를 일대다 대응으로 공유하고 있을까요?

 

현재 루트 DNS 서버 IP 목록

보다시피 IPv4 주소를 가지고 있고, IPv4는 32바이트가 필요합니다.

서버가 총 13대가 있기 때문에 이 서버 13대에 대한 IP를 보내려면 최소한 32바이트 * 13대 = 416바이트가 필요합니다.

그런데 초기 UDP 통신의 경우 512바이트 제한이 있었습니다. 아까 416바이트를 쓰고 나면 고작 96바이트 밖에 여유공간이 없죠. 이 96바이트에는 프로토콜 정보를 담아야하기 때문에 한 패킷에 13개의 IP까지 밖에 쓸 수 없었던 것이죠.

 

그렇기에 루트 DNS 서버가 증설되어도 어떻게든 13개 IP 개수 제한에 맞추기 위해 현재와 같은 방식을 채택하게 된 것입니다. 물론 현재는 아마 512바이트보다 훨씬 큰 패킷도 전송할 수 있는 걸로 알지만, 루트 DNS가 전 세계에서 이미 예전부터 써오고 있기 때문에 관련 라우터나 장비들을 업그레이드 시킬 순 없기에 1732대의 루트 DNS 서버가 생긴 현재에도 예전의 관행대로 계속해서 13대의 IP를 나눠서 갖고 있는 것입니다.

Comments