Virtual Machine's DNS(3)
Local DNS Server 구현
가상머신의 DNS Server 운영과 개념 VM’s DNS(1)
local한 DNS 구현 VM’s DNS(2)
centos7와 Oracle Database 23c Free Developer 운영체제가 사용되었습니다.
bind
배포용 linux의 DNS Server를 구축하기 위한 S/W로 bind를 사용했다.
bind는 berkeley internet name domain의 약자로 가장 오래된 domain 서비스 시스템으로 가장 근본있는(?) S/W이다.
이 외에도 bind9 등과 같은 S/W(패키지)들이 있다.
bind 설치
bind 설치는 배포용 linux에서는 다음과 같은 명령어를 통해서 설치할 수 있다.
-y는 install option으로 패키지 설치시에 동의 사항들을 yes처리한다. (권하지 않지만 저자는 귀찮아서 애용한다)
bind-utils는 추후 nslookup을 위해 설치한다.
named 파일들
설치가 완료되면 /etc 아래에 다음과 같은 폴더/파일들이 생긴다.
우리가 주목할 파일은 /etc/named.conf와 /etc/named.rfc1912.zones이다.
/etc/named.conf는 DNS 서버를 운영하기 위한 named service를 실행시킬때 사용하는 구성 파일이다.
해당 파일을
편집기를 이용해 열어보면 다음과 같은 내용들이 담겨있고 우리는 2줄만 교체해주면 된다.
1./etc/named.conf 파일 설정
표시된 listen-on port 53 에 대한 내용은 53번 포트로 접근하는 어떤 IP들을 처리해줄 것인지 설정한다.
아래줄 주석에는 any대신 127.0.0.1로 보아선 자신 VM(Virtual Machine)만을 위한 처리를 해줄때의 기본 설정이며 우리는 DNS Server를 구축해 같은 라우터 아래에 있는 다른 VM이나 컴퓨터들을 위해 사용할 예정이니 any를 사용하여 내용을 바꿔준다.
named-checkconf 명령어를 사용해 문법적 오류가 발생하지는 않았는지 확인해볼 수 있다.
와 같은 명령어 입력 후 아무 log가 작성되지 않으면 정상적으로 수정된 것이다. allow-query또한 localhost의 쿼리만을 처리하는 것이 아닌 외부에서 오는 쿼리들을 처리하도록 any를 작성해 수정해준다.
- listen-on-v6 port 53 { ::1; }; 또한 IPv6를 사용하지 않는다면 주석 처리해 주어도 상관없다.
2.방화벽 설정 firewallD
포트 사용에 대한 설정을 건들였으니 방화벽에서도 포트를 열어주어야한다. centos7는 기본적으로 firewallD를 사용하여 방화벽 설정을 하기에 다음과 같이 명령어를 사용하여 53번 포트의 방화벽을 열어주고 dns 서비스에대한 방화벽도 열어준다.
3./etc/named.rfc1912.zones 파일 설정
해당 파일을 수정함으로써 쿼리 요청시에 어디로 보낼것인지 방향을 설정해준다.
해당파일도 vi 편집기로 열어보게 되면 다음과 같이 zone에 대한 처리를 제시한다.
저자는 빨간색 표시로된 부분을 추가해 주었다.
눈치가 빠른 사람은 저자가 사용할 domain도 예측할 수 있을 것이다.
4.domain.zone 파일 설정
도메인에대한 요청을 파일로써 보내두었기 때문에 우리는 localnet.zone 파일을 수정하여 처리해주어야 한다.
해당 폴더에 도메인 요청에 대한 처리를 다루는 파일들이 담겨있다.
이전 named.rfc1912.zones 파일에서 보았던 파일명들이 해당 디렉토리에 담겨있다.
당연히 빨간색으로 표시된 파일은 저자가 추가해 주었기에 기존에는 없을 파일이고
명령어를 통해서 기본 문법을 배우며 localnet.zone파일을 수정해준다.
해당파일을 열어보면 다음과 같다. @에는 본인이 사용할 domain 이름을 그리고 아래에는 자신이 사용할 domain에 따른 서버 설정을 작성하면 된다.
저자는 다음과 같이 수정했다. 주요 포인트는 다음의 4줄이다.
첫째 줄은 localnet에 대한 처리를
둘째 줄은 www.localnet에 대해
셋째 줄은 linux.localnet에 대해
넷째 줄은 db.localnet에 대한 처리를 해준다.
localnet과 www.localnet은 bind가 설치된 이 VM을 가르키게 해주고
linux.~와 db.~은 각각 다른 VM을 가르킬 수 있게 작성했다.
local한 DNS 구현 VM’s DNS(2)에서 사용한 브릿지 모드를 통해 IP를 설정했다.
zone 파일을 수정해주었으니 이또한 문법오류가 없는지 확인할 수 있다.
해당 명령어를 통해 OK 로그가 찍히면 성공이다.
5.역방향 domain
마지막으로 해결할 과제가 남았다. 만약 주소창에 192.168.0.1 처럼 IP 값 그대로 접속을 요청하게 되면, 이것을 domain으로 바꿔서 처리해야하는 상황이 발생한다.
현재 서버에서 nslookup 명령어를 통해 기존에 설정한 linux 서버와 db 서버의 주소를 입력해 확인해보면 전혀 확인하지 못한다.
출력되는 결과를 보면 .0.168.192.in-addr.arpa 가 존재하지 않다고 확인되는데, 해당 문제는 /etc/named.rfc1912.zones 파일에 해당 경로로 들어오는 질의에 대한 처리를 해줄 부분이 존재하지 않아서이다.
vi /etc/named.rfc1912.zones 파일을 편집기로 열어서 이전에 localnet 처리부분 아래에 해당 내용을 추가한다. 처럼 내용 추가 후 file을 만들어줘야 한다. localnet.zone 파일을 복사해 설정한 파일 이름으로 /var/named 폴더 아래에 추가해 주고 다음과 같이 변경해준다.
이후 systemctl restart named 를 통해 서비스를 재시작하고 nslookup 명령어를 통해 IP 주소를 검색하면 적절한 domain을 뱉어낸다.
6.nameserver로 등록
DNS Server를 실행 전 해당 VM에서도 작동확인을 위해 nameserver로 자기 자신을 등록해준다.
해당 파일은 linux기반의 운영체제들이 사용할 nameserver를 주소로 표시해 둔다.
따라서 nameserver 127.0.0.1을 추가해 본인도 네임서버라는 사실을 인식시킨다.
7.Server 실행
명령어를 통해서 실행하고 해당 VM 부팅시 자동으로 서버가 돌아가도록 설정한다.
을 통해 핑을 찍어보면 내가 설정한 IP로 ping을 정상적으로 주고받는 것을 확인할 수 있다.
8.다른 VM에서의 설정
이제 DNS Server는 작동중이다. 다른 VM에서 해당 DNS Server를 nameserver로 등록하기위해 linux나 다른 vm의 /etc/resolv.conf 파일을 열어서 nameserver 192.168.0.8(Server의 IP 주소)를 수정해 주면 모든 과정이 종료된다.
정말 끝?
정말 끝인가? DNS Server를 사용하는 목적은 local한 환경에서 내가 VM을 새롭게 만들거나 새로운 컴퓨터를 나의 네트워크에 접속시켰을 때 IP를 대신한 DNS를 이용하기 위함인데 정말 위의 과정중에서 새로운 컴퓨터가 해야할 불편함은 없나? 고민을 가져야 한다.
7의 과정이 굉장히 껄끄러워야 한다.
새롭게 나의 네트워크 환경에 진입한 컴퓨터의 nameserver를 수정할 파일을 열어서 매번 nameserver 192.168.0.8을 수정해야 한다는건 유지와 사용면에서 너무 불편하다.
9.host adapter network 설정
writing
10.router 기본 DNS 주소 설정
저자는 해당 문제를 해결하기 위해서 사용중인 router(iptime)의 기본 DNS 주소를 192.168.0.8로 등록해 주면서 이를 해결했다.
DNS Server의 주소를 192.168.0.8로 고정IP 사용을 지정해주고
기존의 기본 DNS 주소를 보조 DNS 주소로,
기본 DNS 주소에 192.168.0.8을 사용해 저자의 네트워크 환경에 들어오는 크고 작은 컴퓨터들은 모두 localnet DNS Server를 지나가도록 설정해 주었다.
기본 DNS 주소에 설정된 DNS Server에서 domain들을 확인하고
보조 DNS 주소로 설정된 DNS Server로 가서 domain을 확인하기에 외부로의 인터넷 접속은 문제가 되지 않을 것이다.
Tool
CentOS7-x86-64-2009.iso
Oracle VM VirtualBox 7.0.12-r159484