[Micro Service 추천] dnsmasq - hosts 파일로 DNS 구축하기

안녕하세요. SAP 운영자 ST03 입니다.

DNS 운용을 하려다가 찾게 된 Micro Service 인 dnsmasq 를 소개 해 드리려고 합니다.


#1 사용 시 얻는 장점

DNS 세팅을 하면서 느낀 점은 너무 전문화 된 서비스 라는 점 입니다. 대형의 대외 IT 서비스를 하는 경우라면 DNS 를 구축해서 운용 할 필요가 있겠지만 운영서버 100여대 이하의 소~중형 규모의 내부 서비스 대상으로는 너무 귀찮은 설정이 많다는 느낌 입니다. (솔직히 대외서비스 라고 해도 국내 서비스는 보통 100여대로 커버 할 것이기 때문에...)

그에 비해 dnsmasq 는 hosts 파일에 있는 정보를 그대로 DNS 설정 파일로 사용 할 수 있다는 점이 큰 매력으로 다가왔습니다. 소형 서비스이기 때문에 docker 등으로 microservice 화 시킴으로써 서비스를 더 안정적으로 운용 할 수 있는 점도 좋게 다가왔습니다.


저 같은 경우는 Mac 에 VM 들을 많이 운용하는데 SAP 시스템 특성 상 FQDN 이 없으면 불편 한 경우가 많습니다. 하지만 DNS 설정은 너무 귀찮았던 차에 이를 발견해서 사용하고 있는데 너무 편하고 좋더군요. 저와 같이 컴퓨터 내에 테스트/개발 환경을 다량으로 VM 으로 운용하는 경우에도 추천 드리고 microservice 를 운영하는 사내망을 운용하는 경우에도 추천 드립니다.


#2 설치 방법

Mac 에서 설치 (homebrew 설치 필요. homebrew 설치는 다른 포스트 참조)

[MacforST03:~] st03% brew install dnsmasq


Ubuntu 및 데비안 계열에서 설치

# apt-get install dnsmasq


Redhat 계열에서 설치

[root@saptest ~]# yum install dnsmasq


#3 초기 설정하기

먼저 설정 할 본인의 domain 을 정해 놓습니다. 

예를 들어서 제가 운영할 서버 목록이 test01.st03.com test02.st03.com test03.st03.com 이라고 하면 test01, test02, test03 들은 hostname 또는 서버 이름이고 st03.com 이 도메인 입니다. 

즉 서버 묶음 단위라고 생각하면 되겠습니다.


dnsmasq.conf 파일을 찾아서 필요한 부분을 설정 합니다.


Mac 에서는 아래 커맨드로 설정 파일을 엽니다.

[MacforST03:~] st03% sudo vim /usr/local/etc/dnsmasq.conf


그 외 Linux 에서는 커맨드로 설정 파일을 엽니다.

[root@saptest ~]# vi /etc/dnsmasq.conf


79번째 라인에 있는 # 을 없애고 아래 rule 대로 변경 합니다. (79번째는 IPv4 이고 IPv6 의 경우에는 82번째를 변경하면 됩니다)

address=/[도메인 명]/[DNS resolver]

** 유용한 vi/vim 명령어 1 | /[검색어] | 특정 단어or문장 검색하기 (n 을 누르면 다음으로 넘어갈 수 있음)

** 유용한 vi/vim 명령어 2 | /set number | 각 라인 앞에 번호 표시

** 유용한 vi/vim 명령어 3 | i | edit 모드로 변경 (나가려면 esc)

** 유용한 vi/vim 명령어 4 | :wq | w 는 변경 건에 대한 저장, q 는 나가기. 두개를 같이 쓰면 저장하고 나가기.


원본

     76 # Add domains which you want to force to an IP address here.

     77 # The example below send any host in double-click.net to a local

     78 # web-server.

     79 #address=/double-click.net/127.0.0.1

     80 

     81 # --address (and --server) work with IPv6 addresses too.

     82 #address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83


변경 후 (예시)

     76 # Add domains which you want to force to an IP address here.

     77 # The example below send any host in double-click.net to a local

     78 # web-server.

     79 address=/st03.com/127.0.0.1

     80 

     81 # --address (and --server) work with IPv6 addresses too.

     82 #address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83



변경을 완료 하였다면 아래 커맨드로 dnsmasq 를 재시작 합니다.


Mac

[MacforST03:~] st03% sudo launchctl stop homebrew.mxcl.dnsmasq

[MacforST03:~] st03% sudo launchctl start homebrew.mxcl.dnsmasq


Linux

[root@saptest ~]# service restart dnsmasq


DNS 에서 서비스 할 서버 내역은 dnsmasq 가 설치 된 서버의 /etc/hosts 파일에 넣어 놓습니다.

[MacforST03:~] st03% cat /etc/hosts

##

# Host Database

#

# localhost is used to configure the loopback interface

# when the system is booting.  Do not change this entry.

##

127.0.0.1          localhost

255.255.255.255    broadcasthost

::1                localhost


192.168.174.200    saptest.st03.com     saptest

192.168.174.201    sapjava1.st03.com    sapjava1

192.168.174.202    sapjava2.st03.com    sapjava2


#4 DNS 설정하기

일단 dnsmasq 를 설치한 서버의 IP 를 확인 해 놓습니다. 저희 경우에는 192.168.174.1 입니다.

그리고 DNS 를 사용할 각 서버들에 DNS 설정을 넣어 줍니다.


Mac 및 Linux 의 경우에는 아래 순서대로 진행 합니다.

마지막 줄은 기존에 있던 값 입니다.

[root@saptest ~]# vi /etc/resolv.conf

# Generated by NetworkManager

search st03.com

nameserver 192.168.174.1

nameserver 192.168.1.1


이후 내부 서버에 접속이 되는지 테스트 해 봅니다.

[root@saptest ~]# ping -c 3 sapjava1

PING sapjava1.st03.com (192.168.174.201) 56(84) bytes of data.

64 bytes from sapjava1.st03.com (192.168.174.201): icmp_seg=1 ttl=64 time=0.442 ms

64 bytes from sapjava1.st03.com (192.168.174.201): icmp_seg=2 ttl=64 time=0.299 ms

64 bytes from sapjava1.st03.com (192.168.174.201): icmp_seg=3 ttl=64 time=0.296 ms

--- sapjava1.st03.com ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2002ms

rtt min/avg/max/mdev = 0.296/0.345/0.442/0.071 ms

[root@saptest ~]# 





댓글()