DNS (Domain Name Service)
Domain Name을 IP주소로 변환 (정방향 조회)
일반적인 클라이언트가 조회하는 방식
internet 통신은 (TCP/IP) 프로토콜을 이용하여 통신을 진행
3계층 header에 IP 주소가 들어간다.
클라이언트에게 IP주소 체계를 쉽게 사용할 수 있도록 도움을 주기위해 반드시 필요
IP주소를 Domain Name으로 변환 (역방향 조회)
특수한 상황에서만 사용
대표적으로 mail server > spam mail 필터링
DNS 사용 Port : TCP/53(영역전송), UDP/53(영역전송, DNS Query 전송)
dns도 이중화가 가능
master가 죽으면 slave가 대체
master와 slave는 동일한 내용을 가지도있어야되고
영역파일( zone file )을 만들어서 사용 - master에서 구성
slave에서는 master에서 전송받아서 사용
slave에서 다시 만드는게 아니다 > 영역전송(server to server 통신 구조)
Domain Name 구조
www.google.com.(마지막 "." 오타 아님 - root domain)
www(Hostname) . google.com(Domain Name) . (Root Domain)
. (root domain)
모든 Domain Name에는 마지막에 .(root domain) 이 붙는다.
전세계에 13대의 root domain server가 존재
없는 나라에는 mirror server를 두고 사용
root domain server가 모든 관리 리소스를 감당할 수 없다
TOP-Level Domains
하위 domain server를 두고 하청을 주는 개념
ex) 모든 edu로 끝나는 domain name를 가지고 접속하는 트래픽은 edu domain server가 관리
Second-Level Domains / Sub Domain
보통 회사 기업명 사용
엔지니어가 관리해야하는 domain server 영역
돈을 내고 domain을 사고 영역위임을 받아야만 사용할 수 있다.
Hostname Domain
WEB > www
FTP > ftp
DNS > ns
Mail > mail 등등
각 서비스(호스트 이름)에 대응하는 서버의 IP주소를 지정을 해 놓아야 한다.
FQDN (Full Qualified Domain Name)
DNS Record 종류
SOA Record (start of Authority)
Domain을 관리할 수 있는 권한을 정의, slave DNS서버(보조네임서버)와의 연결에 관한 값을 정의
모든 DNS의 첫번째 레코드로 설정
필수적인 Record
NS Record (Name Server)
해당 Domain에 대한 영역파일을 보유하고 있는 Server를 지칭하는 Record
SOA와 마찬가지로 필수적인 Record
A(AAAA) Record
가장 많이 사용되는 Record
Hostname에 대한 IP주소를 mapping하는 Record
Hostname은 각 서비스를 구분하는 이름으로 A Record를 이용하여 각 서비스가 실행되고있는 서버의 IP주소와 Hostname을 mapping 한다.
ex) A Record - www 192.168.1.129 (web server Ip) www + itsy.com = FQDN : www.itsy.com
ex) A Record - ftp 192.168.1.130 (ftp server Ip) ftp + itsy.com = FQDN : ftp.itsy.com
CNAME Record
A Record에서 mapping된 Hostname의 별칭을 지칭하는 Record
동일한 IP주소로 mapping이 가능 / A Record를 하나더 만들어도 되지만 CNAME Record를 자주 사용
ex) google.com > 8.8.8.8
gooogle.com > 8.8.8.8
MX Record
ID@[domain Name] 메일서버를 운영하기 위해서는 DNS가 필수
MX Record는 메일 서버를 지칭하는 Record로써 메일서버의 IP주소를 mapping하는 용도로 사용
SPF Record (Sender Policy Framework) : 메일서버등록제 Record
메일서버 정보를 사전에 DNS에 공개 등록함으로써 수신자로 하여금 E-mail에 표신된 발신지 정보가 실제 메일서버의 정보와 일치하는지를 확인할 수 있도록 하는 인증기술
수신자의 Domain을 확인하고 역방향으로 조회
인증기관에 등록된 IP인지 확인
수신 허용되어 있는 곳 이외에서는 mail을 차단
발신자 : 자신의 메일서버 정보와 정책을 나타내는 SPF 레코드를 해당 DNS에 등록
수신자 : E-mail 수신 시 발송자의 DNS에 등록된 SPF 레코드를 확인하여 해당 E-mail에 표신된 발송 IP와 대조하고 그 결과값에 따라 수신여부를 결정
zone file
수동으로 만들어주어야 한다.
Record들이 들어간다.
client 요청(www)이 들어오면 서버는 zone file에 들어있는 내용을 토대로 IP(web server)를 반환해준다.
client는 받은 IP주소로 다시 web서버에 접속을 한다.
DNS 서비스 동작 순서
Linux DNS
Linux DNS "Client"가 사용하는 파일들
# vi /etc/resolv.conf
# vi /etc/hosts
# vi /etc/host.conf
cache 먼저 찾고 bind
bind 패키지 설치하면 named 계정과 그룹에 자동으로 생성된다.
Linux-01 (MASTER)
# firewall-cmd --permanent --add-port=53/tcp
# firewall-cmd --permanent --add-port=53/udp
# firewall-cmd --reload
# yum -y install bind-*
# vi /etc/named.conf
# vi /etc/named.rfc1912.zones << 여기서 설정한 zone file 이름으로
# vi /var/named/ysy.com.zone << 생성
# vi /var/named/ysy.com.rev << 생성
# systemctl restart named
Linux-02 (SLAVE)
# firewall-cmd --permanent --add-port=53/tcp
# firewall-cmd --permanent --add-port=53/udp
# firewall-cmd --reload
# yum -y install bind-*
# vi /etc/named.conf
# vi /etc/named.rfc1912.zones
# systemctl restart named
Linux-01 (MASTER)
# firewall-cmd --permanent --add-port=53/tcp
# firewall-cmd --permanent --add-port=53/udp
# firewall-cmd --reload
# yum -y install bind-*
# vi /etc/named.conf
line 13 : DNS port 53에 어떤 IP가 접근할 수 있는지 설정
line 21 : 재귀 질의가 올 때 응답할지에 대한 설정
line 22, 23, 24 : hostname에 "_"가 있으면 오류가 뜨는데 무시하는 옵션
line 33 : root domain - cache server 역할을 수행하겠다. (모르는 domain을 검색하겠다.) 꺼놓는게 좋다
만약 recursion이 필요하다면 dns 서버를 하나 더 만들면 되지만 너무 비효율적이므로 acl을 활용
options { } 위에 작성하고
line 34 : 추가
# vi /etc/named.rfc1912.zones << 여기서 설정한 zone file 이름으로
기존에 작성된 내용은 localhost에 대한 영역 정의
운영하는데 필요한 내용은 아님
돈을 주고 domain name을 사오면 해당 domain name에 대한 정의 작업을 수행
line 43 : 구매한 Domian Name (정방향 조회 영역)
line 45 : 사용할 zone file 이름
line 46 : slave DNS Server 에게 zone 파일을 전송하겠다. { any; }; 절대 사용하면 안됨
line 49 : (역방향 조회 영역) 앞에 옥텟값 3개를 뒤집어서 작성
# vi /var/named/ysy.com.zone << 생성
chown root:named /var/named/ysy.com.zone
cp /var/named/named.localhost /var/named/ysy.com.zone으로 복사하고 편집
SOA record (필수)
NS record (필수)
A record
client에게 알려줘야할 서비스들마다 hostname을 하나씩 정해서 정의
CNAME record
# vi /var/named/ysy.com.rev << 생성
SOA record (필수)
NS record (필수)
PTR (point to record)
마지막 네번째 옥탯값을 지정해준다
# systemctl restart named
Linux-02 (SLAVE)
# firewall-cmd --permanent --add-port=53/tcp
# firewall-cmd --permanent --add-port=53/udp
# firewall-cmd --reload
# yum -y install bind-*
# vi /etc/named.conf
# vi /etc/named.rfc1912.zones
# systemctl restart named
자동으로 master의 zone파일을 받아오는걸 확인
서비스 확인
윈도우에서 (192.168.1.200)
리눅스에서 (192.168.1.150)
recursion은 acl로 192.168.1.150만 가능하게 해놨기 때문에
www.google.com를 요청했을때 윈도우 (.200)에서는 안되고 리눅스 (.150)에서는 가능한걸 확인 할 수 있다.
'[Linux]' 카테고리의 다른 글
[Linux] 리눅스 ssl / web server (0) | 2022.07.12 |
---|---|
[Linux] 리눅스 Web Server (0) | 2022.07.07 |
[Linux] 리눅스 Ansible/Playbook 실습 (0) | 2022.07.02 |
[Linux] 리눅스 Ansible 실습 (0) | 2022.07.02 |
[Linux] 리눅스 Ansible (0) | 2022.06.30 |