Lecture | Domain Name System

SURI·2021년 9월 6일

🚶‍♂️ 들어가며


인터넷에 연결된 한 대 한 대를 호스트라고 이야기 한다. 통신을 하기 위해 서로의 주소가 필요하고 그것을 ip주소라고 한다. ip주소를 가지고 호스트와 호스트를 연결하고 통신을 할 수 있게 되었다. 하지만 사람들은 한계를 느끼게 된다.

ip주소는 숫자로 되어 있어 기억하기가 어렵고, DNS(Domain Name System)이 만들어진다. 핵심은 DNS Server다. 이 서버에는 도메인 네임이 저장되어 있다. 웹브라우저에 도메인 이름을 입력하면, 운영체제는 DNS Server에 접속해서 도메인 네임에 대응하는 ip 주소를 물어본다. 그리고 DNS Server의 응답에 따라 ip 주소에 접속하게 된다.

우리의 컴퓨터에 도메인 네임 시스템을 이용해서 이름을 붙여주자.

👩‍🏫


1. IP주소와 hosts

도메인 대신에 쓸 수 있는 방법을 준비운동 차원으로 살펴본다.

두 대의 컴퓨터가 있다. 인터넷을 통해 통신을 하기 위해선 무엇이 필요할까? ip 주소다. 인터넷에 참여하는 모든 컴퓨터들을 ip주소가 있어야 요청/응답을 할 수 있다. 네트워크에 연결된 컴퓨터 장치를 host라고 한다.

hosts 파일

하지만 숫자는 외우기 까다롭다. 이름이 있고 그걸 입력하면 대응하는 ip주소로 접속하면 얼마나 좋을까? 가능하다. 운영체제마다 위치는 다르지만 hosts라는 파일이 있고, 그 파일에 이름과 아이피 주소를 적어두면 이름을 입력해서 대응하는 ip주소에 접속할 수 있다.

DNS를 통하지 않고 자주 사용하는 사이트나 나만의 사이트에 호스트에 이름을 부여할 수 있게 되는 것이다. 이게 바로 hosts 파일의 역할이다.

host 파일 위치

🔎 window hosts file location / hosts wikipedia

  1. hosts는 보안에 취약한 파일이라 관리자 권한으로만 접속할 수 있다.
  2. 메모장을 관리자 권한으로 실행해서 hosts 파일을 찾아서 연다. 보이지 않으면 모든 파일을 선택한다.
  3. (웹서버 프로그램을 설치했고, port-forwarding을 해서 public ip address로 접속할 수 있는 상태다.)
  4. ip주소 (eg.web1.com)를 입력하고 저장한다.
  5. 실제 내가 해당 도메인 이름을 갖는 것은 아니지만, 이 컴퓨터에 한해서는 우선권을 갖게 된다.

오, 정말 마치 내 컴퓨터 안에서 도메인 이름을 가진 것처럼 접속이 되는 걸 볼 수 있었다.

2. 도메인 이름과 보안

악의적인 사람이 나의 hosts 파일을 변경해서 내가 자주 이용하는 사이트 이름 아래에 ip주소를 바꿔치기 하는 경우. (네이버로 실험을 해봤는데, 나는 안되는 것 같다) http로 접속하면 사이트가 변조되어도 알 수 없다. 하지만 https는 보안이 되어있다.

3. before DNS

DNS 이전의 인터넷은 어떻게 동작했을까?

hosts는 개인적으로 운영한 ip주소부다. DNS 이전에는 Stanford Research Institute라는 신뢰할만한 기관에서 hosts 파일을 관리했었다. 하지만 여러가지 문제가 생긴다.

  • hosts 파일 수동 업데이트 문제
  • SRI가 수작업을 통해 hosts 파일을 갱신했기 때문에, 시간과 비용 문제
  • 하나의 hosts 파일에 모든 인터넷 ip가 담긴다면 도달하는 한계

이제 새로운 고민이 시작된다. 1983년, SRI에서 호스트 네임에 대한 아이피 주소를 담당하던 Jon Paul이 새로운 대안으로 DNS를 만들어 내게 된다.

4. DNS의 원리


