Infra & Security Eng/Project Implementation
캐시 서버를 활용한 DNS 상위-하위 도메인 위임 및 멀티 도메인 구축 실습
엔지니어 E
2026. 1. 30. 17:36
반응형


| 실습하기 191.: . 도메인 192: sec. 도메인 itc. 도메인 추가 ---> 2개 도메인 193: ast.sec. 도메인 ast.itc. ----> 2개 도메인으로 194: cache 도메인 ast.sec. 먼저 만들고 sec. 만들고 . 루트 서버 만들고, cache 서버 만들어야 한다 * 방화벽 명령어 작업을 반드시 해야 한다 1. 리눅스 서버(nat-11번대) 4대 만든다 (클론으로 진행, 반드시 물리적 주소를 먼저 바꿔야 한다) 2. 리눅스에서 각 컴퓨터 ip 주소 부여하고 (191,192,193,194) 호스트명 반드시 바꿔야 한다 * 명령어 테스트는 캐쉬 서버에 하고 성공하면 다 성공한것임 |



* 클론 만들때 device 체크 , iso 파일 없어야 한다 그리고 나서 물리적 주소 바꾸고(nat 세팅창에서 connect at powr on 체크 되어 있어야함) - 리눅스 안에 설정에서 ip 주소 세팅 한다
1. 캐시 서버 먼저 만들기 (-> 뭔가 추가하는게 없고, 삭제만 하면 되는 서버)
| 1. # dnf list bind bind-utils, # dnf install -y bind bind-utils 둘다 설치 2. # vi /etc/named.conf 에서 아래 내용만 추가할 것 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ options { directory "/var/named"; }; zone "." { type hint; file "named.ca"; ---> 루트 네임 서버의 IP 주소가 들어있음 (루트 네임 서버 찾아야할 때 이 파일을 찾는다) }; ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 3. # systemctl start named 로 서버 구동 4. # nslookup www.google.com 192.168.11.194 한테 물어보면 됨 5. 캐시서버 자신의 IP 주소를 local 주소로 쓰라고 해서 # vi /etc/resolv.conf 들어가서 nameserver를 기존 것 말고 127.0.0.1(나 자신을 가르킴) 혹은 192.168.11.194 로 입력 하고 저장 6. # systemctl restart named.service 로 서버 구동 7. # nslookup www.google.com 127.0.0.1 (혹은 192.168.11.194) - 나 자신에게 외부 도메인 주소를 물어봐서 확인 하면 됨 |
2. 그 다음 193번 서버 (ast.sec.) ->
| 1. # hostnamectl set-hostname linux193 - 바꾸는 이유는 리눅스 작업 시 서버 4대면 이름이 헷갈리므로 2. # dnf lisf bind bind-utils, # dnf install -y bind bind-utils 둘 다 설치 해야함 (* 자동적으로 named 파일이 설치됨) * cd /var/named - ls 로 확인 하기 3. # touch /var/named/ast.sec.으로파일을 만든다 4. # chgrp -R named /var/named/ast.sec.- named 그룹에 권한을 부여 한다 * ls -al 로 파일 생성, 권한 부여 잘 됐는지 확인 하기 5. # vi /var/named/ast.sec.파일에서 내용 추가하기 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ $TTL 1D @ IN SOA ns.ast.sec. root.ns.ast.sec. ( 1 ; Serial 1D ; Refresh 1H ; Retry 1W ; Expire 3H ) ; Minimum IN NS ns.ast.sec. @ IN A 192.168.11.193 ns IN A 192.168.11.193 ---> ns 라는 이름을 위에 썼으므로 반드시 써줘야 함, 이 항목들은 몇개를 써줘도 상관이 없음 www IN A 192.168.11.193 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 6. # vi /etc/named.conf 파일에서 ast.sec. 에 해당하는 존 파일을 생성 한다 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ options { directory "/var/named"; }; zone "." { type hint; file "named.ca"; }; zone "ast.sec."{ type master; file "ast.sec."; }; ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ # nslookup ast.sec. 192.168.11.193 로 명령어로 확인하면 된다 |
| 참고사항 캐시 서버는 도메인을 관리하지 않기 때문에 존파일을 만들지 않는다. 존 파일 대신 named.ca 라는 파일을 가지는데 이 파일은 모든 찾기 서비스의 시작점인 루트 서버(.)의 주소는 이거다 라고 적어놓은 힌트 파일이다. 사용자가 질문을 하면 이 캐시 서버는 named.ca를 보고 루트 서버로 달려가서 질의를 한다 |
3. 192번 서버(sec.) * 이 서버는 193번 서버의 하위도메인(ast19.sec.) 를 서브 도메인으로 추가 해야 함 - 상위 서버 아래 하위 서버는 항상 도메인 위임을 한다고 생각하면 됨
| 1. # hostnamectl set-hostname linux192 2. # dnf lisf bind bind-utils, # dnf install -y bind bind-utils 둘다 설치 3. # touch /var/named/sec.에 파일 생성 / # chgrp -R named /var/named/sec. 에 권한을 부여함 4. # vi /etc/named.conf 파일 에서 내용 추가하기 5. # vi/var/named/sec.파일 에서 내용 추가하기 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ $TTL 1D @ IN SOA ns.sec. root.sec. ( 1 ; Serial 1D ; Refresh 1H ; Retry 1W ; Expire 3H ) ; Minimum IN NS ns.sec. @ IN A 192.168.11.192 ns IN A 192.168.11.192 www IN A 192.168.11.192 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 6. 명령어로 구동 하기 7. # nslookup ast.sec. 192.168.11.192 해보기 |
루트 네임 서버 (191번 서버)
| 1. 2개 파일 다운로드 ,호스트명 정하기 2. root.zone 파일을 만든다 # touch /var/named/root.zone * 읽기전용 파일이라 권한설정 안해도 됨 2. # vi /etc/named.conf 파일에 아래내용을 넣는다 options { directory "/var/named"; }; zone "." { type master; file "root.zone"; }; 2. # vi /var/named/root.zone 에서 내용 넣기 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ $TTL 1D @ IN SOA ns. root.ns. ( 1 ; Serial 1D ; Refresh 1H ; Retry 1W ; Expire 3H ) ; Minimum IN NS ns. @ IN A ns. ns IN A 192.168.11.191 www IN A 192.168.11.191 sec. IN A ns.sec. ns.sec IN A 192.168.11.192 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ * 그리고 나서 밑에 itc 도메인도 추가 하면 된다 (ns.sec 밑에) 3. # systemctl start named 4. # nslookup ns.sec 192.168.11.191 자기 한테 물어봐 5. 근데 문제는 여기 하위에 있는 각 서버들의 #vi/ var/named/named.ca 파일을 바꿔야한다 작업의 목적: 인터넷 표준 루트 서버 목록을 삭제하고, 191번을 최상위(Root)로 인식시켜 우리만의 닫힌 DNS 체계를 가동하기 위함이다 * 결과: 이 설정이 없으면 하위 서버들은 191번이 루트 서버인 줄 모르기 때문에 사설 도메인(ast.sec)을 절대 찾을 수 없다 192번 에서 # vi/ var/named/named.ca 두줄 남기고 내용 다 삭제 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 193번 에서 # vi/ var/named/named.ca 두줄 남기고 내용 다 삭제 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 192.168.11.191 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 194번 에서(캐쉬 서버) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 192.168.11.191 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 루트 서버(191번)에 설정하는 이유 * 역할: 전체 시스템의 뿌리이다 * 이유: 자신이 "루트"라는 것을 선언해야 한다. 모든 도메인 탐색은 여기서부터 시작된다. 191번이 .sec 서버(192번)가 어디 있는지 모르면 하위 도메인을 찾을 수 없다 캐시 서버(194번)에 설정하는 이유 * 역할: 사용자의 질문을 대신 받아 발로 뛰는 대행자이다 * 이유: 캐시 서버는 처음에 아무 정보가 없다. 도메인 주소를 찾으려면 **"어느 문을 먼저 두드려야 하는지(시작점)"**를 알아야 한다 * 194번의 named.ca에 191번 주소를 넣는 것은 **"모르는 게 생기면 무조건 191번(우리 루트)한테 가서 물어봐"**라고 시작 지점을 지정해 주는 것 6. # systemctl restart named로 서버 구동하기 7. 캐시 서버에서 # nslookup ns.ast.sec 192.168.11.194 --- 자신한테 물어보고 성공하면 됨 |
그 다음 작업은 192에 itc. 서버를 추가 하고 193번 서버에 ast.itc 서버를 추가한다 ---> 멀티 도메인 작업인데 실무에 중요함
| 1. 2개 파일 다운로드 ,호스트명 정하기 2. root.zone 파일을 만든다 # touch /var/named/root.zone * 읽기전용 파일이라 권한설정 안해도 됨 2. # vi /etc/named.conf 파일에 아래내용을 넣는다 options { directory "/var/named"; }; zone "." { type master; file "root.zone"; }; 2. # vi /var/named/root.zone 에서 내용 넣기 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ $TTL 1D @ IN SOA ns. root.ns. ( 1 ; Serial 1D ; Refresh 1H ; Retry 1W ; Expire 3H ) ; Minimum IN NS ns. @ IN A ns. ns IN A 192.168.11.191 www IN A 192.168.11.191 sec. IN A ns.sec. ns.sec IN A 192.168.11.192 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ * 그리고 나서 밑에 itc 도메인도 추가 하면 된다 (ns.sec 밑에) 3. # systemctl start named 4. # nslookup ns.sec 192.168.11.191 자기 한테 물어봐 5. 근데 문제는 여기 하위에 있는 각 서버들의 #vi/ var/named/named.ca 파일을 바꿔야한다 작업의 목적: 인터넷 표준 루트 서버 목록을 삭제하고, 191번을 최상위(Root)로 인식시켜 우리만의 닫힌 DNS 체계를 가동하기 위함이다 * 결과: 이 설정이 없으면 하위 서버들은 191번이 루트 서버인 줄 모르기 때문에 사설 도메인(ast.sec)을 절대 찾을 수 없다 192번 에서 # vi/ var/named/named.ca 두줄 남기고 내용 다 삭제 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 193번 에서 # vi/ var/named/named.ca 두줄 남기고 내용 다 삭제 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 192.168.11.191 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 194번 에서(캐쉬 서버) ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 192.168.11.191 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 루트 서버(191번)에 설정하는 이유 * 역할: 전체 시스템의 뿌리이다 * 이유: 자신이 "루트"라는 것을 선언해야 한다. 모든 도메인 탐색은 여기서부터 시작된다. 191번이 .sec 서버(192번)가 어디 있는지 모르면 하위 도메인을 찾을 수 없다 캐시 서버(194번)에 설정하는 이유 * 역할: 사용자의 질문을 대신 받아 발로 뛰는 대행자이다 * 이유: 캐시 서버는 처음에 아무 정보가 없다. 도메인 주소를 찾으려면 **"어느 문을 먼저 두드려야 하는지(시작점)"**를 알아야 한다 * 194번의 named.ca에 191번 주소를 넣는 것은 **"모르는 게 생기면 무조건 191번(우리 루트)한테 가서 물어봐"**라고 시작 지점을 지정해 주는 것 6. # systemctl restart named로 서버 구동하기 7. 캐시 서버에서 # nslookup ns.ast.sec 192.168.11.194 --- 자신한테 물어보고 성공하면 됨 |