728x90
인터넷에 연결되어 있는 컴퓨터에 쉽게 접근하기 위해 우리는 DNS 를 사용합니다. DNS 는 사람이 이해할 수 있는 체계로 된 주소를 네트워크가 이해하기 좋은 주소로 바꿔주는 역할을 합니다. 예를들어 www.naver.com 을 DNS 를 통해 조회를 하게 되면 72.247.151.60 과 같은 네트워크 주소를 돌려주게 됩니다. 이 주소를 얻기까지 많은 과정이 있지만 일단 이 포스팅의 주제는 아니므로 넘어가도록 하겠습니다 ^^

 
위의 스크린 샷처럼 1개의 IP 주소가 리턴되는 경우에는 컴퓨터나 웹 브라우저는 고민할 것 없이 해당 IP 주소를 이용해서 자원에 접근하게 될 겁니다. 그런데 만약, 대규모의 사용자 요청을 처리하기 위해서 여러대의 서버와 IP 를 이용하는 경우에는 어떤 주소값을 사용해야 할까요? 가령 아래와 같은 결과가 리턴된다면 컴퓨터나 브라우저는 어떤 IP 주소를 택하게 될까요?

 
 DNS 조회 결과를 활용하는 방법에 대해서도 RFC 표준이 존재하고 있고 IPv6 의 도입등에 따라 표준도 지속적으로 개정이 되고 있습니다. 이 말은, 운영체제에 따라서 DNS 가 A 레코드를 여러개 리턴했을 경우 활용하는 방법이 달라진다는 것을 의미합니다. 가령 윈도우XP 의 경우 굉장히 오래된 운영체제로 리턴된 여러개의 A 레코드 중에서 가장 먼저 리턴된 값을 이용하게 됩니다.

반면 윈도우Vista 라던가 윈도우7과 같은 비교적 근래에 출시된 운영체제들은 개정된 RFC 표준에 맞추어 IP 주소를 선택하게 됩니다. RFC 3484 (http://www.ietf.org/rfc/rfc3484.txt, Default Address Selection for IPv6) 는 IPv6 환경에서 주소를 선택하는 방법에 대한 가이드이지만 많은 운영체제 개발사들은 IPv4 환경에서도 이런 룰을 적용하고 있어서 한 번 읽어볼 필요가 있습니다

 
영어로 가득한 내용이라 울렁울렁 하겠습니다만, 친절한 NoPD 의 요약에 따르면 "프리픽스 부분이 가장 긴 주소를 선택한다" 라고 합니다. 왜 이런 로직을 적용하게 되었는지는 RFC 문서를 직접 읽어보시고 공유해 주시면 감사하겠습니다 ;;; 여튼, 우리가 알아야 할 중요한 내용은 근래의 운영체제들은 이 로직을 대부분 따르고 있다는 사실입니다. 마이크로소프트 테크넷 블로그에 등록된 아래 글이 그 내용을 잘 요약해 주고 있습니다. 역시 친절한 NoPD 의 발췌본을 읽어보시겠습니다 (http://blogs.technet.com/b/networking/archive/2009/04/17/dns-round-robin-and-destination-ip-address-selection.aspx)

 
특정한 도메인에 대하여 5개의 A 레코드가 리턴됐다고 했을때, 사용자의 IP 주소와 비교하여 NetMask 를 몇 비트를 사용해야 하는가가 핵심입니다. 예제는 무척 간단한 상황을 가정해서 쉽게 계산이 됩니다만 실제 상황에서는 조금 더 복잡할 수 있겠죠? IP 주소를 하나 선택하는데 있어서도 영향을 주는 것들이 무척 많습니다. DNS 관련된 이슈를 트러블 슈팅 하실 때 이런 내용도 알고 계시면 도움이 많이 될 것 같아서 공유해 봅니다. 아래의 주소들을 방문해서 보다 자세한 내용을 확인해 보시기 바랍니다.

 
728x90

+ Recent posts