본문 바로가기
리눅스

리눅스2 5차시

by IT매니절 2024. 4. 20.

DNS
DOMAIN 주소를 IP주소로 변환해주는 시스템

 

DNS의 구성요소
- 도메인 네임 공간DOMAIN NAME SPACE = 리소스 레코드Resource Rocord
- 네임서버Name Server = DNS Server
- 리졸버Rsolver

 

참고하면 좋은 사이트

https://wiki.kldp.org/KoreanDoc/html/PoweredByDNS-KLDP/index.html

 

Powered by DNS

3rd Edition, 최종수정일 2001년 12월 16일, Revision 3.4.5 HTML(Divided) HTML(Combined) SGML(DocBook) 잘못 쓰여진 내용이 있다면 약간의 시간을 할애하여 저자에게 알려주시기 바랍니다. 이것은 다음 사람들에게

wiki.kldp.org

 

DNS 서버

DNS 클라이언트가 도메인 주소를 요청하면, 가지고 있는 도메인 주소에서 찾아 IP 주소 (+ 기타 정보)를 알려주는 서버
(없을 시, 상위 DNS 서버에 질의)

 

https://wiki.kldp.org/KoreanDoc/html/PoweredByDNS-KLDP/namespace.html

디렉터리 구조와 유사한 네임서버 구조

(최상위 root domain은 . 이다. 그러므로, http://www.naver.com은 사실 http://www.naver.com. 을 의미)

(최상위 root domain은 전세계적으로 13개 존재하며 주로 미국이 많이 갖고 있고 아시아에서는 일본이 1개 있음)

 

Root Domain은 Top level Domain의 정보를 가지고, Top level Dmain은 그 하위 Domain 정보를 가진다.

이런 구조로 정보들이 각 도메인의 네임서버(NS:Name Server)로 분산, 관리된다.

 

 

Domain Name Resolving

TCP/IP 패킷에는 도메인명을 위한 공간이 없다.
때문에, 도메인명에 대한 IP 변환작업을 선행해야 한다.

 

resolver: OS에 들어있는 라이브러리
애플리케이션이 도메인을 접속할 때 resolver가 동작해서 해당 도메인에 대한 IP주소를 얻어온다. 이 과정을 resolving이라고 한다.
resolver는 OS에 자동으로 들어있어서 도메인을 치면 무조건 실행한다.

 

클라이언트가 도메인을 요청하면

1. hosts 파일 확인 ( /etc/hosts 윈도우는 \systemroot\system32\drivers\etc\hosts) 

2. DNS 캐시 확인 ( /etc/resolv.conf ) ← 해당 파일은 직접 편집하지 않는 추세

3. Local DNS Server에 질의 ( nmtui 또는 /etc/sysconfig/network-scripts/ifcfg-인터페이스명 에 등록된 dns 주소 참고 )

( Local DNS 서버가 ABC.B 도메인 정보를 찾는 과정 = resolving 과정
 1) Local DNS → 상위 DNS 서버 (정보가 없을때) → A 도메인 서버에 질의해보라는 응답
 2) Local DNS → A 도메인 서버 (정보가 없을때) → B 도메인 서버에 질의해보라는 응답
 3) Local DNS → B 도메인 서버에서 ABC.B 서브 도메인에 대한 IP 주소를 반환

 4) Local DNS는 IP주소 응답을 클라이언트에게 반환 )

( 똑같은 도메인 주소 ABC.B에 대한 IP Resolving 결과는 매번 다를 수 있는데, 대다수 DNS 서버는 미러링 서버로 운영되고 부하를 줄이기 위해 한 도메인에 다수의 IP를 매핑하였기 때문 )

 

( 외부 인터넷 접속이 안될 때 : 네트워크 > 게이트웨이 > DNS 순으로 확인 )

( + Rocky Linux9, Centos9 에서는 /etc/sysconfig/network-scripts/ifcfg-인터페이스명 파일이 없고 다른 방식으로 설정하게 되었다고 한다

nmtui 또는 nmcli 사용 ( 참고 : https://svrforum.com/os/361727 )
ex) nmcli con mod 인터페이스명 ipv4.method manual ipv4.address 고정IP주소/prepix gw4 게이트웨이주소 ipv4.dns "dns주소1 dns주소2" )

 

도메인 질의 명령어

nslookup, dig, host

 

Resource Record 종류
SOA : 도메인 시작
NS : 네임서버
A : IPv4
AAAA : IPv6
PTR : 도메인 주소
MX : 메일서버
TXT : 스팸메일 확인할 때 사용
CNAME : 별칭

 

 

DNS 주소 에러 실습 : vi /etc/resolv.conf
nameserver 없는 ip주소 아무거나 설정

