DNS
Name Resolution
- 우리가 브라우저에 https://www.google.com 을 입력하고 구글에 접속하는 것이 익숙하지, 구글의 IP주소를 입력하고 접속하는 것이 익숙하지는 않다.
- 실제로는 https://www.google.com 이라고 입력해도 이를 구글의 IP주소로 변환해주기 때문이다.
- 이처럼 이름 -> IP 주소로 변환하는 과정을 Name Resolution이라고 한다.
시스템 내부 설정(/etc/hosts)
- 각 Linux 시스템에는
/etc/hosts파일이 존재한다. - 해당 파을에 이름과 IP를 직접 매핑하여 해당 시스템 내부에서의 Name Resolution이 가능하다.
- 다만, 해당 시스템 내부에서만 유효하다.
예시
sudo nano /etc/hosts
172.17.0.64 web
DNS 서버
개념
- 위처럼
/etc/hosts파일을 수정하는 식의 방식은 여러 한계점을 가진다.- 서버 수가 많아질수록 관리 불가능
- IP 변경 시 모든 서버의 hosts 파일을 수정해야 함
- 이를 해결하기 위해 중앙 집중식 방법인 'DNS 서버'를 사용한다.
- DNS 서버는 이름 -> IP 주소를 중앙에서 관리하는 서버이다.
- 모든 시스템은 DNS 서버에 이러한 매핑 관계를 질문한다.
DNS 서버 설정
nano /etc/resolv.conf
nameserver 127.0.0.53
nameserver 8.8.8.8
options edns0
nameserver: 질의할 DNS 서버의 IP- 위에서부터 순서대로 질의한다.
- 127.0.0.53은 내부 DNS 서버 리졸버이다.
- 이 세상의 모든 도메인네임들을 내부 DNS서버에 가지고 있지는 않으므로 내부 DNS서버에 없는 도메인 네임을 찾기위해 Public DNS서버를 등록한다.
- 주로 1.1.1.1(CloudFlare) 혹은 8.8.8.8(Google) 등을 사용한다.
- cf) 로컬 시스템에서는 한번 물어본 도메인 주소를 캐시해두었다가, 다음에 물어볼 때는 외부 DNS 서버에 나가지 않고 바로 답해줌으로써 속도를 빠르게한다.
- cf)
/etc/resolv.conf은 재부팅 후 초기화될 수 있으므로netplan이나resolvconf패키지를 통해 수정해야 영구 적용
Search Domain 설정
- 예를 들어, 사내에서 아래와 같은 도메인을 사용한다고 가정하자.
hr.mycompany.comdev.mycompany.comweb.mycompany.com
- 매번 모든 주소를 치기 귀찮아서
hr,dev,web만 쳐도 알아서 찾아가게 만들고 싶을 때 이 설정을 사용한다.
nano /etc/resolv.conf
search mycompany.com
- 위처럼 설정하면 아래와 같은 과정을 거친다.
- 사용자가
ping web을 입력한다. - 컴퓨터는 우선
web을 찾아본다. - 없으니
search에 등록된 도메인을 붙여서 찾아본다. (web.mycompany.com) - 연결 성공
- 사용자가
- 여러개 등록도 가능하다. (예:
search mycompany.com yourcompany.com)
우선 순위 설정 (로컬 설정 vs DNS서버)
nano /etc/nsswitch.conf
hosts: files dns
- 설정 파일을 열어보면 위처럼 나올 것이다.
- 위 문구의 의미는
files-/etc/hosts먼저 확인dns- 없으면 DNS 서버에 질의
- 순서를 바꾸면 우선 순위의 순서가 바뀐다.
기타
도메인 이름 구조
- 큰 범위가 오른쪽, 왼쪽으로 갈 수록 작은 범위
- 예:
www.google.com
| 구성 요소 | 설명 |
|---|---|
. | Root |
com | Top Level Domain |
google | Domain |
www | Subdomain |
DNS Record 타입
| 타입 | 설명 |
|---|---|
| A | IPv4 주소 ↔ 이름 |
| AAAA | IPv6 주소 ↔ 이름 |
| CNAME | 이름 ↔ 이름 (별칭) |
DNS 테스트 도구 (nslookup, dig)
nslookup
nslookup www.google.com
- DNS 서버 기준 결과 확인
/etc/hosts무시
dig
dig www.google.com
- 더 상세한 DNS 정보 출력
- TTL, 레코드 타입 등 확인 가능
/etc/hosts무시
경고
ping:/etc/hosts+ DNS 모두 사용nslookup,dig: DNS 서버만 조회