컬쥐네 다락방
리눅스 | DNS 란? 본문
Domain Name Service
IP Affress를 Domain 형식 (문자열)로 변환해주는 서비스
Domain Name이란?
네트워크에 연결되어 있는 모든 시스템에는 숫자의 조합으로 구성되는 주소를 가지고 있다. 하지만 이러한 주소를 다 외우기는 불가능 하므로 알파벳으로 이루어지는 도메인 이름을 사용한다.
ex) naver.com = 222.122.84.250
도메인 등록 원칙
1. 도메인 이름은 영문자(a-z), 숫자(0-9), 특수기호(-) 를 합쳐 총 37개의 글자 조합으로 나타낼 수 있따. 영문자의 경우 대 소문자의 구별은 하지 않으며 특수 기호인 (-)는 도메인의 처음과 끝에 올 수 있다.
2. 도메인은 피라미드 구조를 하고 있으며 각 단계별로 독자적으로 관리한다.
3. 도메인 이름은 전 세계적으로 겹치지 않게 하나만 부여되며 First Come, First Served 원칙에 따라 부여된다.
네임 서버의 유형
도메인에 대한 DNS 네임 처리를 해주기 위해서는 반드시 한 대의 네임 서버가 필요하다.
통상 한대의 DNS 서버로 운영은 가능하나, 이 네임 서버가 다운되면 DNS로 하는 모든 작업이 중단되기 때문에 이를 대체할 수 있는 네임 서버를 함께 구축해야 한다.
주 네임 서버(Primary Name Server)
1차 네임 서버라고 부르며, 이 네임 서버는 영역에 대한 모든 데이터를 가지고 있기 때문에 한 명에 대한 모든 권한을 가지고 있는 가장 중요한 서버이다.
보조 네임 서버 (Secondary Name Server)
2차 네임 서버라고 부르며, 이름에서 알 수 있듯 1차 네임 서버가 다운됐을 때 동작한다.
캐쉬 서버 (Cache Server)
직접 입력이 불가능하고 주 서버에서 정보를 가져와서 서비스하는 서버이다.
/etc/hosts
인터넷 주소와 호스트 이름의 관계를 설정한다. 매우 간단하게 설정할 수 있다는 장점이 있지만, 로컬 시스템에서만 유효하게 사용할 수 있다.
vi 편집기를 사용해 밑에 클라이언트 주소를 추가해주고,
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.200 client client.encore.class4
등록된 주소나 이름으로 핑을 보내면 보내지는 모습을 확인할 수 있다.
[root@server ~]# ping -c 3 192.168.56.200
PING 192.168.56.200 (192.168.56.200) 56(84) bytes of data.
64 bytes from 192.168.56.200: icmp_seq=1 ttl=64 time=0.922 ms
64 bytes from 192.168.56.200: icmp_seq=2 ttl=64 time=0.352 ms
64 bytes from 192.168.56.200: icmp_seq=3 ttl=64 time=0.270 ms
--- 192.168.56.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.270/0.514/0.922/0.291 ms
[root@server ~]# ping -c 3 client
PING client (192.168.56.200) 56(84) bytes of data.
64 bytes from client (192.168.56.200): icmp_seq=1 ttl=64 time=0.382 ms
64 bytes from client (192.168.56.200): icmp_seq=2 ttl=64 time=0.536 ms
64 bytes from client (192.168.56.200): icmp_seq=3 ttl=64 time=0.470 ms
--- client ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.382/0.462/0.536/0.067 ms
[root@server ~]# ping -c 3 client.encore.class4
PING client (192.168.56.200) 56(84) bytes of data.
64 bytes from client (192.168.56.200): icmp_seq=1 ttl=64 time=0.327 ms
64 bytes from client (192.168.56.200): icmp_seq=2 ttl=64 time=0.212 ms
64 bytes from client (192.168.56.200): icmp_seq=3 ttl=64 time=0.428 ms
/etc/resolv.conf
호스트가 사용할 DNS 서버의 주소를 설정해준다.
자신의 호스트가 DNS 서버라면 자신의 IP 주소를 적어줘야한다.
기존 /etc/resolv.conf
[root@server ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search encore.class4
nameserver 210.220.163.82
nameserver 219.250.36.130
자신의 ip 주소를 DNS로 가지는 서버를 등록하면 바뀌게 된다.
[root@server ~]# nmcli con add con-name static ifname enp0s3 type ethernet ip4 10.0.2.10/24 gw4 10.0.2.2
연결 'static' (26a88b3b-74f5-4ac8-86c8-8245b4754cf7)이 성공적으로 추가되었습니다.
[root@server ~]# nmcli con mod static ipv4.dns 10.0.2.10
[root@server ~]# nmcli con reload
[root@server ~]# nmcli con up static
연결이 성공적으로 활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@server ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search encore.class4
nameserver 10.0.2.10
DNS 구성 과정
1. 패키기 설치 (bind , bind-utils )
- yum -y install bind bind-utils
2. 서비스 설정
- 고정 아이피 설정
- DNS 서버 주소 설정
- hostname 설정
- /etc/named.conf 설정
- /var/named => zone 설정
3. 서비스 활성화
- systemctl start named
- systemctl enable named
4. 방화벽 설정
- firewall-cmd --add-service=dns --permanent
- firewall-cmd --reload
Packagae 이름 | 설명 |
bind-utils | DNS 쿼리를 위한 유틸리티 |
bind-libs | 라이브러리 |
bind-chroot | Chroot 런타임 환경 |
bind-devel | 헤더파일 및 라이브러리 |
bind | BIND 패키지 |
unbound | Cache 서버 구성 |
/etc/named.conf
DNS 서버의 환경을 설정하는 파일
//linux.edu.kr.zone 설정
zone “linux.edu.kr" IN {
type master; //master 1차 DNS server 로 구성
file “linux.edu.kr.zone"; //zone 파일 이름지정
allow-update { any; }; //동적 업데이트 모두 허용
allow-transfer { any; }; //zone transfer 모두 허용
};options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
//네임서버 DB파일 존재 위치 지정
chroot 설치시 /var/named/chroot/var/named로 위치 변경
dump-file "/var/named/data/cache_dump.db";
//네임서버 정보 변경시 dump 파일로 지정
statistics-file "/var/named/data/named_stats.txt";
//네임서버 통계자료 저장
memstatistics-file "/var/named/data/named_mem_stats.txt";
//메모리 상태 정보 저장
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; };
allow-query-cache { localhost; }; //quersy allow 설정
};
//linux.edu.kr.zone 설정
zone “linux.edu.kr" IN {
type master; //master 1차 DNS server 로 구성
file “linux.edu.kr.zone"; //zone 파일 이름지정
allow-update { any; }; //동적 업데이트 모두 허용
allow-transfer { any; }; //zone transfer 모두 허용
};
//reverse mapping 설정
zone “8.168.192.in-addr.arpa" IN {
type master;
file “192.168.8.zone";
allow-update { any; }; //동적 업데이트 모두 허용
allow-transfer { any; }; //zone transfer 모두 허용
};
listen-on port 53 {127.0.0.1; }; : 루프백에 대해서만 질문에 반응할 것이다.
listen-on port 53 {10.0.2.30; }; : 10.0.2.30 에 대해서만 질문을 들을 준비가 되었다.
listen-on port 53 {any; }; : 어떠한 주소에서 질문이 들어오던 들을 준비가 되었다.
listen-on port 53 {none; }; : 어떠한 질문에도 답하지 않겠다. (비활성화)
조회
정방향 조회 => 이름 -> 주소
역방향 조회 => 주소 -> 이름
Zone 파일 구성
정방향 조회
//정방향 파일
$TTL 86400 ; 1 day //time to live 데이터의 수명
@ IN SOA ns.linux.edu.kr. root (
77 ; serial
10800 ; refresh ( 3 hours)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
IN NS nstest.com. ### 1차 네임서버
IN NS nstest.net. ### 2차 네임서버
IN MX 10 mail.test.com ### 1차 메일서버
IN MX 20 mail2.test.com ### 2차 메일서버
IN A 192.168.0.100 ### test.com 도메인의 IP 주소를 192.168.0.100로 설정
www IN A 192.168.0.100 ### www.test.com 도메인의 IP 주소를 192.168.0.100로 설정
m IN A 192.168.0.100 ### m.test.com 도메인의 IP 주소를 192.168.0.100로 설정
good IN CNAME www ### good=www IP 주소 매핑
shop IN A 192.168.0.200 ### shop.com 도메인의 IP 주소를 192.168.0.200로 설정
@ IN TXT "v=spf1 ip4:1.1.1.1 ip4:2.2.2.2 ~all"
역방향 조회
$TTL 86400 ; 1 day //time to live 데이터의 수명
@ IN SOA ns.linux.edu.kr. root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expire
1D ; minimum
)
IN NS ns.linux.edu.kr
IN A 192.168.8.10
10 IN PTR www.linux.edu.kr.
//PTR 레코드는 IP 주소에 대해 도메인 명을 매핑하여 주며, Reverse Zone 파일에서 사용
항목 | 설명 |
@ | orgin 이라고 부르며, zone 이 가지는 기본 도메인을 의미한다. - @ 대신 naver.com. 을 사용해도 되며 도메인 뒤에는 항상 . 을 찍어 내용이 도메인이라는 사실 을 알려줘야 한다. |
SOA | Start Of Authority의 약어로 기본적인 권한을 담당하는 서버 주소, 관리자 메일주소 등의 정보 유 효 기간을 지정하는 설정이 시작됨을 의미한다 |
77 ; serial | 현재 데이터의 버전을 나타내는 시리얼 번호 |
3H ; refresh | 2차 네임서버가 1차 네임서버로부터 재조회 할 시간 간격 |
15M ; retry | 2차 네임서버가 1차 네임서버를 조회 실패시 재시도할 시간 간격 |
1W : empiry | 2차 네임서버가 1차 네임서버를 재조회 했을 때 실패하여 retry 하였는데 그 기간이 1주일이 지 나면 2차 DNS의 정보를 파기 하겠다는 의미이다. |
1D ; minimum | Negative caching ttl을 의미하는 필드로서, 앞쪽에 있는 $TTL 은 4.X 버전에서는 같은 의미를 가 졌지만 8.X 버전 이후 버전에서는 조회한 도메인의 정보가 없을 시에 “NXDOMAIN (no-suchdomain)” 이란 응답을 받게 되는데 “NXDOMAIN” 정보를 캐시 할 시간이다. |
nslookup
nolookup 명령어를 통해 서버와 질문을 주고 받을 수 있다.
[root@client ~]# nslookup
> www.encore.class4
Server: 10.0.2.10
Address: 10.0.2.10#53
Name: www.encore.class4
Address: 10.0.2.20
> exit
'클라우드 > 리눅스' 카테고리의 다른 글
리눅스 | HTTPS (HTTP Secure) (0) | 2022.03.11 |
---|---|
리눅스 | Apache, 가상 호스트 (0) | 2022.03.10 |
리눅스 | 방화벽 (firewall)이란? (0) | 2022.03.07 |
리눅스 | SSH란? (0) | 2022.03.07 |
리눅스 | 네트워크 설정 feat. nmcli (0) | 2022.03.04 |