상세 컨텐츠

본문 제목

DNS(Domain Name System)

Ops/System

by 크리두 2021. 6. 25. 07:34

본문

반응형

구성 요소, 동작 원리


Resolver


-DNS의 클라이언트

-도메인 주소를 요청하면 이를 질의 형태로 변환하고 응답을 반환하는 역할을 함

Fully Qualified vs Non-Fully Quaified


도메인 주소의 형식에 따라 동작 방식이 달라짐

항목 설명 예제 동작
FQDN(Fully Qualified Domain Name) dot(".") 으로 끝나는 주소 google.com. as-is(절대 주소)로 쿼리함
Non-FQDN dot(".") 으로 끝나지 않는 주소 google.com dot(".")의 개수가 ndots 설정 미만인 경우: search list 항목을 suffix로 붙여서 쿼리함dot(".")의 개수가 ndots 설정 이상인 경우: as-is 주소로 쿼리함 * ndot 기본 설정은 "1"

-아래 예제에서 "test"로 검색하면 Non-FQDN이고 dots의 개수가 ndots 설정인 "5" 미만이므로 search list 항목을 suffix로 붙여서 쿼리함

-"test."(FQDN)인 경우는 as-is 주소인 "test."로 질의를 함("test."는 없는 주소이기 때문에 에러)

$ ``cat` `/etc/resolv``.conf``nameserver xxx.xx.xxx.xx``search sample.svc.cluster.``local` `svc.cluster.``local` `cluster.``local` `sample.co.kr``options ndots:5` `sh-4.2$ ``nslookup` `test``Server:     xxx.xx.xxx.xx``Address:    xxx.xx.xxx.xx``#53` `Name:  ``test``.sample.svc.cluster.``local``Address: xxx.xxx.xxx.xx` `sh-4.2$ ``nslookup` `test``.``Server:     xxx.xx.xxx.xx``Address:    xxx.xx.xxx.xx``#53` `Non-authoritative answer:``*** Can't ``find` `test``: No answer

x

resolv.conf


DNS 설정 파일

$ ``cat` `/etc/resolv``.conf``domain …``search …``option …``nameserver …

1.domain

-Non-FQDN 주소 쿼리 시 참조하는 기본 도메인. 아래 예제에서 "example.com"

-위 설정이 되어 있으면 "example.com" 주소를 suffix로 붙여서 쿼리함.

-아래 예제에서 "www"를 검색하면 "www.example.com"으로 검색됨

$ ``cat` `/etc/resolv``.conf``domain example.com``...` `$ ``nslookup` `www``Server: x.x.x.x``Address: x.x.x.x``#53` `Name: www.example.com``Address: y.y.y.y

2.search

-1번의 domain 설정과 마찬가지로 Non-FQDN 쿼리 시 suffix로 붙이는 도메인. 최대 6개 까지 설정할 수 있고 첫번째 도메인이 기본 도메인이 됨(domain과 search가 함께 정의되어 있으면 마지막에 선언된 게 적용됨)

-아래 예제에서 kube service명인 "test"를 검색

1)검색 주소가 Non-FQDN이고 ndot 설정 "5" 미만이므로 search list 탐색함

2)search list의 첫 번째 항목인 "sample.svc.cluster.local"를 suffix로 붙여서 쿼리함 => "test.sample.svc.cluster.local"에 대한 IP 주소 "172.130.153.93"이 리턴됨

## Kubernetes Pod의 DNS 설정 파일``$ ``cat` `/etc/resolv``.conf``nameserver xxx.xx.xxx.xx``search sample.svc.cluster.``local` `svc.cluster.``local` `cluster.``local` `sample.co.kr``options ndots:5` `sh-4.2$ ``nslookup` `test``Server:     xxx.xx.xxx.xx``Address:    xxx.xx.xxx.xx``#53` `Name:  ``test``.sample.svc.cluster.``local``Address: xxx.xxx.xxx.xx

-다른 예제로 kube service명 + namespace 명인 "test.sample"로 검색

1)검색 주소가 Non-FQDN이고 ndot 설정 "5" 미만이므로 search list 탐색함

2)search list의 첫 번째 항목인 "sample.svc.cluster.local"를 suffix로 붙여서 쿼리함 => "test.sample.sample.svc.cluster.local"은 없는 주소이므로 실패

3)search list의 두 번째 항목인 "sample.svc.cluster.local"를 suffix로 붙여서 쿼리함 => "test.sample.svc.cluster.local"에 대한 IP 주소 "172.130.153.93"이 리턴됨

sh-4.2$ ``nslookup` `test``.sample``Server:     172.30.252.68``Address:    172.30.252.68``#53` `Name:  ``test``.sample.svc.cluster.``local``Address: 172.130.153.93

3.option ndots

-검색 주소가 Non-FQDN이고 dot(".")의 개수가 ndots 설정 미만인 경우 search list 순서대로 suffix 붙여서 쿼리함

-아래 예제에서 "cart"를 검색

1)검색 주소가 Non-FQDN이고 ndot 설정 "1" 미만이므로 search list 탐색함(ndot 설정을 하지 않으면 기본값이 1임)

2)search list의 첫 번째 항목인 "gmarket.co.kr"를 suffix로 붙여서 쿼리함 => "cart.gmarket.co.kr"에 대한 IP 주소 "183.111.150.200"이 리턴됨

$ ``cat` `/etc/resolv``.conf``search sample.co.kr``nameserver 172.30.212.253``nameserver 172.30.212.254` `$ ``nslookup` `cart``Server:   172.30.212.253``Address:  172.30.212.253``#53` `Non-authoritative answer:``Name:  cart.gmarket.co.kr``Address: 183.111.150.200

-다른 예제로 "cart.gmarket"로 검색

1)dots(".")의 개수가 "ndots"의 설정 값인 "1"과 동일하므로 as-is 주소로 질의함.

2)그 결과 없는 주소라는 결과가 나옴

$ ``nslookup` `cart.gmarket``Server:   172.30.212.253``Address:  172.30.212.253``#53` `** server can't ``find` `cart.gmarket: NXDOMAIN

4.nameserver

-도메인을 검색할 네임 서버의 주소를 지정

-최대 3개의 네임서버를 지정 할 수 있음. 첫 번째 네임서버가 응답하지 않으면 다음 서버에 질의를 함

$ ``cat` `/etc/resolv``.conf``...``nameserver 10.x.x.1``nameserver 10.x.x.2``nameserver 8.8.8.8` `$ ``nslookup` `example.com``Server: 10.x.x.1``Address: 10.x.x.1``#53``Name: example.com``Address: x.x.x.x

호스트 테이블(/etc/hosts)


DNS를 거치지 않고 도메인에 대한 IP를 바로 가져올 수 있도록 지정하는 파일

$ ``cat` `/etc/hosts``172.30.212.32 mirror.centos.org mirrorlist.centos.org``...
반응형

'Ops > System' 카테고리의 다른 글

API G/W 개념 및 조사  (0) 2022.07.12
FQDN(Fully Qualified Domain Name)  (0) 2021.11.30
Linux 네트워크 본딩  (0) 2020.06.12

관련글 더보기

댓글 영역