달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 11. 17. 12:55

5-6. DNS 기타 기능 Windows Networking2008. 11. 17. 12:55


5-6-1. DNS Round Robin (라운드 로빈) 구현

 

당신의 회사가 쇼핑몰을 운영하고 있다고 가정을 하자. 당연히 회사에서는 웹서버가 적절한 성능을 제공해야만 할 것이다. 1대의 서버만 운영하다가 사용자들이 느린 성능문제로 불만이 많아짐에 따라 1대의 웹서버를 증설하고 동일한 컨텐츠로서 웹서버를 셋팅해 두었다. 그 다음에 해야 할 일은? 당연히 쇼핑몰을 찾는 클라이언트들이 두 대의 서버를 찾아올 수 있도록 구성을 해 주어야 할 것이고, 거기다가 가급적이면 골고루 찾아올 수 있게 해 줄 필요가 있을 것이다. 이때 가장 저렴하고 간단하게 구현할 수 있는 방법이 DNS서버의 Round robin 기능을 이용하는 것이다.

 

사실 DNS가 하는 일이 복잡한 기능은 아니다. 단지 누군가가 이름을 물어왔을 때 그 이름의 서버가 어디에 있는지를 가르쳐 주면 되니까. 하지만 그것이 네트워크에서 차지하는 비중은 엄청나다 할 것이다. 제아무리 웹서버가 안정적으로 구현되어 있다고 하더라도 DNS서버가 부실하면 사용자들이 그 웹서버까지 찾아갈 수가 없기 때문에 무용지물이 되고 마는 것이다. 웹서버 두대를 설치해 두었다면 클라이언트들은 그 웹서버를 찾기 위해 DNS쿼리를 하게 될 것이고 그때 DNS서버는 두개의 웹서버를 번갈아 찾아갈 수 있도록 해 주면 될 일이다. 이론상으로 이해하면 너무나 쉬운 기능이다. 구현하는 것도 역시 간단하다.


< 그림5-74. DNS Round robin 옵션>

 

그림은 DNS관리콘솔의 서버이름을 마우스 오른쪽 클릭하여 등록정보를 열었을때의 화면을 캡처한 것이다. ‘고급탭을 확인하면 위와 같은 화면을 볼 수 있다. 하이라이트된 부분을 보면 라운드 로빈 사용이라는 옵션이 보인다. 기본적으로 Windows2000 DNS서버는 이 옵션이 활성화되어 있다. 다음에 할일은 웹서버 두대에 대한 www 레코드를 생성해 주면 된다. 주의할 것은 www 라는 레코드는 CNAME 레코드로 만들어서는 안 된다는 것이다. www라는 동일한 이름의 A (Address)레코드를 두 개 만들어 준다. <그림5-75>에서는 secure.pe.kr 도메인에 www레코드가 두개 생성되어 있고 두개의 레코드는 각각 다른 IP Address가 설정된 것이 보인다. 웹서버 두대에 대한 레코드가 만들어진 것이다.

 


< 그림5-75. DNS Round robin 을 사용하는 레코드생성>

 

이렇게 간단히 DNS만으로 웹서버 두대를 효율적으로 운영할 수 있다는 장점이 있기는 하지만 이 DNS라운드 로빈을 이용하는 방법은 한가지 단점을 가지고 있다. 만일 하나의 웹서버가 다운이 되었다면 관리자는 다운된 서버의 IP에 해당하는 www 레코드를 DNS영역에서 삭제를 하게 될 것이다. 그렇게 해서 잘 동작하는 다른 웹서버로만 요청이 가도록 하기 위함인데, 그것이 마음같이 움직여주지는 않는다. DNS서버로부터 www레코드가 2개라는 사실을 응답받은 상대방의 DNS서버는 그 정보를 자신의 서버에 캐쉬한다. 캐쉬의 TTL이 만료될때까지는 새롭게 요청이 오는 것이 아니라 기존 DNS정보를 그대로 사용하기 때문에 현재는 동작하지 못하는 웹서버로 계속해서 클라이언트들의 요청이 올 수도 있다는 것을 의미한다. www 레코드의 TTL“0”으로 만들어 주면 문제는 줄어들지만, 몇몇 ISP DNS서버들이 캐쉬를 임의로 길게 설정하여 사용하는 경우가 있기 때문에 그 동안에는 현재 동작하지 못한 웹서버의 IP를 담고 있는DNS로부터 웹서버의 IP주소를 얻은 웹클라이언트들은 웹서버에 접근할 수 없게 된다.

 

이것은 어디까지나 문제가 되는 상황을 가정했을때의 상황이고 보통의 경우에는 큰 탈없이 운영할 수가 있다. 한번쯤 고려해 볼 만한 방법이다. 그러나 회사가 인터넷쇼핑몰 등을 운영하는 것으로서 수익을 얻고 있는 경우라면 이러한 방법을 써서는 불안하다. 웹서버가 몇시간 다운 되는 상황이 생기면 그것은 바로 회사의 금전적인 손해로 이어지기 때문에 심각한 문제가 될 수도 있기 때문이다. 이럴 경우는 NLBS (Network Load Balancing Service), L4스위치를 이용한 로드밸런싱을 구현하는 것이 올바른 방법이라 할 것이다.

 

