[CKA] 4주차 Day 2

강아람·2023년 3월 7일
0

CKA

목록 보기
15/22
post-thumbnail

Prerequisite - DNS

Linux의 DNS를 공부해보자.



Name Resolution

동일한 네트워크에 속한 두 대의 컴퓨터 A, B는 각각 192.168.1.10192.168.1.11이라는 IP를 할당받았다.


컴퓨터의 IP 주소를 사용하여 다른 컴퓨터에서 한 컴퓨터에 ping을 던질 수 있다.

시스템 B에 데이터베이스 서비스가 있다는 것을 인지했으므로, 시스템 B의 IP 주소 대신 db라는 이름으로 시스템을 인식할 것이다.


이제 db에 ping을 시도하면 호스트 A가 db라는 호스트를 인식하지 못하는 것을 확인할 수 있다.


어떻게 해야 인식할 수 있을까?

기본적으로 시스템 A에게 IP 주소 192.168.1.11의 시스템 B에 db가 있음을 알려주어야 한다. 시스템 A에게 db192.168.1.11이라는 IP를 가리키고 있음을 알려주어야 한다.

시스템 A의 /etc/hosts 파일에 항목을 추가하여 이를 수행할 수 있다.



이제 시스템 A에게 db = 192.168.1.11임을 알려주었으므로 db에 대해 ping을 전송할 수 있게 될 것이다.



시스템 A는 /etc/hosts 파일에 db192.168.1.11이라고 적혀있기 때문에 실제 db192.168.1.11이라는 주소를 가리키지 않아도 그렇게 인식할 수 밖에 없다. (실제 이름을 확인하지 않는다.)


예를 들어 시스템 B에서 hostname 명령을 실행하면 host-2라고 뜨므로 시스템 B의 hostname은 host-2이지만 호스트 A는 신경쓰지 않는다.


시스템 B가 Google이라고 믿도록 시스템 A를 속일 수 있다.

www.google.com에 대한 IP 매핑을 사용하여 호스트 파일에 항목을 추가하고, Google에 ping을 전송하면 시스템 B가 응답을 준다.


따라서 동일한 시스템을 가리키는 두 개의 이름(db, Google)이 존재하게 되는 것이다.


호스트 A에서 이름으로 다른 호스트를 참조할 때마다 (ping 커맨드나 SSH 커맨드, 애플리케이션이나 tool 이용) 호스트는 해당 호스트의 IP 주소를 찾기 위해 /etc/hosts 파일에서 검색하게 된다.


이러한 방식으로 호스트 이름을 IP 주소로 변환하는 것을 name resolution이라고 한다.




DNS

소수의 시스템으로 구성된 소규모 네트워크에서는 /etc/hosts 파일의 항목을 쉽게 사용할 수 있다. (각 시스템에서 모두 다른 시스템을 지정한다.)

과거에는 그렇게 했지만 환경이 커지면 이러한 파일과 항목을 관리하는 것이 어려워지게 된다.

서버 중 하나의 IP가 변경되면 모든 호스트에서 항목을 수정해야 한다. 따라서 이 모든 항목을 중앙에서 관리할 단일 서버를 두기로 했고, 이 서버를 DNS 서버라고 부른다.

자체 /etc/hosts 파일 대신 호스트 이름을 IP 주소로 확인해야 하는 경우 모든 호스트가 해당 서버를 조회하도록 지정한다.



호스트를 DNS 서버로 지정하려면 어떻게 할까?

DNS 서버의 IP는 192.168.1.100이다. 모든 호스트에는 /etc/resolv.conf에 DNS resolution configuration 파일이 있다.

DNS 서버의 주소를 지정하여 항목을 추가한다. nameserver라고 하고, 192.168.1.100을 가리키면 된다.


이것이 모든 호스트에 configuration 되면 호스트가 알지 못하는 호스트 이름을 발견할 때마다 DNS 서버에서 조회한다.

호스트의 IP가 변경되는 경우, DNS 서버를 업데이트 하기만 하면 모든 호스트가 앞으로 새로운 IP 주소를 확인할 수 있다.

더이상 모든 호스트의 /etc/hosts 파일 항목이 필요하지 않다.


그러나 이것이 호스트 파일에 항목을 가질 수 없다는 의미는 아니다. 호스트 파일 내의 항목을 추가할 수 있다.

0개의 댓글