2021. 7. 28. 23:18ㆍServer
Linux의 DNS Server는 좀 복잡하다. 위임과 Zone 복사도 마찬가지다. 이번에도 하나의 예시 토폴로지에서 위임과 Zone 복사에 대해서 설명해보도록 하겠다. DNS 같은 경우 설정파일이 조금이라도 잘못되면 데몬이 돌아가질 않으니 오타, 띄워쓰기 하나도 조심히 잘 작성해야 한다.
우리는 WA2003으로 Windows OS를 사용중인 DNS Client라고 하자. 그리고 우리의 DNS Server는 LC5 168.126.63.1이다. nslookup 명령어를 통해 www.x.com과 www.y.com에 대한 응답을 받을 수 있도록 DNS Server을 구축해보겠다. 그 후, LD5가 com.Zone을 Primary로 삼아 모든 정보를 Zone 복사를 해보겠다. 복사가 완료된 것을 확인하기 위해 기존의 DNS 주소를 LD5로 바꿔 www.y.com 쿼리 질의를 해보겠다.
1. Root Hint
위임에 대한 개념은 DNS Server와 DNS Server - Windows 심화에서 다루었기 때문에 따로 다루지 않고 온전히 구축 절차에 대해서만 서술하겠다.
일단 우리는 맨처음에 www.x.com에게 핑 테스트를 실시하였을 때, 적절한 응답이 왔다고 가정해보자. 이 과정은 이미 앞의 글에서 다룬 기본적인 Linux의 DNS Server 구축방법이다. 미리 구축 후 핑 테스트를 해보겠다.
봤듯이 정, 역방향 영역이 잘 구현되어 있다. 이제 우리는 www.y.com을 알고 싶지만 우리의 DNS Server는 이 도메인에 대한 IP를 모르고 있다. 때문에 곧바로 Root Hint에게 질의할 것이다. 그리고 질의를 받은 .(Root) Zone인 LA5 8.8.8.8은 반복질의를 통해 com. Zone에게 질의하고, www.y.com에 대한 정보를 다시 반환하여 우리에게 들어올 것이다.
첫 번째로 우리가 설정할 것은 Root Hint이다. 일단 우리는 Root Hint 상세 설정파일 위치를 알아야 한다.
#vi /etc/named.rfc1912.zones
#vi /var/named/named.ca
*상세 파일 위치는 따로 설정하지 않는 이상 항상 /var/named/ 하위에 있다.
①번의 위치 '위'에 한줄을 복사하여 붙였다. 그리고 'C'를 'Z'로 고쳐주었다. 그 다음 ②번 위치로가 위의 A 레코드들 중 하나를 또 복붙한다. 제일 앞의 알파벳을 'Z'로 고쳐주고 뒤의 IP 주소를 .(Root) Zone의 주소를 기입해준다. 하지만 굳이 이런 복붙 과정이 귀찮다면 아무 알파벳이나 하나 확보하고 하위 레코드 리스트들 중 맞는 알파벳의 IP 주소만 자신의 원하는 .(Root) Zone IP로 바꿔주면 된다. 이걸로 Root Hint 세팅은 끝이다. 이로써 자신의 DNS에게 질의 후, 모른다는 답변을 받았을 때 최후의 방법인 Root Hint가 세팅되었다.
2. 위임
두 번째로, 우리의 DNS Server는 .(Root) Zone에게 질의했으니 .(Root) Zone을 생성해주고, com. Zone에게 반복질의 할수 있도록 위임하는 방법을 살펴보자. 간단하게 .(Root) Zone을 생성하겠다.
- Root Zone_LA5
우리는 Root Hint를 설정했고, .(Root) Zone까지 구축했다. 그럼 이제 .(Root) Zone에 com. Zone을 위임해보겠다. 위임은 지금 .(Root) Zone 상세 설정 파일에서 단순히 몇 줄만 더 추가해주면 된다.
네임서버와 A 레코드를 정확하게 기입해주면 된다. 원래 SOA 뒤에 오는 네임서버 도메인을 생략해도 로컬이다 보니 데몬이 알아서 알아먹지만 다른 PC에 있는 정보를 가져오기 때문에 생략없이 전체 다 기입해줘야 한다. 이를 적어주지 않으면 제대로 알아 오지 못하니까 참고하자. 이와 동일한 방법으로 com.zone도 설정해보겠다.
- com.Zone_LB5
*참고로 y.com의 네임서버는 Windows OS를 쓰는 wb2003이다. 때문에 네임서버가 다르다.
동일한 방법으로 위임까지 마쳤고, WA2003에서 한번 nslookup으로 확인해보도록 하자.
- 확인_WA2003
CMD창을 열어 nslookup을 통해 dns를 확인해보았다. 먼저 Root Hint가 정상적으로 작동되는지 확인해보았고, 정상적으로 작동되는 것을 확인하였다. 두번째로 com Zone으로 잘 위임이 되는지 확인하였다. 이제 최종적으로 www.y.com을 쿼리해보겠다.
www.x.com과 www.y.com까지 정상적으로 쿼리가 되는 것을 확인할 수 있다.
2. Zone
우선 Zone의 개념에 대해서 먼저 알아야 한다. Zone은 크게 3가지로 분류된다.
1) Primary Zone : 레코드의 읽고, 쓰기가 가능한 Zone. 레코드를 생성하거나 삭제, 수정이 가능하다
2) Secondary Zone : 레코드를 읽기만 가능한 Zone. Primary에서 모든 레코드를 복사해 온다. 이때, Serial 번호를 비교하는데, 만약 Primary Zone과 자신의 시리얼 번호가 다르다면 복사 후 맞게 고친다.
*Serial 번호 : 레코드 생성, 수정, 삭제가 이루어질때마다 1씩 증가하는 구분용 번호
3) Sub Zone : 레코드의 읽기만 가능한 Zone, 단, Primary나 Secondary Zone을 복사해오되 SOA, A, NS 레코드만을 복사해온다.
하지만 이 3가지 분류는 Windows에서만 해당하는 내용이고 Linux에서는 Stub Zone이라는 개념이 존재하지 않는다. Linux에서 Primary는 'Master', Secondary는 'Slave' 라고 불리우니까 참고하자. 물론 모든 레코드를 다 복사해오는 읽기 전용 파일이다!
현재 우리의 토폴로지는 이런 상황이다.
LD5에서 Serial 비교를 위해 요청을 하게 되고, 다르마면 Master DNS Server인 LB5가 레코드들을 복사해줄 것이다. 설정은 이렇다.
- Master DNS Server_LB5
① : master라고 명시되어 있는데, 이 부분은 추후 slave쪽으로 가면 바뀔 예정이다. 여기선 참고로 Primary Zone이기 때문에 master을 그대로 놔뒀다.
② : 기존에는 allow-update {}; 부분이 none으로 따로 설정이 없었다. 하지만 Slave가 되어줄 IP 주소를 기입함으로써 자신의 Slave Zone의 위치를 명시하게 된다.
만약 ②번 밑에 'nortify yes;'라고 작성하게 되면 복사 이후 알림을 달라는 명령어인데 이는 생략했다.
("사실 있으나 없으나 큰 차이없는것 같다.")
이제는 com.zone파일을 수정해 줘야 한다.
① : "1M : refresh"는 기본적으로 10800으로 되어 있을 것이다. 기본적으로 숫자만 작성하면 '초' 단위이기 때문에 참고하고 작성해야 한다. 이 명령어에 적힌 초 간격으로 slave가 master에게 복사본을 요구하며 serial을 보고 숫자가 다르다면 갱신, 같다면 아무것도 하지 않는다. 필자는 실습을 위해 1분으로 맞춰놓았고 실제로 1분으로 맞춰놓으면 트래픽이 너무 증가해 과부하가 걸릴수도 있으니 참고하자.
*'1M'자리에 60이라고만 써도 같은 효과를 발휘한다. 또한 1H라고 쓰면 1시간마다 갱신한다. 3600과 같은 효과
② : Slave Zone의 DNS를 기입해주는 것이다. 이렇게 적어주지 않으면 찾아가지 못하기 때문에 Slave에게도 도메인을 부여해주어야 한다.
*③ : 이 부분은 생략해도 상관없는 부분이다. Slave가 SOA, NS, A뿐만 아니라 다른것도 받아오는지 확인하기 위해 기입한 것이다.
- Slave DNS Server_LD5
당연하게도 이 부분을 수정해주어야 한다. 늘 하던대로 하면 된다. Slave가 중요한것은 rfc파일이다.
기존의 com.zone 파일을 선언할때와 같은 방식이지만 내용이 다르다.
① : 기본적으로는 master라고 되어 있지만 여기서는 slave로써 존재하기 때문에 slave라고 명시해야 한다.
② : 복사해온 파일을 저장할 위치이다. 앞의 slaves/를 붙여주지 않으면 / 밑에 저장되니까 참고하자.
*저장 경로 : /var/named/chroot/var/named/slaves <<위치를 잘 기억해 두자. 위치를 모르면 고통받는다.
③ : master 위치와 사용할 port 번호이다. DNS는 기본적으로 53번을 사용한다.
여기서 참고해야할 점은 세미콜론(;)을 잘 적어주어야 한다. 이제 저장 경로로 가서 파일을 확인해 보자.
아주 잘 받아진 모습이다. 참고로 Slave Server의 DNS Server는 공백이다. 좀 복잡하지만 위의 Master DNS Server의 com.zone 파일의 모든 레코드들이 받아와진 모습이다. 확인용 MX 레코드를 받아온 것을 보니 확실히 Secondary Zone임을 확인할 수 있다. 이제 이 파일들을 기반으로 DNS 쿼리가 가능한지 한번 확인해보자.
- 확인_WA2003
먼저 DNS 주소를 Slave DNS Server로 바꾸었다.
먼저 Root Hint에 관한 쿼리를 날렸지만 Slave DNS Server는 복사해온 com.zone 파일에 Root Hint에 대한 레코드도 없고, Root Hint 설정도 없기 때문에 찾지를 못한다. 하지만 www 레코드를 쓰는 com은 파일에 작성되어 있기 때문에 찾는 모습.
마지막으로 www.x.com의 쿼리가 성공적으로 끝나면서 Slave DNS Server 역시 역할을 할 수 있는것을 알 수 있다.
뭔가 CentOS 5라서 그런지, 가상화 기계라서 그런지 오류가 상당히 많다. 실수도 많았는데 VMware을 껐다 켤때마다 되던 쿼리가 안되는 경우가 있어서 상당히 고통받았다. 다음에는 높은 버젼으로 실습을 해보던지 해야겠다.
'Server' 카테고리의 다른 글
FTP Server - Windows 기본 (0) | 2021.07.30 |
---|---|
FTP(File Transfer Protocol) Server (0) | 2021.07.30 |
DNS Server - Linux 기본 (0) | 2021.07.26 |
DNS Server - Windows 심화 (0) | 2021.07.23 |
DNS Server - Windows 기본 (0) | 2021.07.23 |