5-6-2. DNS서버 보안의 기본



< 그림5-76. 영역전송 허용 안함>

 

여러분의 네트워크를 누군가가 공격할 준비를 하고 있다고 가정하자. 공격자는 어떤 작업을 먼저 해야 할까? 네트워크에 어떤 컴퓨터들이 있는지를 파악하는 것은 아주 기본적인 작업이 된다. DNS서버는 네트워크에 존재하는 컴퓨터들의 각각의 역할과 IP Address를 가지고 있어서 사내의 컴퓨터들의 역할을 짐작할 수 있게 해 주기 때문이다. DNS서버는 기본적으로 이러한 위험에 노출되어 있다. Nslookup을 통한 테스트결과를 설명과 함께 기록하였다.

 


C:\>nslookup

Default Server:  exchange.feelanet.com

Address:  192.168.0.232

 

> ls secure.pe.kr ( secure.pe.kr 도메인의 레코드들을 보여달라는 명령)

[exchange.feelanet.com]

*** Can't list domain secure.pe.kr: Non-existent domain  (정보를 보여주지 않는다.

> server 192.168.0.16 (nslookup 쿼리를 받아줄 Default Server Secure.pe.kr DNS서버의 IP로 전환하였다.)

Default Server:  [192.168.0.16]

Address:  192.168.0.16

 

> ls secure.pe.kr (다시 secure.pe.kr 도메인의 레코드를 요청하니 아래와 같이 전체 리스트를 보여준다.)

[[192.168.0.16]]

 secure.pe.kr.                  NS     server = blueapple

 blueapple                      A      192.168.0.16

 bluexp                         A      192.168.0.48

 jeju                           NS     server = ns.jeju.secure.pe.kr

 ns.jeju                        A      192.168.0.47

 www.shopping                   A      192.168.0.16

 www                            A      211.234.93.250

 

> ls secure.pe.kr (<그림5-76>과 같이 영역 전송 허용의 체크를 지우고 난 다음 다시 동일한 명령을 실행했다.)

[[192.168.0.16]]

*** Can't list domain secure.pe.kr: Query refused (먼저와는 달리 응답을 하지 않는 것을 알 수 있다.)

> 

 

 

영역전송허용의 기본값은 아무서버로로 되어 있다. 이것은 주DNS서버와 보조DNS서버간의 영역전송을 가능하게 만들어 주는데, 보조DNS서버가 없다면 아예 해제를 할 일이고 만일 보조DNS서버가 있다면 특별히 보조DNS서버의 IP Address를 기록하여 영역전송이 가능하도록 해 주어야 한다.

 

5-6-3. DNS서버의 백업파일로부터 복구

 

DNS서버를 관리할 때는 DNS관리메뉴를 통해서 GUI환경에서 관리되지만 이것은 실제로는 파일단위로 동작한다. %systemroot% (일반적으로는 winnt 폴더를 가리킨다.)아래의 system32\dns 폴더를 확인하면 DNS관리콘솔을 통해서 추가한 관리영역에 해당하는 DNS파일을 확인할 수 있다. 이 파일만 백업하여 유지하고 있다면 언제든지 관리자는 파일로부터 DNS영역을 복구하는 것이 가능하다.

 


< 그림5-77. DNS백업파일로부터 새로운 영역생성>

 

백업된 파일로부터 DNS영역 설치과정은 다음의 절차를 따른다.

 

1 단계, 백업받아둔 파일을 %systemroot%\system32\dns 폴더에 저장한다.

2단계, 영역추가과정은 일반적인 방법과 다를바가 없다. 다만, ‘영역파일선택화면에서 기본설정인 다음 이름으로 새 파일 만들기대신에 다음 기존 파일 사용옵션을 선택한다. <그림5-77참고>

 

5-6-4. DNS서버 캐쉬 삭제하기

 

DNS서버는 클라이언트의 DNS쿼리를 받은후 상대방 DNS서버로부터 레코드정보를 얻은후 로컬DNS캐쉬를 유지한다. 클라이언트로부터 동일한 레코드에 대한 요청이 들어올 때 캐쉬로부터 응답함으로써 효율성을 높이기 위함인데 가끔은 이런 캐쉬 때문에 말썽이 생길수도 있다. 계속해서 DNS서버가 오동작을 한다라고 생각이 되었다면 그때는 DNS서버의 캐쉬를 삭제해 줄 필요가 있다. DNS관리콘솔에서 서버이름을 클릭하고 마우스 오른쪽 버튼을 누르면 캐시 지우기를 이용할 수 있다.



< 그림5-78. DNS서버 캐쉬 삭제하기>

:
Posted by 새벽예찬