Windows Server DNS는 정말 좋은 도구(인것 같)다.

  1. GUI라서 쉽게 설정 .
    1. 적당히 설정하면 역방향 조회 영역도 만들어준다.
  2. 각 영역 일련번호가 중복되면 설정 도중에 알려줌.
    1. 잘못 알고 있었다. 각 영역 일련번호는 서로 상관 없기에 중복 되어도 문제 없는듯.

이에 반해 Linux Bind9은

  1. 있던 GUI 설정 도구도 없어짐(CentOS5에서 있던 system-config-named가 CentOS6에서 사라지고, 텍스트 설정 파일을 직접 수정하는걸 권장하고 있는 듯 함.)
  2. 시리얼이 중복 되어도 안 알려주고, 역방향 조회영역 자동으로 생성? 그런 게 있을 리가…
    1. 설정이 잘못되면 실행 시 잘못되었다고 알려줄 뿐.

그래도 여러 사정으로 인해 윈도 DNS를 Linux Bind9으로 옮기는 경우가 생긴다. 옮기는 방법에 대해 설명한다.

  1. 영역 파일 복사
  2. 설정(/etc/named.conf (CentOS6) 혹은 /etc/bind/named.conf (ubuntu13))에 각 영역에 대한 내용 추가

영역 파일 복사하기

%systemroot%\system32\dns 에서 (기본 값은 보통 c:\windows\system32\dns ) 영역 파일(확장자가 .dns로 되어 있는 파일들을 말함)을 복사한다. 리눅스에선 보통 .zone으로 저장하지만 상관없다. 텍스트 파일(plain text)임.

영역 파일이 한 두 개일 때는 그냥 편집 하면 되지만 회사 정도 되면 그냥 정규 표현식으로 수정하는 방법이 빠르고 편하다. 그 방법은 아래에서 설명한다.

영역(zone) 등록용 파일 만들기

zone(혹은 dns)파일들에 대한 내용을 named.conf 에 추가 해야 하는데, dns 파일을 리눅스 특정 디렉토리에 옮겨 놨다고 하고, 해당 디렉토리에서 아래 내용을 실행.

ls *dns | sed –e ‘s,\.dns,,g’ > ~/dnslist.txt ; perl -pi -e 's,(.*),zone "$1" {\n\ttype master;\n\tfile "data/$1.zone"; }\n\tallow-update { none; };\n\tallow-transfer { any; };\n};,g' ~/dnslist.txt

.dns 파일들 .zone으로 바꾸기(바꾼 다음에 /var/named/data 등에 옮기자.)

for i in *.dns;do mv $i ${i%dns}zone;done

위 내용은 ~/dnslist.txt 파일 안에 있는 domain.com 을 아래와 같이 만든다.

zone "domain.com" {
        type master;
        file "data/domain.com.zone"; }
        allow-update { none; };
        allow-transfer { any };

};

위 내용을 실행해서 생성된 ~/dnslist.txt를 /etc/named.conf 에 덧붙이던지 하면 된다. 정규표현식이 들어가긴 했지만 각 영역에 대한 설정을 적당히 넣어주면 됨.

slave로 하고 싶다면?

type slave;로 하고 master { “IP” };를 추가하면 됨. allow-update sllow-transfer는 삭제.

zone "domain.com" {
        type slave;
        file "data/domain.com.zone";

        masters { “192.168.0.1”; };
};

설정에 대한 설명을 하자면,

zone 설정의 file 옵션을 보면, file "data/domain.com.zone"; 와 같이 경로 data가 적혀있는데, 이 디렉토리가 어디에 위치해 있는지를 알 수 없다. 이건 /etc/named.conf의 options에서 directory 항목을 봐야 한다. 예를 들어 아래와 같이 되어 있는 경우

 

options {
        listen-on port 53 { any; };
        //listen-on-v6 port 53 { ::1; };
        directory       "/var/named";

        …하략…

이 경우 data는 /var/named/data 를 말한다. 이 아래 zone 파일을 놓으면 된다.

+ Recent posts