yum을 다운로드 받지 못하고 에러가 난다

systemctl restart network 하여 초기화하면

/etc/resolv.conf 의 내용이 자동 복원되고 yum 다운로드가 정상적으로 되는 것을 확인할 수 있다.

 

 

nslookup, dig 실습

윈도우에서 nslookup 사용
위) centos7, 아래) rockey8 대화형 모드로 명령어 입력

=> 윈도우와 달리 centos7과 rockey8에서는 yum으로 설치해야 한다

yum -y install bind-utils

 

 

nslookup 도메인주소 (비대화형 모드로 명령어 입력)

 

dig 명령어 사용

=> dig의 출력형태가 dns 서버 설정파일 형태가 동일하므로 익숙한 dig 명령어를 쓰는 것을 권장 (비대화형만 지원)

 

실습) 총 4대를 각기 다른 host명으로 셋팅하여 준비하고 DNS 서버 설치하기

( centos-ns1, centos-ns2, rocky-ns1, rocky-ns2 )

 

hostnamectl set-hostname 호스트명

ex) hostnamectl set-hostname test-name.net

 

네트워크 재시작

Centos7은 systemctl restart network

Rocky linux8은 systemctl restart NetworkManager

( Rocky 는 재시작해도 ip a에 이전 ip정보가 남아있어 reboot까지 해주었다 )

ip는 192.168.100.3 ~ 100.6으로 순서대로 설정

 

centos-ns1, rocky-ns1에서 전체 셋팅하고

centos-ns2와 rocky-ns2는 도메인명만 땡겨오는 형식으로 백업 서버 용도로 사용한다.

 

DNS 서버는 53번 udp/tcp 포트를 사용한다

 

udp : tcp보다 빠르지만, 비신뢰성. 안정성이 tcp보다 나쁘다. ( DNS 도메인 질의시 기본 사용 )
tcp : udp보다 느리지만, 신뢰성. 안정성이 udp보다 좋고 대용량에 적합 ( DNS 동기화 할 때 사용, 도메인 질의 응답이 512byte를 넘어갈 경우 tcp로 도메인 질의 )

yum -y install net-tools 
yum -y install bind bind-chroot bind-utils
// netstat 패키지 설치
// dns 네임서버 관련 패키지 설치 ( bind ), bind-chroot 보안강화, bind-utils 다양한 bind 도구들

rpm -ql bind
rpm -ql bind-chroot
rpm -ql buind-utils
// -ql 옵션으로 설명을 볼 수 있다

 

systemctl enable --now named
systemctl status named
netstat -nltup | grep named

패키지를 전부 설치한 후, 네임서버 서비스 실행, status에서 running (active) 상태를 확인한다.

netstat 에서 named로 grep하여 linsten 포트들 정보를 확인한다.

53번 포트가 열려있다

 

네임서버 전체 설정 파일: /etc/named.conf

13| listen-on port 53를 { 192.168.100.3; }; ← 자신의 ip로 변경 (any일 경우 모든 ip의 53번 포트가 열림)
21| allow-query를 { any; }; ← any로 변경
35| nssec-enable no;
36| dnssec-validation no;

 

재시작하니 53번 포트는 설정해준 ip에만 열려있다 (listen-on-v6 port 53를 주석처리해줘야 하는데 까먹어서 ::1:53이 열려있음)

 

centos-ns1 에서 systemctl stop firewalld 방화벽을 잠깐 내리고

window에서 nslookup을 통해 centos-ns1을 네임서버로 지정한 뒤, naver.com에 대해 질의해보았다.

정상적으로 응답이 돌아온다.

 

네임서버 관련 파일들

 

네임서버 전체 설정 : /etc/named.conf
서버 데몬 프로그램 : /usr/sbin/named
도메인 설정 파일 검사 프로그램 : /usr/sbin/named-checkconf
존파일 설정 파일 검사 프로그램 : /usr/sbin/named-checkzone
존파일이 저장된 디렉터리 : /etc/named/

 

 

rocky8-ns1에서 설치시, yum 대신 dnf로 변경되었다

다만 심볼릭링크가 걸려있어 yum을 사용할 수 있다

 

rocky8-ns1

firewall-cmd --permanent --add-service=dns

firewall-cmd --reload

firewall-cmd --list-services

방화벽에 dns 서비스를 추가했다

 

방화벽설정해준 ns1은 정상, ns2는 응답제한시간초과

 

'리눅스' 카테고리의 다른 글

리눅스2 7차시  (0) 2024.04.27
리눅스2 6차시  (0) 2024.04.21
centos7 vmware 고정ip static 설정  (0) 2024.04.15
리눅스2 4차시  (0) 2024.04.14
리눅스2 3차시  (0) 2024.04.13