본문 바로가기
카테고리 없음

[Linux] DNS 개념, 원리 & Gateway(게이트웨이)

by 떵해이 2020. 10. 18.
300x250

1. Gateway

모든 네트워크의 연결점이라고 할 수 있다. 통신을 하려면 필수이다. 정말 중요합니다.

 

▷ 관문 역할이라고 볼 수 있다.

   통로로서의 역할뿐만 아니라 검문소 역할도 한다.

 

특정네트워크 gateway는 그 네트워크의 시작점이라고도 할 수 있다.

   보통 gateway 주소를 잡을 때 끝자리를 1번으로 잡는 경우가 많다. (예시 IP xxx . xxx . xxx . 1)

 

gateway는 라우터의 인터페이스 주소이고, 라우터를 의미하기도 한다.

   라우터는 다른 IP 네트워크를 서로 통신하게 해주는 것이다.

 

인터넷 공유기를 사용한다면 가장 가까운 gateway가 공유기가 된다.

   gateway 역할을 하는 라우터에도 고유한 IP주소가 있어야 그 IP주소를 토대로 다른 네트워크로 갈 수 있다.

 

Default gateway(기본 게이트웨이) 란?

컴퓨터는 한 개 이상의 랜 카드를 장착해 서로 다른 네트워크에 연결할 수 있다.

랜 카드는 각기 다른 gateway주소를 갖게 되는데, 그 중에 기본으로 사용할 gateway를 지정한 경우를 의미한다.

랜 카드가 하나라면 그것에 설정된 gateway가 기본gateway다.

 

쉽게 말해 기본 gateway는 네트워크의 IP주소가 다른 IP 네트워크의 IP 주소와 통신하기 위한 역할입니다.

 

※ default gateway 설정 확인

# ip route

# route

# netstat -rn


2. DNS (Domain Name Service)

웹사이트    도메인 이름 -> IP 주소 

                IP 주소 -> 도메인 이름    변환해주는 서비스

복잡한 IP 주소를 문자로 바꿔주는 것이 DNS다.

(컴퓨터는 숫자를, 사람은 이름을 선호하기 때문에 만든 서비스이다.)

 

DNS는 컴퓨터명(hostname + 도메인)을 IP주소로 변환 시켜주는 서버

 

DNS는 내부 DNS와 외부 DNS의 두 가지 유형이 있습니다.

내부 DNS는 여러 도메인 항목이 있는 경우에 내부 도메인 이름 확인을 위해 작동합니다.

해당 서버가 동일한 네트워크에 있을 때 로컬로 확인합니다.

 

동일한 네트워크에 있을 때가 아니거나 인터넷을 탐색할 때는 외부 DNS 확인이 필요합니다.

다른 네트워크의 IP 주소 인 외부 DNS에 도달하거나 통신하는 방법을 알아야합니다.

 

외부로 통신하기 위해서 라우터가 필요합니다.

우리 컴퓨터가 외부IP주소를 사용하여 DNS요청을 해결하기 위해 local DNS서버에서 IP주소를 검색하여 캐시가 있는지 확인을 하고 없다면 외부 DNS서버로 물어보기 위해 패킷을 밖으로 보내야합니다. IP주소가 외부 DNS서버로 가야하기 때문에 당연히 네트워크 범위를 벗어납니다. 네트워크 범위를 벗어나면 패킷을 gateway 주소 인 라우터 인터페이스로 보내고 라우터가 패킷을 라우팅합니다. DNS 요청이 해결되고 동일한 기본 gateway로 돌아와 DNS 서버에서 받은 IP주소 정보를 전달합니다.

이렇게 해서 우리가 www.naver.com 이 도메인 이름을 210.89.164.90 IP주소 정보를 받아옵니다. 

그렇게 해서 저 IP주소로 페이지를 요청하여야만 흔히 우리가 아는 naver가 열립니다.

 

우리가 쉽게 www.naver.com 을 검색해서 들어가는것처럼 보입니다.

하지만 보이지 않는 많은 일들이 일어난 후에야 저 홈페이지를 열 수 있습니다. 

 

쉽게 그림으로 설명해보겠습니다.

 

① PC에서 인터넷 www.naver.com 열면 -> PC 호스트 파일에 IP 주소 있는 지 확인한다.

   리눅스 : /etc/hosts 호스트 파일이 있다.

 

② local DNS에서 www.naver.com 에 대한 DNS query 를 보낸다.

    local DNS는 PC에 설정되어 있는 naemserver다. 대표적으로 168.126.63.1 (KT DNS) , 8.8.8.8 (google DNS) 등 있다.

 

③ local DNS안에 캐시 정보안에 www.naver.com 에 대한 IP 주소가 있는 지 확인한다.

 

④ local DNS가 Root DNS에 www.naver.com 에 대한 IP 주소 요청하는 DNS query를 보낸다.

 

⑤ Root DNS는 자신의 zone 파일에 정보가 있으면 IP 주소를 응답해주고, 없으면 COM의 DNS서버 주소 응답합니다.

 

