DNS란 ?? +도메인 , ARecord ,CName

김원종·2023년 6월 30일

DNS란 무엇인가

DNS는 Domain Name System의 약자이다.
즉 도메인과 관련된 시스템이다.

도메인은 주소같은 것이다. 웹 사이트 주소
예를들어 www.test.kr 이런 것을 도메인이라고 하는것이다
이부분에서 실제 도메인은 test.kr 이다.

그렇다면 www 는 무엇일까??
이 부분은 hostname 이라고 불린다.www외에도 도메인 앞에 점이랑 같이 붙을수있다 . ex ) A1.test.kr /A2.test.kr

사실 IT업계에서는 도메인이라는 용어가 다른 의미로도 많이 사용되긴하지만 오늘의 블로그에서 다룰 내용은 test.kr 이라는 부분이다.

그렇다면 도메인은 왜 존재할까?
우리가 어딘가 웹사이트에 접속하려고 할때 내 PC에 있는 브라우저가 그 사이트를 제공하는 서버에 요청을 하고 데이터를 받아와야 하는데 그러기 위헤서는 그 서버의 IP주소를 알아야 한다.
마치 누군가에게 연락하기 위해서 전화번호를 아는것 처럼 말이다.

하지만 우리가 IP주소를 사이트 마다 다 외울수 있을까? 사실상 힘든일다. 그래서 마치 전화번호부 같은것을 만들어 외우기 쉬운 주소들로 접속할수 있게 한다.

그렇다면 이런 전화번호부는 어디에 있는걸까??
이런 정보들이 저장되어 있는 곳이 바로 DNS이다.

이처럼 다층적으로 구성된 네트워크에 분산되어서 도메인 정보들이 저장되고 조회가 된다.
흔히 쓰이는 예제로 보자

만약 내 PC에서 www.naver.com 에 접속하려 할때 현재 내 브라우저는 그 서버의 IP를 모른다.

브라우저는 먼저 PC에 설정된 로컬 DNS서버에 해당 도메인과 호스트명의 IP를 갖고 잇는지 물어본다.DNS서버는 그냥 네임서버 라고 불리기도 한다. 이 로컬 DNS 서버는 보통 통신사마다 지정된 곳이 있는데 사용자가 다른 곳으로 바꿀 수도 있다!
아므튼 여기에는 이 주소의 정보가 이미 캐싱되어 있을수도 있고 없을수도 잇다. 만약 있다면 바로 반환을 할거고 만약 없다면 로컬 DNS는 이 Root DNS 서버에다가 이 주소에 해당하는 IP를 어디서 찾을수 있는지 물어본다.
여기서 Root는 마치 대장 같은것일까? 딱 한개만 존재할까??

루트 DNS서버 자체는 전세계에 13개 있다. 한국에는 없지만 미러 서버가 이를 대신한다. 이부분은 따로 찾아보도록 하자.

이 루트 DNS 서버는 응답으로 .com으로 끝나는 도메인들을 담당하는 서버의 IP주소를 반환한다. 로컬 DNS서버는 이 주소를 받아들고 .com 담당 서버를 찾아간다. 이 .com 담당 서버는 이번에 naver.com의 도메인 정보를 가진 DNS서버의 IP주소를 반환한다.

그 주소를 보고 마지막으로 찾아가보면 naver.com의 여러 호스트 네임별 IP 주소들이 있다. 이 곳으로부터 www에 해당하는 IP주소를 얻어낸 다음 브라우조에게 반환하고 비로소 www.naver.com의 서버로 접속하게 되는거다.

이런 DNS서버들에 문제가 발생하면 인터넷은 먹통이 된다.
정확하게는 전화번호부를 사용할수 없는 거기에 도메인을 사용한 접속만 불가능해지는거지만 IP 주소로 직접 접속하는걸 막아놓은 사이트들은 아예 접속이 안될것이다. 그리고 이 DNS라는 시스템은 해커들의 공격 대상이 돤다.

