/etc/named.conf 파일에 include로 들어간 /etc/named.rfc1912.zones 파일
설정 형식:
// 주석으로 인식한다.
zone "도메인명" IN {
type 네임서버종류; <-- master, slave, hint
file "포워드존파일"; <-- 관례상 존파일 형식은 도메인.zone 사용하지만 다른 이름을 사용해도 된다.
allow-update { none; };
};
리버스 존파일(역방향) : IP주소 정보를 요청하면 도메인 정보를 응답하기 위해 저장하는 파일
포워드 존파일(정방향) : 도메인 주소 정보를 요청하면 IP주소 정보를 응답하기 위해 저장하는 파일
포워드 존파일을 주로 많이 사용한다.
1차 네임서버 : master
- 존 파일을 관리자가 등록한다. recursion no;
2차 네임서버 : slave
- 존 파일을 1차 네임서버에서 자동으로 동기화한다. recursion no;
캐시 네임서버 : hint
- 외부에서 요청 도메인을 루트 도메인으로부터 찾아서 알려주는 서버
- /etc/named.conf 파일에서 recursion yes; 로 설정
- 도메인 정보, 존 파일 필요없음
( recursion yes; 로 설정하면 DNS 증폭 공격의 대상이 될 수 있다. )
리소스 레코드RR 종류
1. SOA 도메인의 시작을 의미
2. NS 네임서버
3. A IPv4 / AAAA IPv6
4. PTR 도메인주소 (역방향용 타입)
5. MX 메일서버
6. TXT 스팸메일 확인시 사용
7. CNAME 별칭
네임서버에 도메인 등록하기
1. /etc/named.rfc1912.zones 파일에 도메인 등록
2. /var/named/<정방향존파일> 생성
3. named-checkconf, named-checkzone 명령어로 설정파일, 존파일 문법검사
4. systemctl restart named 또는 reload로 재시작하거나 리로드
5. nslookup, dig, host 명령어로 도메인을 확인한다
( /etc/named.rfc1912.zones 파일에 편의성을 위해 컬러를 입히는 작업
Centos7 : vi +288 /usr/share/vim/vim74/filetype.vim
Rocky8 : vi +221 vi /usr/share/vim/vim80/filetype.vim
named.rfc1912.zones 파라미터를 추가 )
( vim 설정파일 /etc/vimrc에 티스토리에 백업해두었던 설정 텍스트를 복사 붙여넣기 하면 vim이 인식하지 못한다.
여백 등이 뭔가 다른 것 같아. 하는 수 없이 다시 수동으로 타이핑해서 설정해주었다... )
( 복습
vim 특정 라인이동 : 228 + Shift + g
맨 끝으로 이동 : Shift + g )
실습> CentOS7-ns1 네임서버에 도메인 등록
등록할 도메인은 server.com (실제 외국에 있는 도메인이고 실습겸 가짜로 등록하는 것임)
1. /etc/named.rfc1912.zones 파일에 도메인 등록
zone "server.com" IN {
type master;
file "server.com.zone" ← /var/named/ 경로이다
allow-update { none; };
};
2. /var/named/<정방향존파일> 생성
vi /var/named/server.com.zone
$TTL 300 @ IN SOA NS1 root ( 20240421 ; serial 6H ; refresh 30M ; retry 1W ; expire 3H) ; minmum IN NS ns1 ; ns1.server.com. IN NS ns2 ; ns2.server.com. IN A 192.168.100.3 ; server.com. ns1 IN A 192.168.100.3 ; ns1.server.com. ns2 IN A 192.168.100.4 ; ns2.server.com. www IN A 192.168.100.3 ; http://www.server.com. |
// ns1.server.com. ← .을 마침표로 꼭 찍어줘야한다 찍어주지 않으면 ns1.server.com.server.com 이렇게 붙는다
//ns1, ns2는 네임서버고 www는 웹서버
//웹서버와 네임서버가 ~100.3번에 같이 있는 형태의 존파일
@는 server.com을 의미한다. (해당 칸을 비워두면, @가 내려와 같은 의미가 된다)
.으로 마침표를 찍지 않으면 .server.com이 뒤에 붙기 때문에, root도 root.server.com 과 같다.
chmod o= /var/named/server.com.zone
chgrp named /var/named/server.com.zone
보안을 위해, 그리고 소유그룹이 'named' 여야 bind가 파일을 인식하므로 권한변경
3. named-checkconf, named-checkzone 명령어로 설정파일, 존파일 문법검사
named-checkconf 명령어로 설정파일에 대한 오류 검사를 한다. (인수는 없어도 된다)
문제가 없으면 아무것도 출력되지 않고 문제가 있으면 출력된다.
named-checkzone 명령어는 존파일에 대한 오류 검사.
4. systemctl restart named.service 또는 reload로 재시작하거나 리로드
5. nslookup, dig, host 명령어로 도메인을 확인한다
nslookup의 기본 dns server는 168.126.63.1 53번포트이다
실제 라이브서버이므로 52.8.126.80의 address를 돌려준다
server 192.168.100.3 으로 dns server를 재설정하고
server.com의 주소를 물어보면, 우리가 설정했던 192.168.100.3의 address를 돌려주게 된다.
dig는 @를 통해 dns server를 지정하여 질의하면 된다
셀프실습)
rocky8 환경에서 비슷하게 재구축 하였다.
ip를 제외하면 centos7 환경과 다른 명령어/과정은 없었다.
다만, 이전 자료를 보고 하느라 vi /etc/named.rfc1912.zones 파일에 file 이름을 잘못 적어놓고
nslookup으로 접근해서 왜 안 나오지... 하고 있었다...
file 이름을 잘못 입력해도
설정파일 검사, 존파일 검사를 했을 때 오류로 나오지 않기 때문에 처음부터 차근차근 점검하는 것이 필요한 것 같다.
정방향조회 : server.com.zone 파일
역방향조회 : server.com.re 파일
(존파일 이름은 임의로 정하되 역방향 zone 파일의 IN은 IP주소를 거꾸로 뒤집어 사용
네임서버 IP : 192.168.100.3 → 3을 제외하고 거꾸로 뒤집어서 100.168.192 )
( ns1.server.com 뒤에 .을 안 붙이면 nslookup 했을 때 ns1.server.com.100.168.192.in-addr.arpa 라고 붙어 나오더라
무슨 의미인지 확 와닿았음.)
~ 2차 네임 서버 구축하기 ~
1차 네임서버
=> /etc/named.rfc1912.zones 파일, /var/named/도메인명.zone 파일
2차 네임서버
=> /etc/named.rfc1912.zones 파일
2차 네임서버는 zone파일을 직접 만들지 않고,
미리 등록해둔 1차 네임서버에서 존파일을 동기화 해와야 한다.
zone "server.com" IN { type slave; masters { 192.168.100.5; }; file "server.com.zone"; };
=> 실무에서는 도메인이 많을 수 있기 때문에 한 줄로 축약하여 등록하는 일이 많다
존파일 형식은 text, binary 형식이 있는데, bind 9.9부터는 binary 형식을 사용한다.
binary 형식은 속도가 빠르고 수정이 금지된다. (육안으로 확인 불가)
2차 네임서버를 재시작하면, 1차 네임서버로 접속해서 자동으로 해당 존파일을 가져온다
기본적으로 binary 형식 파일로 가져오므로
vi /etc/named.conf
masterfile-format text;
해당 포맷을 추가하고 다시 네임서버를 재시작하면
cat /var/named/server.com.zone
했을 때 바이너리가 아닌 텍스트 형식의 내용을 확인할 수 있다.
( 네임서버 진행할 때 방화벽은 기본적으로 설정했다는 전제
firewall-cmd --add-service=dns; firewall-cmd --reload; firewall-cmd --list-services )
다음 시간에는 가상호스트를 dns 네임서버와 연동하는 과정을 진행하기로