⑥ local DNS는 Root DNS에서 받은 COM DNS에 www.naver.com 에 대한 IP 주소 요청하는 DNS query를 보낸다.

 

⑦ COM DNS는 자신의 zone 파일에 정보가 있으면 IP 주소를 응답해주고, 없으면 naver.com DNS서버 주소 응답합니다.

 

⑧ local DNS는 COM DNS에서 받은 naver.com DNS에 www.naver.com 에 대한 IP 주소 요청하는 DNS query를 보낸다.

 

⑨ naver.com DNS는 zone 파일에 정보를 확인하여 IP 주소를 응답해줍니다.

 

⑩ local DNS는 응답받은 IP 주소 정보를 캐싱합니다.

 

⑪ local DNS는 응답받은 IP 주소 정보를 client(즉, User)에 응답을 해줍니다.

 

⑫ client(User)는 local DNS에 받은 IP 주소로 www.naver.com 로 접속요청을 합니다.

    똑같이 그 동안 client(User)는 IP 주소 정보를 캐싱합니다.

 

www.naver.com 서버는 naver의 화면을 client(User)에 전송합니다.

 

⑮ client(User)는 naver의 화면을 이제서야 받아볼 수 있습니다.

 

Local DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> COM DNS 서버 -> naver.com DNS 서버) 물어보고

그 답을 찾는 이 과정을 Recursive Query라고 부릅니다.

 

※ 캐시는 컴퓨터의 성능을 향상시키기 위해 사용되는 메모리를 말합니다.

         주기억장치와 CPU사이에 위치하고, 자주 사용하는 데이터들을 기억합니다.

(캐시는 지역성이라는 특성을 이용하여 성능 개선을 한다.)

 

※ 캐싱은 이 캐시영역으로 데이터를 가져와서 접근하는 방식을 말합니다. 

 

 

gateway를 DNS 서버와 혼동하지 말아야한다. (때로는 같은 역할할 수도 있음)

대부분은 gateway는 홈 라우터를 제공하는 동시에 DNS요청을 하는 것처럼 보인다.

DNS 서버 ( gateway + dns ) 이런 느낌이다. 그만큼 없어서는 안되지만 헷갈려서는 안된다.

 

중요한 사실

▷ 패킷이 네트워크를 외부로 라우팅되어야 하기 때문에 gateway 주소가 없으면 DNS 가 작동하지 않습니다.

기본 gateway가 없으면 DNS는 다른 네트워크의 주소이므로 컴퓨터가 DNS 서버에 연결할 수 없습니다.

 

 

DNS 설정 및 확인

이것이 잘 되어 있지 않으면 웹사이트 이용이 힘들어집니다.

 

리눅스에서는 DNS 서버의 주소를 # /etc/resolv.conf 파일에 저장한다.

여기 파일안에서 nameserver는 DNS 서버를 뜻하며, 첫번째 서버가 동작하지 않으면 두번째 서버로 연결한다.

# vi /etc/resolv.conf 에 들어가본다.

 

 

nameserver 가 존재한다. 리눅스는 nameserver를 3개까지 추가가 가능하다고 한다.

추가할때는 # nameserver IP 형태로 추가하시고 저장하시면 됩니다.

여기서 설정을 수정하면 NetworkManager 가 시스템을 재시작하면 사라진다.

 

 

# vi /etc/sysconfig/network-scripts/ifcfg-ens33 로 들어가면 안에서 수정할 수 있다.

리눅스 DNS1= 부터 , DNS2=, DNS3= 까지 가능하다고 한다.

설정을 수정해주고 # :wq 로 저장해주고 나간뒤 # systemctl restart network 네트워크를 재시작해서 적용시켜준다.

이렇게 하면 간단하게 DNS서버를 설정 해놓은 것이다.

 

 

만약 DNS서버를 설정 해놓지 않으면 아래와 같이 발생한다.

서버에 도메인이름으로 접속할 수 없다. (직접 IP주소를 사용하여 접속할 수는 있습니다.)

# ping 8.8.8.8 은 google에서 관리하는 IP이다. 이게 통신이 된다는 뜻은 외부 통신이 가능하다는 것이다.

# ping www.google.com 을 하니 통신이 되지 않는다.

분명 외부 통신이 가능하면 구글이 들어가져야 한다. 

www.google.com  을 매핑시켜주는 DNS서버 설정을 해놓지 않았기 때문이다.


※ 매핑이란? 매핑은 하나의 값을 다른 값으로 대응 시키는 것을 말한다.

예를 들어 DNS가 매핑을 하는 것이

www.google.com   =    172.217.161.36    이런것이다.

우리가 IP주소를 외우면서 사이트를 들어가기 힘들기 때문에 DNS서버 설정을 해놓아야한다.

 

잘설정되었다면 네트워크를 마음껏 사용해봅시다.

 

 

 

반응형

댓글