-
DNS 서버 설치와 운영하는 방법 (3) - 마스터 네임 서버, 라운드 로빈리눅스 2024. 5. 3. 01:42
마스터 네임 서버(Master Nameserver)란 예를 들어 shadow.com과 같은 도메인에 속해있는 컴퓨터들의 이름을 관리하고, 외부에서 ftp.shadow.com, www.shadowcom, mail.shadow.com 등의 컴퓨터 ip를 원할때 ip 주소를 알려주는 네임서버를 말한다. 그래서 일반적으로 shadow.com 이라는 도메인으로 인터넷 서비스로 인터넷 서비스를 하려면 shadow.com 네임서버를 구축해 외부에서 www.shadow.com 이나 ftp.shadow.com 등으로 접속할 수 있게 해야 한다. shadow.com 마스터 네임 서버는 db에 하위 주소를 저장해놓고 자신이 응답한다.
이 실습을 하기 위해서 3개의 가상머신을 사용한다. 먼저 Server는 shadow.com의 네임서버와 웹서버를 담당할것이고, Server(B)는 shadow.com의 ftp 서버를 담당한다. 그리고 다른 한개의 클라이언트 컴퓨터에서 접속을 시도한다.
실습: Server에 shadow.com의 마스터 네임 서버를 설치하고 운영하자.
(이 실습에서 아파치 웹서버와 ftp 서버를 설치하는데, 이 포스팅은 네임서버에 초점을 맞췄으므로 자세한 내용은 후에 올리겠다. 지금은 테스트를 위해 설치한다고 생각하자)
Server 컴퓨터에서 웹 서버를 설치하고 설정하자.
apt -y install apache2 명령으로 웹 서버를 설치한다. apache2는 Apache Hypertext Transfer Protocol Server이다. 즉, 웹서버 프로그램이다.
그리고 systemctl restart apache2
systemctl enable apache2
systemctl status apache2 명령어를 실행해서 웹 서버의 작동/ 상시 가동/ 가동확인 작업를 진행한다.
이후에 ufw allow 80 명령으로 웹서버 포트인 80을 열어준다. 이렇게 하면 웹브라우저 주소창에서 localhost 또는 127.0.0.1 또는 Server컴퓨터의 IP 주소를 입력해주면 /var/www/html에 있는 index.html 파일이 로드된다.
index파일의 수정도 가능하다. 해당 파일을 지우고 동일한 이름을 가졌지만 간단한 html파일을 만들고 안에 <h1> Ubuntu 22.04 LTS. Web Server</h1> 를 삽입하고 저장한다.
이렇게 아주 간단한 웹 서버가 구축되었다.
이제 Server(B)컴퓨터에서 ftp 서버를 설치하고 설정하겠다.
해당 컴퓨터의 터미널에서 apt -y install vsftpd 명령으로 ftp 서버를 설치한다. vsftpd는 Very Secure File Transfer Protocol Daemon이다. 결국 ftp서버운영을 도와주는 데몬(백그라운드 프로그램)이다.
그리고 ufw allow 21 명령으로 ftp 서비스의 방화벽도 열어준다.
그리고 /srv/ftp/ 디렉터리로 이동한 후 welcome.msg 파일을 만들고 안에 아래의 문자열을 입력한다.
########################################
Welcome !!! Ubuntu 22.04. LTS FTP Server
########################################그리고 다음은 설정 파일을 변경한다. nano -c /etc/vsftpd.conf 명령으로 열어서 25행쯤에 'anonymous_enable=NO'를 YES로 바꿔준다. 이것은 외부에서 익명 사용자가 ftp 서버에 접속할 수 있도록 하는 설정이다. 그리고 바로 아래에 'banner_file=/srv/ftp/welcome.msg'를 추가하고 저장한다. 이 설정은 방금 만든 welcome.msg를 ftp서버에 접속했을때 환영 페이지로 보여주도록 하는 설정이다.
이제 설정이 다 끝났으니 systemctl restart vsftpd 명령으로 ftp서버를 재부팅한다.
이번에는 Server 컴퓨터에서 shadow.com 도메인에 대해 설정한다.
/etc/bind/named.conf 파일을 열어 가장 아래에 다음 내용을 추가한다.
zone "shadow.com" IN {
type master;
file "/etc/bind/shadow.com.db";
};이 파일은 네임 서버 서비스가 시작될 때 제일 먼저 읽는 파일이다. 설정 형식에서 중요한 부분은 아래와 같다.
zone "도메인 이름" IN {
type hint 또는 master 또는 slave; // 우리는 마스터 네임서버로 설정하기 때문에 master로 한것
file "/etc/bind/shadow.com.db"; // options의 directory에 생성될 '도메인이름'의 상세 설정파일
};이후에 named-checkconf 명령으로 입력한 내용의 문법을 확인한다. 아무 메시지도 출력되지 않으면 정상적으로 입력한 것이다.
다음으로 /etc/bind 경로에 "shadow.com.db"라는 파일을 만든다. 이 파일을 포워드 존 파일 또는 정방향 영역파일이라고 한다.
그 파일을 연 뒤에 다음의 내용을 삽입한다.
$TTL 3H @ IN SOA @ root. ( 2 1D 1H 1W 1H ) @ IN NS @ IN A 192.168.111.100 www IN A 192.168.111.100 ftp IN A 192.168.111.200
이 포워드 존 파일에 자주 쓰이는 문법을 요약하겠다.
1. ;(세미콜론): 주석
2. $TTL: Time To Live의 약자. www.shadow.com의 호스트 이름을 질의해갔을때, 질의해간 다른 네임서버의 캐시에 해당 ip주소를 저장하는 시간을 말한다. 3H는 3 hours이다.
3. @: /etc/bind/named.conf에 정의된 shadow.com을 의미한다. shadow.com으로 바꿔써도 동일한 동작을 한다.
4. IN: 클래스 이름으로 internet을 의미한다.
5. SOA: Start Of Aurhority의 약자로 권한의 시작을 의미. 괄호 안의 시간은 다음을 의미한다. (serial, refresh, retry, expire, minimum). 차례대로 serial은 버전 정보. refresh는 상위 네임 서버에 업데이트된 정보를 요청하는 간격. retry는 상위 네임 서버에 문제가 발생했을 때 재접속 간격. expire는 상위 네임 서버에 접속하지못할 경우 이전의 정보를 파기하는 간격. minimum은 이 시간 이후 정보가 삭제됨을 의미한다. H는 hour, D는 day, W는 week의 약자이다.
6. NS: Name Server의 약자로, 설정된 도메인의 네임서버 역할을 하는 컴퓨터를 지정한다.
7. MX: Mail Exchanger의 약자로, 메일 서버 컴퓨터를 지정한다. 여기서는 지정하지 않았다.
8. A: 호스트 이름에 상응하는 IP 주소를 지정한다.
9. CNAME: 호스트 이름에 별칭을 부여할 때 사용한다. 다음 포스팅에서 사용.
다 되었으면 systemctl restart bind9 또는 systemctl restart named 명령으로 네임 서비스를 재시작하고 확인한다. (둘 다 named.service로 동작을함)
ufw status 명령으로 53번포트와 80번 포트가 열려있는지 확인한다.
이제 Server(B)에서 ftp서버를 구축했고 Server에서 네임서버와 웹서버를 구축했다.
Client 컴퓨터로 마스터 네임 서버의 작동을 확인하자.
/etc/resolv.conf 파일에서 nameserver가 내가 만든 네임서버 ip로 되어 있는지 확인한다. 안되어있으면 바꾼다.
이후에 웹 브라우저에서 shadow.com을 접속한다. 이때까지 정상적으로 다 설정되었다면 아까 만든 index.html 홈페이지가 열릴 것이다.
ftp 서버도 확인해보자. 터미널에서 ftp ftp.shadow.com 명령으로 ftp 서버에 접속해보자. 접속하면 아까 만든 welcome.msg의 내용이 나오는 것을 알 수 있다. 사용자는 anonymous 암호는 아무거나 입력하면된다.
이렇게 마스터 네임 서버도 설치해보았다.
라운드 로빈 방식의 네임 서버란? 웹 서버의 부하를 나누기 위해 여러대의 웹 서버를 운영해서 웹 클라이언트가 서비스를 요청할 경우 교대로 서비스를 실행하도록 한다. 이런 방식을 라운드 로빈 방식이라고 부른다.
예를 들어 외부 사용자는 결국 shadow.com 네임 서버에 www.shadow.com의 ip주소를 요청하는데, 이때 www.shadow.com에 해당하는 웹 서버를 3대 운영한다고 가정하고 각각의 ip가 1.1.1.1, 1.1.1.2, 1.1.1.3 이라면 shadow.com 네임서버는 순서대로 1.1.1.1, 1.1.1.2, 1.1.1.3 을 차례로 알려주면 된다. 그러면 3대의 웹 서버에 부하가 공평하게 나뉜다.
nslookup 명령어로 www.naver.com를 알아보면 여러대의 웹서버를 운영한다는 것을 알 수 있다.
이 실습에서는 여러대의 웹서버를 설치해서 운영해야하기때문에, 차선책으로 이미 인터넷에 구현된 다른 웹사이트를 우리가 구현한 웹 서버라고 간주하고 실습을 진행한다. 그렇게 라운드 로빈 방식을 이해한다. 따라서 www.shadow.com 접속 시 a,b,c 3개의 웹사이트를 차례로 보여줄 것이다.
실습: Server를 라운드 로빈 방식의 네임 서버로 설정한다.
먼저 nslookup명령어로 www.danawa.com, www.nate.com, www.hanbit.co.kr 3개의 사이트의 ip 주소를 확인한다.
www.danawa.com Address: 119.205.208.11
www.nate.com Address: 120.50.131.112
www.hanbit.co.kr Address: 218.38.58.195
이렇게 나온 ip 주소를 www.shadow.com의 3대 웹 서버라고 가정한다.
/etc/bind/john.com.db 파일을 다음과 같이 수정한다. 기존에 있던 'www IN A 192.168.111.100' 행은 삭제했으며 'webserver.shadow.com.'의 맨 위에 '.'이 있다는 것을 주의한다.
$TTL 3H @ IN SOA @ root. ( 2 1D 1H 1W 1H ) @ IN NS @ IN A 192.168.111.100 ftp IN A 192.168.111.200 www IN CNAME webserver.shadow.com. webserver 100 IN A 119.205.208.11 200 IN A 120.50.131.112 300 IN A 218.38.58.195
CNAME은 Canonical Name의 의미로 기준이 되는 이름이며 CNAME 아래에 있는 3개 행이 기준에 해당한다. 그리고 100,200,300은 단순한 차례를 나타네는 것이므로 서로 다른 숫자면 아무것이나 관계 없다.
변경사항을 적용하기 위해서 systemctl restart named 명령을 실행한다.
그리고 nslookup으로 server를 192.168.111.100(내 네임서버 ip주소)으로 설정하고 www.shadow.com을 검색하면 ip주소 3개가 나오는 것을 알 수 있다.
그리고 cliet 컴퓨터로 로그인 후 www.shadow.com에 접속하면 3개의 웹사이트가 번갈아가면서 접속될 것이다. (이때 물론 client 컴퓨터의 네임서버는 192.168.111.100으로 설정되어 있어야한다. 안되어 있다면 /etc/resolv.conf 파일 수정하기)
물론 실제 상황에서는 모두 같은 사이트가 나와야 한다. 또한 앞으로 사용도리 네트워크 서버는 네임서버와 같이 사용되어야 가치가 있다. 예를 들어 웹서버를 구축했을때 웹클라이언트 사용자에게 ip 주소로 접속하라고 할 수 없기 때문이다. 그렇기 때문에 네임 서버의 설정(특지 정방향 영역 혹은 포워드 존)이 반드시 선행되어야 한다.
'리눅스' 카테고리의 다른 글
DNS 서버 설치와 운영하는 방법 (2) - 로컬 네임 서버 (0) 2024.05.02 DNS 서버 설치와 운영하는 방법 (1) - 기본개념 (0) 2024.05.01 OpenSSH 서버 사용하는 법 (1) 2024.04.30 telnet 사용하는 법 (0) 2024.04.30 vmware에서 호스트os와 게스트os간 복사 붙여넣기 설정 (0) 2024.04.24