[DNS] DNS 개념 ~ DNS record

EMMA·2022년 2월 25일
0

이전에도 블로그에 간단하게 DNS와 IP 등에 대해 간단하게 정리하고 넘어갔었다. (http웹 이론에서도 이 부분이 잠깐 등장하기도 하고)

생활코딩 - Domain Name System 강의 덕분에 DNS(domain name system)에 대해서 좀 더 공부했고, domain name과 ip가 서로 매칭되고 통신하는 과정을 이해할 수 있었다.


0

before DNS
Stanford research institute를 통해 모든 hosts 파일이 일괄적으로, 수작업으로 관리되었음
그러다보니, 변경된 hosts 파일을 받기 전까진 각각의 컴퓨터는 해당 정보를 받을 수 없었음

게다가 인터넷에 접속된 모든 컴퓨터 주소가 hosts 파일 하나에 다 담기니, 당연히 한계 발생
-> Domain Name System, DNS가 대안으로 등장한 것


1

Domain Name System
host란, 인터넷에 연결되어 있는 컴퓨터/장치를 의미함
인터넷에 참여하는 모든 컴퓨터는 ip주소를 갖고 있고, 이를 바탕으로 통신하고 있음
그런데 ip 주소의 단점은, 기억하기 어렵다는 것(ipv4:4바이트, 즉 32비트 길이)
그래서 ip주소와 domain name을 매칭해서, domain name을 알면 해당 주소로 연결 해주는 것이 DNS (참고: codeOn 영상)

이미지 출처: 생활코딩

그리고 모든 운영체제는 hosts 라는 파일을 가지며,
여기엔 도메인 이름 & ip주소가 저장되어 있음. 또한 이 파일을 통해 DNS를 통하지 않고도 각 ip에 이름을 부여할 수 있음
(hosts: 운영체제가 도메인 이름을 ip 주소에 매핑해서 기록하는 컴퓨터 파일)
hosts 파일의 위치는 운영체제 별로 다름
(macOS: terminal, sudu nano /etc/hosts > 컴퓨터 pw 입력 > ip주소 host 이름 입력)


2

security
example.com 이라는 사이트가 있다고 가정해보자.
문제는, 외부인이 hosts파일을 몰래 변조해서 example.com에 지정된 ip 주소를 다른 ip로 바꿀 수 있다는 것. 그만큼 hosts 파일은 보안에 취약함.
(백신을 사용해서 hosts 파일의 변조를 막아야 함)

"https://", 즉 http 뒤에 s가 붙으면 변조를 알아낼 수 있고 경고를 함
그래서 더욱 안전하고 fishing을 예방할 수 있음
https의 s는 secure socket layer의 약자

3

DNS server의 동작 매커니즘
내 컴퓨터를 Router/wifi에 연결하면, DNS server의 ip주소가 자동으로 셋팅이 됨
(DHCP - domain host configuration protocol를 통해)

특정 ip 주소 - example.com 을 매칭하려면, DNS server에 요청해야 함
먼저 example.com 이라고 검색하면, 컴퓨터는 hosts파일을 먼저 뒤져보고,
없으면 DNS server에 요청함. DNS server는 도메인 이름의 ip주소를 보내줌

이 후 ip주소가 변경이 되어도, 모든 내용이 DNS server에 저장되기 때문에
클라이언트는 DNS server를 사용하는 한 업데이트가 반영된 내용을 바로 셋팅할 수 있음

정리하면, DNS server의 역할은 2가지
1) server 컴퓨터가 도메인 이름과 ip주소를 제출하면 등록하는 것
2) client 컴퓨터가 도메인 이름을 물어보면 알려주는 것


4

public DNS
개인 컴퓨터, 스마트폰 등은 인터넷에 연결되면, 가입한 ISP에서 셋팅해준 DNS server를 사용하게 되어 있음

그런데 해당 서버의 성능이 느리거나 프라이버시 때문에 사용하기 원치 않을 경우,
e.g.) google DNS server의 ip주소를 설정해서 DNS server를 바꿀 수 있음

*ISP: Internet Service Provider, 한국의 KT, SK 브로드밴드 등


5

DNS internal

도메인 이름은 아래와 같이 구성되어 있는데, 각 파트를 관리하는 domain server가 존재함

blog(sub).example(second-level).com(top-level).(root, 생략가능)

특정 도메인 이름을 요청하면, Root name server > Top-level > Second-level > Sub
순으로 토스해서 해당하는 ip주소를 찾아 응답함

6

DNS register 과정
DNS 기본 통신 매커니즘을 다시 살펴 보면, client 컴퓨터는 인터넷에 연결되고 이 때 DNS server의 주소가 셋팅됨 (아래 이미지 맨 밑 부분 참고)

client 컴퓨터가 example.com을 웹브라우저에서 입력하면,
DNS server는 root name server에 요청> root name server는 top-level domain에 요청 > top-level은 authoritative name server에 요청 > 매칭되어 있는 ip주소 반환하는 것

DNS server는 root name server/top-level domain 등의 주소를 알고 있음

이미지 출처: 생활코딩

그렇다면root name server/top-level domain 등에는 도메인 이름/ip 주소가 어떻게 등록되는가?

1) ICANN(비영리단체)
: 전세계 ip주소 관리, Root name server 관리자
: 주소는 a.root-servers.net (이는 a~m까지, 더 세부적으로 나뉘어 전세계에 흩어져 root namer server 컴퓨터로 존재)
: top-level domain server의 주소를 기억하고 있음, 따라서 .com 이라는
top-level domain은 어떤 top-level domain이 관리하고 있는지 알 수 있음

2)registry (등록소)
: .com, .net 등 과 같은 top-level domain 관리
: a.gtld-servers.net 라는 주소가 있고 이 역시 전세계에 흩어져 있음

3)registrar (등록대행자)
: authoritative name server를 제공함
(authoritative name server는 개인이 마련하는 것도 가능)

도메인/ip 주소 등록 과정은 아래와 같음
1) 등록자는 등록대행자를 통해 도메인 이름/ip주소를 등록하고 소유권을 가짐
2) 등록자는 example.com NS(name server) a.iana-servers.net라고 등록대행자를 통해 등록소에 전달
3) 그 후 authroitative name server에게 example.com A(address) 93.184.216.34 전달
*각 도메인서버/네임서버는 바로 이 record type(NS, A 등)을 가지고 기억하고 관리하는 것임


7

DNS record &CNAME
DNS record type
: A, NS 등 존재
: CNAME 또한 DNS record 중 하나 (canonical name record, 별명 같은 것)
A 즉 ip주소로 갈 수 있도록 (리다이렉팅처럼) 안내해줌

8

nslookup
terminal > client에 연결된 DNS server는 root name server/top-level domain 등의 주소를 알고 있음 > dns server & example.com의 ip주소가 나옴
non-authoritative answer란,
원래는 example.com의 권한은 authoritative name server에서 응답하지만 그게 아니라 cache에서 찾아서 응답해준 경우임

내 데스크탑 terminal에서 직접 nslookup을 사용해 봤다

nslookup -type=ns example.com
: name server의 주소를 알려줌
(a.iana-servers.net 등 2개 알려주는데 나머지 하나는 alternative address)

DNS server를 통하지 않고 name server에 직접 접속해서 물어보려면
nslookup (-type=a, 생략 가능) example.com a.iana-servers.net
: authoritative name server의 주소를 알려줌





출처: 생활코딩 WEB2 - Domain Name System

profile
예비 개발자의 기술 블로그 | explore, explore and explore

0개의 댓글