- DNS ( Domain Name Server , Domain Name System )
- 도메인 관련 용어
- 도메인 동작 원리
. (점 DNS )에 먼저 물어본다.
3) . DNS는 자신이 관리하고 있는 .com 의 IP 주소를 DNS Server에 알려준다.
4) .com 의 IP를 받은 DNS Server는 .com DNS에 다시 요청한다.
5) .com DNS는 자신이 관리하고 있는 example.com IP 주소를 알려준다.
6) example.com 주소를 받은 DNS Server는 이번에는 example.com에게 요청한다.
7) example.com DNS는 www.example.com의 IP 주소를 알려준다.
8) www.example.com의 주소를 받은 DNS Server는 그 IP주소를 DNS Client에게 전달한다.
- DNS 실습
|
// // named.caching-nameserver.conf // // Provided by Red Hat caching-nameserver package to configure the // ISC BIND named(8) DNS server as a caching only nameserver // (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // // DO NOT EDIT THIS FILE - use system-config-bind or an editor // to create named.conf - edits to this file will be lost on // caching-nameserver package upgrade. // options { listen-on port 53 { any; }; /* 53 포트 아무나 사용 */ // listen-on-v6 port 53 { ::1; }; /* IPv6 사용 안함 // 주석처리 */ directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; // Those options should be used carefully because they disable port // randomization // query-source port 53; // query-source-v6 port 53; allow-query { any; }; // allow-query-cache { localhost; }; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; view localhost_resolver { /* 특별한 Client만 접근을 허용하겠다 */ match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; }; |
|
# vi /etc/named.rfc1912.zones ( # vi /var/named/chroot/named.rfc1912.zones)
|
// named.rfc1912.zones: // // Provided by Red Hat caching-nameserver package // // ISC BIND named zone configuration for zones recommended by // RFC 1912 section 4.1 : localhost TLDs and address zones // // See /usr/share/doc/bind*/sample/ for example named configuration files. // zone "." IN { /* . 도메인 IN = internet */ type hint; /* . 도메인의 타입은 무조건 hint */ file "named.ca"; }; zone "localdomain" IN { type master; file "localdomain.zone"; allow-update { none; }; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.ip6.local"; allow-update { none; }; }; zone "255.in-addr.arpa" IN { type master; file "named.broadcast"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.zero"; allow-update { none; }; }; zone "linux.example.com" IN { type master; file "example.zone"; }; zone "17.168.192.in-addr.arpa" IN { type master; file "example.rev"; }; |
|
# named-checkconf /var/named/chroot/etc/named.rfc1912.zones /* 문법 점검 명령어 메세지 없으면 정상 */
2) ZONE 파일 설정
- Hint 파일
# cd /var/named/chroot/var/named
# vi named.ca
|
; <<>> DiG 9.5.0b2 <<>> +bufsize=1200 +norec NS . @a.root-servers.net ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7033 ;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 20 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS D.ROOT-SERVERS.NET. . 518400 IN NS E.ROOT-SERVERS.NET. . 518400 IN NS F.ROOT-SERVERS.NET. . 518400 IN NS G.ROOT-SERVERS.NET. . 518400 IN NS H.ROOT-SERVERS.NET. . 518400 IN NS I.ROOT-SERVERS.NET. . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. . 518400 IN NS L.ROOT-SERVERS.NET. . 518400 IN NS M.ROOT-SERVERS.NET. . 518400 IN NS A.ROOT-SERVERS.NET. . 518400 IN NS B.ROOT-SERVERS.NET. . 518400 IN NS C.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:ba3e::2:30 B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:2f::f G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:500:1::803f:235 I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:503:c27::2:30 K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:7fd::1 L.ROOT-SERVERS.NET. 3600000 IN A 199.7.83.42 M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:dc3::35 ;; Query time: 110 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Tue Feb 26 15:05:57 2008 ;; MSG SIZE rcvd: 615 |
|
-> IP를 모를때 요청하는 DNS 서버의 IP가 지정되어있다. 많은 DNS 서버의 목록을 가지고 있다.
A.ROOT-SERVERS.NET. 는 IP가 198.41.0.4 인것 같다.
다른 DNS 서버를 추가하려면 위 형식과 같은 방법으로 하면 된다. /* ; = 주석 */
|
. 86400 IN NS ns1.example.com. ns1.example.com. 86400 IN A 192.168.17.220 /* 자신이 알고있는 IP */ |
|
- 포워드 존파일
# cp localdomian.zone example.zone
/* localdomain.zone 은 caching-nameserver 패키지를 설치하여 생긴 샘플파일이다 복사해서 고쳐 사용한다. */
# vi example.zone
|
$TTL 4 @ IN SOA ns1.linux.example.com. root.linux.example.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns1 ns1 IN A 192.168.17.220 IN AAAA ::1 |
|
# named-checkzone linux.example.com example.zone
|
zone linux.example.com/IN: loaded serial 42 OK |
|
-> OK 떠야 정상입니다.
[참고] zone 파일
https://www.linux.co.kr/home/lecture/index.php?cateNo=5&secNo=371&theNo=&leccode=374
-리버스 존파일
# cp named.local example.rev
# vi exemple.rev
|
$TTL 4 @ IN SOA ns1.linux.example.com. root.linux.example.com. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns1.linux.example.com. 220 IN PTR ns1.linux.example.com. |
|
# named-checkzone 220.168.192.in-addr.arpa example.rev
|
zone 220.168.192.in-addr.arpa/IN: loaded serial 1997022700 OK |
|
- 파일 링크걸기 및 설정파일의 그룹권 변경
# ln -s /var/named/chroot/var/named/example.zone /var/named/example.zone
# ln -s /var/named/chroot/var/named/example.rev /var/named/example.rev
# cd /var/named
# ls -l
|
합계 24 drwxr-x--- 6 root named 4096 9월 10 03:48 chroot drwxrwx--- 2 named named 4096 1월 17 2017 data lrwxrwxrwx 1 root root 39 9월 10 13:31 example.rev -> /var/named/chroot/var/named/example.rev lrwxrwxrwx 1 root root 40 9월 10 13:31 example.zone -> /var/named/chroot/var/named/example.zone lrwxrwxrwx 1 root named 44 9월 9 04:45 localdomain.zone -> /var/named/chroot/var/named/localdomain.zone lrwxrwxrwx 1 root named 42 9월 9 04:45 localhost.zone -> /var/named/chroot/var/named/localhost.zone lrwxrwxrwx 1 root named 43 9월 9 04:45 named.broadcast -> /var/named/chroot/var/named/named.broadcast lrwxrwxrwx 1 root named 36 9월 9 04:45 named.ca -> /var/named/chroot/var/named/named.ca lrwxrwxrwx 1 root named 43 9월 9 04:45 named.ip6.local -> /var/named/chroot/var/named/named.ip6.local lrwxrwxrwx 1 root named 39 9월 9 04:45 named.local -> /var/named/chroot/var/named/named.local lrwxrwxrwx 1 root named 38 9월 9 04:45 named.zero -> /var/named/chroot/var/named/named.zero drwxrwx--- 2 named named 4096 1월 17 2017 slaves |
|
# cd /var/named/choot/var/named
# chown root:named example.zone
# chown root:named example.rev
-데몬 실행
[참고] # tail -f /var/log/messages
-> 데몬이 실행될 때 설정파일이 잘못되면 로그에 기록된다.
# service named restart
[확인]
# nslookup ns1.linux.example.com
|
Server: 192.168.17.220 Address: 192.168.17.220#53 Name: ns1.linux.example.com Address: 192.168.17.220 |
|
|
$TTL 4 @ IN SOA ns1.linux.example.com. root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns1.linux.example.com. ns1 IN A 192.168.17.220 www IN A 192.168.17.220 ftp IN A 192.168.17.220 linux.example.com. IN MX 10 192.168.17.220 mail IN A 192.168.17.220 cafe IN A 192.168.17.220 |
|
-> mail의 형식만 다르고 나머지는 ns1 과 같은 방법으로 추가한다.
[참고] example.rev
이 파일은 IP를 입력하면 도메인을 알려준다. 보통 이 파일은 특별한 경우가 아니면 잘 건들이지 않는다.
보안상좋지도 않다.
# service named restart
# nslookup www.linux.example.com
# nslookup ftp.linux.example.com
# nslookup -q=MX linux.example.com /* mail 확인 */
# nslookup cafe.linux.exmaple.com
- DNS 부하분산
하나의 도메인에 여러 서버를 설정할 수 있다.
너무 많은 요청을 하는 웹서버는 하나의 서버로 감당이 안되어 여러 서버를 가지고 있다. 같은 내용의 서버를 하나의 도메인으로 관리한다.
L4 스위치는 부하가 걸리는 서버를 판단하여 다른 서버를 골라 요청한다. 가격이 비싸다.
DNS 는 L4 스위치와 같은 기능을 하지만 부하가 걸리는 서버를 판단하지 못하고 순서대로 서비스한다.
# vi /var/named/chroot/var/named/example.zone
|
$TTL 4 @ IN SOA ns1.linux.example.com. root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns1.linux.example.com. ns1 IN A 192.168.17.220 ;www IN A 192.168.17.220 www IN A 192.168.17.2 www IN A 192.168.17.3 www IN A 192.168.17.4 ;ftp IN A 192.168.17.220 ;linux.example.com. IN MX 10 192.168.17.220 ;mail IN A 192.168.17.220 ;cafe IN A 192.168.17.220 |
|
-> 앞서 했던 실습은 주석처리한다. ( ; )
# service named restart
# nslookup www.example.com
|
Server: 192.168.17.220 Address: 192.168.17.220#53 Name: www.linux.example.com Address: 192.168.17.2 Name: www.linux.example.com Address: 192.168.17.3 Name: www.linux.example.com Address: 192.168.17.4 |
|
-> 3개의 IP가 뜬다.
- 도메인 위임
# vi /var/named/chroot/var/named/example.zone
....
linux.example.com. IN NS ns1.linux.example.com.
ns1.linux.example.com. IN A 192.168.17.220
....
'Linux > Linux Network' 카테고리의 다른 글
WEB Server ( Apache ) (0) | 2017.09.11 |
---|---|
DNS_2 ( Master DNS / Slave DNS ) (0) | 2017.09.11 |
이더채널 본딩 ( Ether Channel Bonding ) (0) | 2017.09.07 |
네트워크 설정 (0) | 2017.09.07 |
xinetd 방식과 standalone 방식 (0) | 2017.09.06 |