데이데이


하드웨어 요구 사항

BIND는 메모리 잡아먹는 귀신이다. BIND의 데이터베이스는 메모리상에 있으므로 캐시양이 증가함에 따라 named 프로세스의 용량도 커진다. BIND 9의 일부 새로운 기능, 특히 DNSSEC 같은 기능은 CPU도 많이 사용한다. 이런 부담을 덜기 위해 BIND 9는 멀티스레드를 지원하며 멀티프로세서 시스템을 최대한 활용하게 설계됐다.

 

BIND 9에는 named의 자원 사용을 조절하는 설정 옵션도 있다. 네임 서버 장비에 충분한 메모리가 있는지 확인하기 위해 실제 실행하면서 named 프로세스 크기를 관찰한다. 새로운 캐시 레코드가 추가되는 속도와 오래된 캐시 레코드가 제거되는 속도가 수렴하는 데는 1, 2주 정도 걸린다.

 

평형 상태에 이르렀을 때 스왑을 사용하지 않아야 하며, 페이징 사용률이 합리적 범위 안에 있어야 한다. 네임 서버용 전용 장비를 사용한다면 named를 실행하고 일주일 지난 다음 named가 사용 중인 메모리양의 메모리를 두 배 정도 설치한 장비를 선택하는 방법이 바람직하다. top, vmstat 명령을 이용해 메모리 사용량을 확인할 수 있다.

 


버전 문자열은 서버에서 실행 중인 네임 서버 소프트웨어의 버전을 의미한다. 호스트명과 서버 ID 무자열은 서버 식별 정보를 제공한다. 이 두 옵션을 이용하면 실제값을 감출 수 있다. 호기심 많은 사용자들을 위한 이 정보는 CHAOS 계층의 TXT 레코드를 이용해 저장한다.

 

네임 서버 소프트웨어의 버전을 숨기는 문제에는 두 가지 의견이 있다. 한쪽은 해커가 사용하는 버전을 알 수 있게 해주면 서버가 공격에 더 취약해진다고 주장한다. 반면, 다른 쪽에서는 버전 정보를 감춘다고 해도 해커는 이를 신경 쓰지 않고 공격을 시도하며 보통 새로 발견되는 버그는 특정 버전에만 해당되는 버그가 아닌 경우가 많으므로 버전 정보를 감춰봐야 생산성만 떨어뜨릴 뿐이라고 주장한다.

 

버전 문자열은 거드리지 않는 편이 좋다. 네임 서버에 질의를 보내는 방식으로 네임서버의 버전을 알 수 있으면 편리한 경우가 많다. 예를 들어 장비 제조사가 최신 버전을 탑재했는지 확인하는 경우, 네임 서버가 모두 최신 버전으로 제대로 변경됐는지 확인하고자 하는경우다

 

루트 도메인이나 최상위 도메인의 경우 네임 서버를 여러 대 두고 애니케스트 라우팅을 사용하는 경우 각 서버 장비를 식별하기 위해 호스트명, 서버 ID 문자열이 추가됐다. 예를 들어 f.root-servers.net을 서비스하는 네임 서버가 20대 있는데, 이 네임 서버에 문제가 발견돼 사용자나 관리자가 확인 작업 중이라고 하자.

 

서버 20대 중 어느 서버가 문제가 되는 질의를 처리하는지 또는 처리하지 못하는지 확인하기 어렵다. 이럴 경우 CHAOS 클래스의 hostname.bind 항목에 대한 질의를 보내면 F 루트 서버 중 응답한 서버가 어느 서버인지 알아낼 수 있다.

 

모든 네임서버가 BIND를 사용하지는 않으므로, hostname.bind보다는 'server-id'가 정치적인 관점에서 더 정확한 이름이라 할 수 있다. named가 특정 존에 대한 마스터 서버 역할을 하고 있을 때 notify 옵션을 yes로 설정하면 named는 대응하는 존 데이터베이스에 변경 사항이 생길 때 자동으로 슬레이브 서버에 변경 알림을 보낸다. 슬레이브 서버는 마스터 서버에 접속한 다음에 존 데이터 사본을 갱신한다.

 

notify 옵션은 서버 전역 옵션으로 사용할 수도 있고, 존별로 사용할 수도 있다. 이 옵션을 이용하면 존 파일의 변경 사항을 좀 더 빠르게 반영할 수 있다.


이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band