LINUX/생활코딩 강의 정리

[생활코딩 리눅스 강의 정리] 섹션 10. 도메인

은재정 2022. 8. 27. 20:37

해당 글은 생활 코딩 이고잉님의 강의를 듣고 일부만을 정리한 글입니다.


도메인 기본 개념

우리는 구글, 네이버 등의 웹 사이트에 접속하기 위해서 ip 주소가 필요하지만 실제로는 도메인(google.com, naver.com)으로 웹 사이트에 접속할 수 있다. 이는 DNS 서버가 도메인에 상응하는 ip 주소를 보내주기 때문이다.

 

Hosts 파일

DNS 서버가 등장하기 전에는 각 컴퓨터마다 hosts 파일이 존재했다. Hosts 파일은 도메인 이름과 그에 상응하는 ip 주소를 가지고 있는 파일이다. 리눅스에서는 /etc/hosts 파일이 존재하면 DNS 서버에 쿼리를 날리지 않고 그 파일을 보고 ip 주소를 가져온다.

 

 

위의 파일에서 127.0.0.1 google.com 행을 추가후 elinks google.com 명령을 입력하면 구글 웹 사이트가 뜨는 것이 아니라 내 컴퓨터에서 실행중인 웹 서버의 홈이 보여진다. 따라서, 도메인 이름에 해당하는 ip 주소를 마음대로 조작할 수 있다는 문제점이 존재하며 이는 해커/크래커의 집중 공격 대상이 된다.

 

/etc/hosts 파일을 활용하는 방법으로는 서버에 문제가 생겨서 수정해야 할 때 /etc/hosts 파일을 수정함으로써 개발자의 컴퓨터에서만 수정 사항이 보이고 수정이 완료될 때까지는 현재 웹 서버로 가동되게 하는 등의 활용 방안이 있다.

 

도메인 구입

/etc/resolve.conf 파일에는 DNS 서버의 ip 주소가 저장되어 있다. 사용자들로 하여금 내 웹 사이트에 접속할 수 있게 하기 위해서는 DNS 서버에 도메인 이름과 ip 주소가 등록되어 있어야 하고 이는 구입 과정을 거쳐야 한다. 자세한 내용은 https://en.wikipedia.org/wiki/Domain_name 링크를 참조한다. 내가 사용하고 싶은 도메인 이름이 사용 가능한지 살펴보기 위해서는 https://www.freenom.com/en/index.html?lang=en에 검색을 해본다. 이때, ip 주소를 등록할 때는 사설 ip가 아닌 공용 ip 주소를 등록한다.

 

host 명령은 도메인 이름에 상응하는 ip 주소를 알려준다.

 

 

서브 도메인

서브 도메인이란 다른 도메인의 일부인 도메인으로써, 하나의 도메인으로 여러 웹 사이트를 운영할 수 있게 한다. 예를 들어 jeni.com 이라는 도메인을 admin.jeni.com, blog.jeni.com 이라는 여러 서브 도메인으로 구성할 수 있다. 일반적으로 도메인 이름 앞에 prefix를 붙이는 식으로 구현되어 있다.

 

DNS의 동작 원리

DNS 서버를 하나로만 구성한다면 단일장애점이 되기 때문에 DNS 서버는 여러 개로 구성되어 있는데, 계층적인 구조를 가지고 있다.

 

 

다음은 naver.com의 ip 주소를 쿼리하는 과정이다.

 

 

  1. 클라이언트는 root DNS 서버에게 쿼리를 날린다.
  2. Root DNS 서버는 naver.com의 ip 주소를 모르기 때문에 TLD(Top-Level Domain) 서버의 ip 주소를 알려준다.
  3. 클라이언트는 다시 TLD 서버에게 쿼리를 날린다.
  4. TLD 서버는 naver.com의 ip 주소를 모르므로 authoritative DNS 서버의 주소를 알려준다.
  5. 클라이언트는 authoritative DNS 서버에 쿼리를 날린다.
  6. Authoritative DNS 서버가 응답한다.