예를 들어 사용자 컴퓨터가 DNS에 IP를 물어보는거를 중간에 해커가 가로채서 자신들이 만들어둔 엉뚱한 가짜 사이트 IP를 알려줘 그곳으로 접속하게끔 유도를 할수가 있다. 즉 전화번호부를 조작해서 보이스피싱하는 번호로 걸게 만드는거다.이런걸 DNS 스푸핑(spoofing) 이라고 한다.

로컬 DNS서버는 일반적으로 통신사 것으로 세팅되어있는데 이걸 수정하는 건, 정부에서 막아놓은 사이트에 접속하거나 ( 국가검열받은 전화번호부 대신 외국걸 사용한다!)또는 특정 서비스를 보다 빠르게 이용하기 위함이다.

예를 들어 윈도우에서 이처럼 기본 DNS를 구글 DNS서버 주소인 8.8.8.8로 설정하면 유튜브 등 구글에서 제공하는 서비스를 보다 빠르고 쾌적하게 이용할수 있다. 하지만 다른 서비스들은 느려질수 있으니 조심해야 한다.
즉 위의 화면이 내가 쓰는 전화번호부의 주소인것이다.이곳에 엉뚱한 값을 넣어버리면 인터넷을 못쓰게 되는것이다. 적어도 도메인으로는 말이다.

만약 내가 웹사이틀 만들게 되었을때는 도메인이라는걸 가져야하는데 뭐를 어떻게 해야하나??


도메인을 구입할수있는 서비스는 여러개가 있다. 후이즈나 가비아 같은 국내 서비스도 여러개 있고 GoDaddy등 해외 업체도 있다.

그러면 나중에 만약 가비아에서 내 주소로 하고 싶은 test1을 검색하면 이렇게 뒤에 .com이나 co.kr등등 여러가지 옵션들이 가격이랑 같이 뜨게 되는것이다.
도메인 구매 사이트마다 기간별 가격이 다 다르니 조건이 적당한 곳에서 구매하면 된다.

그렇게해서 도메인을 소유하게 되면

이 레벨에 해당하는 네임서버 test1을 담당하는 DNS서버에 운영하는 서버의 IP를 호스트 네임별로 등록하면 되는거다.

이러한 네임서버는 도메인 구매 사이트에서 직접 제공하기도 하고
다른 곳에서 제공하는 네임서버를 쓰기도 하는데 만약 네임서버도 같은 가비아걸로 사용하면 가비아의 자체 DNS 설정 페이지에서 해당 도메인을 우리의 서비스에 연결해주면 된다.

가비아에서는 도메인만 구매하고 네임서버는 다른 업체 것을 사용하게 되면 가비아에서는 그 네임서버의 주소만 적어주면 되는것이다.

그런데 가비아 같은곳에서 도메인을 내 서버 IP에 연결을 하려할때 예를 들어 아래는 가비아 말고 호스팅케이알 화면인데


ARecord랑 CNAME 이런 방식들 중 하나에서 고르라고 업체마다 그러는데 도대체 ARecord 와 CNAME 은 뭘까??

ARecord는 간단히 말해 도메인을 서버의 IP로 직접 연결하는것이다.이 방식은 IP로의 직통연결이라 접속이 빠르다는 장점이 있다.
CNAME 은 도메인을 별명과 연결하는것이다. 별명?은 뭘까??
IP가 유동적으로 변하는 서버의 경우 그 바뀐 IP들에 일정하게 연결된 다른 도메인 즉 canonical name 을 적는다는 것이다.

AWS나 Firebase같은것을 쓸때 사용될텐데 AWS나 Firebase에서 서비스나 인스턴스 같은걸 만들면

이런 이상한 주소를 사용하라고 주는데 이것이 서버 IP가 수시로 바뀌어서 그런것이다.

이걸 도메인에 연결하는게 CNAME 방식이다. IP가 유동적인 서버를 사용하는데 도움은 되지만 대신 한 군데를 더 거친다는 단점이 있다.

profile
개린이

0개의 댓글