DNS Server에 ip주소가 이것이고, 갖고 싶은 이름(example.com)을 요청한다. 서버는 요청을 받고 이름과 ip주소를 기억한다.

내 컴퓨터가 인터넷에 접속을 하는 순간에 어떤 메커니즘으로 DNS Server의 ip주소가 자동으로 세팅이 된다. 어떻게? DHCP를 통해서 그렇게 된다. 웹브라우저에 example.com 을 입력하면,

  1. hosts 파일을 먼저 찾는다.
  2. 없다면 그 다음에 DNS Server에 접속해서 해당 이름의 ip주소를 물어본다.
  3. DNS Server는 자신이 기억한 아이피 주소를 응답해준다.

SRI에서 사람이 수동으로 작업을 할 때와 서버로 자동화 된 걸 비교하면 엄청난 편의성의 증대다.

5. Public DNS

4번의 과정을 위해서는 DNS Server의 ip주소를 알아야하지 않겠나? 컴퓨터를 인터넷에 연결하는 순간에 가입한 통신사에서 나의 컴퓨터에 어떤 DNS Server의 ip를 세팅을 해놓는다. 하지만 통신사의 DNS Server가 아닌, 다른 DNS Server를 쓰고 싶다면? 성능과 보안의 문제로?

🔎 public DNS Server

컴퓨터의 네트워크 설정으로 들어가서 DNS 설정을 8.8.8.8로 바꾸면 구글의 DNS Server에 ip주소를 물어본다.

1.1.1.1 Public DNS
Fast. Free. Private.
Your Internet service provider can see every site and app you use—even if they’re encrypted. Some providers even sell this data, or use it to target you with ads.
1.1.1.1 with WARP prevents anyone from snooping on you by encrypting more of the traffic leaving your device.
We believe privacy is a right. We won't sell your data, ever.

ISP가 내가 방문하는 사이트를 볼 수 있고, 정보를 판매하거나 광고 대상으로 삼을 수 있다는 내용이다. Average ISP에 비해서 1/6정도 빠르구나. Google public DNS보다도 빠르다. 그리고 Privacy First를 모토로 세운다.

⚡ DNS 변경을 한 번 해보고 싶어졌다.

인터넷 프로토콜 버전 4 > 속성

6. DNS 구조

DNS Server 하는 일

  • 서버로 사용할 컴퓨터가 이름과 ip를 제출해서 등록하는 것
  • 클라이언트로 사용하는 컴퓨터가 이름을 물어보면 ip 주소를 알려주는 것

DNS Server는 전세계에 한 대만 있는걸까? 수천 - 수만대가 분산되어 협력한다.

  • 각각의 부분들을 담당하는 서버 컴퓨터가 존재한다. 기능은 똑같지만 전담하는 파트가 다르다.
  • 상위가 직속하는 하위를 알고 있어야 한다. 즉, 루트 도메인을 담당하는 서버는 top-level 도메인을 담당하는 서버들의 목록을 알고 있어야 한다.
  • ip주소는 sub가 알고 있는데, 수만-수십만대의 name server에서 단박에 찾을 수는 없고 알아가는 과정이 필요하다.
  • 모든 컴퓨터는 최소한 Root name server의 ip주소가 무엇인지는 알고 있어야 한다. com으로 끝나는 도메인이네? com을 전담하는 name server들의 아이피 주소를 알려준다. 이렇게 계층적으로 점차 내려간다.

위의 강의에서 이야기했던 DHCP에 의해 세팅되는 DNS Server의 ip주소는 그럼 Root name server의 ip주소인걸까? 다른 것 같다. 7번 강의에서 그에 대한 답이 나온다.

7. 도메인 이름 등록 과정과 원리

기술적이라기보다 행정적인 것에 가깝고, 자동화하는 기술이 뒷받침된 것 뿐이다.

내 컴퓨터를 서버로 사용하고 싶고, 도메인 네임을 부여하고 싶은 상황이다.

ICANN 비영리 단체
전세계의 ip주소를 관리하고 Root name server에 대한 관리자다. 인터넷의 체계의 관리자라고 할 수 있다.

13개의 Root name server가... 수백대의 컴퓨터가 전세계에 흩어져서

profile
Every step to become a better version of me 🚶‍♂️ 블로그 이사중

0개의 댓글