내 IP주소에 이름을 붙이는법

wonsik·2022년 6월 14일
2

컴퓨터 네트워크

목록 보기
9/9

본 포스트는 Domain Name System - 생활코딩을 공부하며 배운 내용을 정리하는 글입니다.

DNS(Domain Name System)

상대방과 통신을 하기 위해선 상대방의 주소를 알고 있어야한다. 실생활에서도 상대방과 통화를 위해서는 전화번호를 알아야 하는 것과 같은 맥락이다. 우리는 전화번호부에 번호를 저장할 때 상대방의 이름을 붙인다. 보통 이름은 외우기 쉽고 그 사람을 나타내는 대표적인 식별자의 역할을 하기 때문이다. DNS도 이와 비슷하게 주소에 이름을 붙여 사용하기 편하게 했다. 또한 DNS를 사용하면 IP주소가 바뀌는 상황에도 우리는 이름만 알고 있으면 되기 때문에 서버를 운영하는 사람의 입장에서도 편리하다.

기존에는 host filename을 통해 서버에 연결했다. 쉽게 IP 주소번호부와 같은 것이다. 이는 각 OS단에서 수정이 가능하다.(관리자 권한 필요) 이를 이용하면 로컬 컴퓨터에서 통신할 때 해당 이름과 매핑된 주소로 이동한다. Host file은 굉장히 큰 혁신이었지만 사용자의 파일을 변조하여 해킹하기 쉽다는 단점이 존재했다.(이는 백신과 https 등으로 해결이 가능) 또한 서버의 IP주소가 바뀌게 되면 내 파일에 매핑된 주소는 원하는 서버로 갈 수 없게된다.

이러한 문제를 해결하기 위하여 믿을만한 단체인 Stanford Research Institute에서 직접 host file을 관리했다. 사용자는 host file을 다운받아 붙여쓰기하여 사용했다. 하지만 여전히 수작업으로 인한 비용과 시간에 대한 문제, 기술의 발전으로 인한 많은 웹 사이트의 등장으로 host file이 점점 커지는 문제, 사용자가 계속 file을 update 해야하는 문제가 있다.

이를 해결하기 위해 DNS server가 생겨나게 되었다.

Local 컴퓨터에서 주소창에 특정 사이트의 Domain name을 기입하면 OS에 존재하는 host file을 우선 탐색하고 없으면 DNS server로 이동한다.

DNS server

초기 DNS server는 ISP(Internet Service Provider)에서 자동으로 정해준다. ISP는 SKT, KT, LG U+와 같은 통신업체이다. 그렇다면 DNS server는 ISP에서 지정해준 1개 밖에 없는걸까? 정답은 아니다. 세상엔 많은 DNS server가 있으며 서버마다 접속속도가 다르며 DNS server에서 내 기록을 확인가능한지의 유무도 다르다. 따라서 기존보다 빠르고 안전한 DNS server를 찾았다면 교체하면 된다.

DNS server의 기능에는 크게 두 가지가 있는데 Domain에 대한 IP를 기억하는 것과 해당 이름을 요청 받으면 IP를 반환하는 것이다. 즉 등록과 응답기능을 수행한다.

만약 우리가 주소창에 blog.example.com이라는 url을 입력하면 실제로는 blog.example.com.이 입력되는 것이다. 즉 맨 마지막에 .이 추가된다. 이 .은 DNS의 Root로 가장 먼저 요청되는 DNS server이다. 앞에서 DNS server에 보내는 것은 알았는데 가장 먼저 요청되는 DNS server라는 것은 또 다른 DNS server로 보내는 건가?라고 생각이 들 것이다. 맞다. 위 경우에서는 blog는 sub level, example은 second level, com은 top level로 총 4개의 DNS server가 존재하는 것이다.

쉽게 생각하면 하나의 DNS서버에서 모든 사이트를 담기에는 크기가 부족하고 비효율적이다. 따라서 계층을 나누어 Top-down 방식으로 IP주소를 찾게 된다.

DNS register

DNS을 DNS server에 등록하는 절차는 행정적인 내용이기 때문에 간단히 설명하려고 한다. 자세한 내용은 생활코딩 사이트에서 확인할 수 있다.

DNS에서 가장 큰 단체인 ICANN은 root name server를 보유하고 있다. 이 아래의 Top-level domain은 Registry 등록소에서 담당한다. DNS를 등록하려면 DNS name server를 자체적으로 보유하고 있어야 해당 IP주소를 반환할 수 있는데 회사입장에서 DNS를 위해 서버를 만들기에는 무리가 있고 직접 DNS에 관련된 일을 하기에는 번거러움이 많아 이를 Registry 등록 대행자를 통해 해결한다.

nslookup

터미널에서 nslookup 명령어를 통해 DNS의 네임 서버IP 주소를 알아낼 수 있다.

터미널 상에 nslookup example.com이라고 입력하면 맨 위에 DNS server의 IP주소가 응답한다. 그 아래에 example.com에 대한 Name과 IP address가 나오는데 Non-authoritate answer가 화면상에 나타난다. 이는 IP address가 진짜 존재하는 서버를 통해서 가저온 결과가 아니라는 뜻이다.

우리가 주소를 입력할 때마다 DNS server에 접근하면 속도가 느리고 비효율적이다. 따라서 cache를 사용하여 응답하게 되는데 이때 권한이 없는 서버에서 보내는 것이기 때문에 Non-authoritat answer라고 나오게 되는 것이다.

nslookup -type = ns example.com이라고 입력하면 example.com이 있는 name server의 정보가 나온다. 네임 서버는 서버의 주소를 이름으로 나타낸 것으로 위 그림에서 a.ns.ga와 같은 것이다. 이 때 두 개의 네임 서버가 나오는데 이는 한 개의 네임 서버가 죽는 것을 대비하여 만든 것이다.

nslookup example.com a.iana-server.net 로 뒤에 네임 서버까지 입력하면 DNS를 거치지 않고 바로 Registry 등록 대행자 서버로 이동하여 직접 name server에 조회하는 Authoritative answer이 된다.

DNS record

DNS record는 DNS를 어떤 정보로 매핑할 것인지에 대한 알림표 같은 것이다.

A는 일반적으로 알고 있는 IP 주소이다.
NS는 네임 서버이다.
CNAME은 별명과 같은 의미로 어떠한 도메인 네임이 들어오면 다른 네임으로 바꿔주는 것이다. 이는 여러 도메인이 하나를 표현할 때 사용한다.

profile
새로운 기술을 배우는 것을 좋아하는 엔지니어입니다!

0개의 댓글