MySQL DNS · 4 min read · Oct 02, 2025

MySQL 기반 DNS 서버 실행하기: MyDNS

이것은 “복사 및 붙여넣기” 방법입니다! 이 튜토리얼을 따르는 가장 쉬운 방법은 명령줄 클라이언트/SSH 클라이언트(예: Windows용 PuTTY)를 사용하고 명령어를 복사하여 붙여넣는 것입니다(자신의 정보(IP 주소, 호스트 이름, 비밀번호 등)를 제공해야 하는 경우를 제외하고). 이렇게 하면 오타를 피할 수 있습니다.

MySQL 기반 DNS 서버 실행하기: MyDNS

버전 1.0
저자: Falko Timme
마지막 수정: 2006년 1월 2일

이 튜토리얼에서는 Bind 또는 djbdns와 같은 구성 파일 대신 MySQL 데이터베이스를 백엔드로 사용하는 DNS 서버인 MyDNS를 설치하고 구성하는 방법을 설명합니다. 이 방법의 장점은 DNS 레코드를 관리하기 위해 웹 기반 프론트엔드를 쉽게 사용할 수 있다는 것입니다. PHP를 사용하여 MyDNS 데이터베이스와 상호작용하는 자신만의 프론트엔드를 작성할 수도 있습니다. MyDNS는 데이터베이스에서 레코드를 읽기만 하며, DNS 레코드가 변경되거나 존이 생성/편집/삭제될 때 재시작/재로드할 필요가 없습니다! 이것은 큰 장점입니다.

또한 보조 DNS 서버를 설정하는 방법도 보여드리겠지만, 기본 DNS 서버에서 보조 DNS 서버로 레코드를 가져오기 위해 일반 존 전송을 사용하지 않고 MySQL 데이터베이스 복제를 사용할 것입니다. 기본 서버에서 보조 서버로 데이터를 단순히 복제할 것입니다.

MyDNS에는 여러 웹 프론트엔드가 있습니다. 물론 MyDNS 관리를 위해 phpMyAdmin을 사용할 수 있으며, MyDNS와 함께 제공되는 웹 프론트엔드(초보자에게는 필드 설명이 부족하여 적합하지 않음)를 사용할 수도 있고, 제가 작성한 도구인 MyDNSConfig를 사용할 수도 있습니다. 각 도구를 설치하는 방법을 보여드리겠습니다.

전반적으로 MyDNS는 저에게 매우 좋은 인상을 주며, 데이터베이스를 백엔드로 사용하는 서비스가 미래에 속할 것이라고 생각합니다.

이 설정을 위해 Debian Sarge 시스템을 사용했습니다. 그러나 여기에서 설명하는 대부분의 단계는 Fedora, SuSE, Mandriva 등 다른 배포판에도 적용될 것입니다.

먼저, 이러한 시스템을 설정하는 유일한 방법이 아니라는 점을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 여러분에게 작동할 것이라는 보장은 하지 않습니다!

1 MySQL 및 MyDNS 설치하기

먼저, https://www.howtoforge.com/perfect_setup_debian_sargehttps://www.howtoforge.com/perfect_setup_debian_sarge_p2에 설명된 대로 작동하는 기본 Debian 설치가 있는지 확인하십시오(다른 배포판을 사용하는 경우 해당 “완벽한 설정” 문서를 참조하십시오).

그런 다음 MySQL을 설치합니다:

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

몇 가지 질문을 받을 것입니다:

suExec 활성화? <– 예
어떤 웹 서버를 자동으로 재구성하시겠습니까? <– apache, apache2
apache를 지금 재시작하시겠습니까? <– 예

다음과 같이 root MySQL 비밀번호를 설정합니다:

mysqladmin -u root password yourrootsqlpassword

MyDNS 설치는 쉽습니다. 다음 단계를 따르십시오:

cd /tmp/
wget http://mydns.bboy.net/download/mydns-1.0.0.tar.gz
tar xvfz mydns-1.0.0.tar.gz
cd mydns-1.0.0/
./configure
make
make install

이제 MyDNS 데이터베이스(mydns라고 함)와 MyDNS 데이터베이스 사용자(mydns, 비밀번호는 mydns_password)를 생성해야 합니다:

mysql -u root -p
비밀번호 입력:

이제 MySQL 셸에서 mydns 데이터베이스와 사용자 mydns를 생성합니다:

CREATE DATABASE mydns;
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.
TO ‘mydns’@’localhost’ IDENTIFIED BY ‘mydns_password’;
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns. TO ‘mydns’@’localhost.localdomain’ IDENTIFIED BY ‘mydns_password’;
FLUSH PRIVILEGES;
quit;

정상 셸로 돌아가서 mydns 데이터베이스에 테이블을 생성합니다:

mydns –create-tables | mysql -u root -p mydns
비밀번호 입력:

다음과 같은 오류가 표시되면:

mydns[14287]: error loading gid for group nobody' mydns[14287]: using gid 65534 from usernobody’

걱정하지 마세요, 무시하셔도 됩니다.

다음으로 mydns 데이터베이스의 soa 테이블에 두 개의 열을 추가합니다:

mysql -u root -p
비밀번호 입력:
ALTER TABLE mydns.soa ADD COLUMN active ENUM(‘Y’,’N’) NOT NULL;
ALTER TABLE mydns.soa ADD INDEX (active);
ALTER TABLE mydns.soa ADD COLUMN xfer CHAR(255) NOT NULL;
quit;

active 열을 사용하면 나중에 존을 간단히 활성화/비활성화할 수 있으며, xfer 열은 존 전송에 사용할 수 있습니다(우리는 MySQL 데이터베이스 복제를 사용하여 보조 DNS 서버로 데이터를 가져올 것이므로 필요하지 않지만, 완전성을 위해 언급합니다). (존 전송을 데이터베이스 복제 대신 사용하려면 xfer 열에 쉼표로 구분된 하나 이상의 IP 주소가 포함되어야 합니다. 이 IP 주소는 존을 전송할 수 있습니다.).

이제 다음 명령을 실행하여 MyDNS 구성 파일 /etc/mydns.conf를 생성합니다:

cd /tmp/mydns-1.0.0/
make conf

그런 다음 /etc/mydns.conf를 편집하여 다음과 같이 만듭니다:

| ## ## /etc/mydns.conf ## Fri Oct 21 16:36:32 2005 ## 자세한 내용은 mydns.conf(5)를 참조하십시오. ## # 데이터베이스 정보 db-host = localhost # SQL 서버 호스트 이름 db-user = mydns # SQL 서버 사용자 이름 db-password = mydns_password # SQL 서버 비밀번호 database = mydns # MyDNS 데이터베이스 이름 # 일반 옵션 user = nobody # 이 사용자의 권한으로 실행 group = nogroup # 이 그룹의 권한으로 실행 listen = * # 이 주소에서 수신(' * '는 모두) # 캐시 옵션 zone-cache-size = 1024 # 존 캐시에 저장되는 최대 요소 수 zone-cache-expire = 60 # 캐시된 존이 만료되는 초 수 reply-cache-size = 1024 # 응답 캐시에 저장되는 최대 요소 수 reply-cache-expire = 30 # 캐시된 응답이 만료되는 초 수 # 에소테리카 log = LOG_DAEMON # 프로그램 출력을 위한 시설(LOG_*/stdout/stderr) pidfile = /var/run/mydns.pid # PID 파일 경로 timeout = 120 # 쿼리가 시간 초과되는 초 수 multicpu = 1 # 시스템에 설치된 CPU 수 allow-axfr = no # AXFR을 활성화해야 합니까? allow-tcp = yes # TCP를 활성화해야 합니까? ignore-minimum = no # 존의 최소 TTL을 무시합니까? soa-table = soa # SOA 레코드를 포함하는 테이블의 이름 rr-table = rr # RR 데이터를 포함하는 테이블의 이름 |

올바른 데이터베이스 세부정보를 입력하고 그룹에 주의하십시오. Debian에서는 nobody의 그룹이 nogroup으로, /etc/mydns.conf의 기본값(nobody)과 다르므로 반드시 변경해야 합니다! 또한 allow-tcpyes로 설정하십시오.

이제 MyDNS 초기화 스크립트 /etc/init.d/mydns를 생성합니다:

| #! /bin/sh # # mydns MyDNS 서버 시작 # # 저자: Falko Timme <[email protected]>. # set -e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=mydns DAEMON=/usr/local/sbin/$NAME DESC="DNS 서버" SCRIPTNAME=/etc/init.d/$NAME # 패키지가 제거된 경우 정상적으로 종료합니다. test -x $DAEMON || exit 0 case "$1" in start) echo -n "시작 중 $DESC: $NAME" $DAEMON --background echo "." ;; stop) echo "중지 중 $DESC: $NAME." kill -9 `pidof $NAME` &> /dev/null ;; restart) echo "재시작 중 $DESC: $NAME." $0 stop && sleep 1 $0 start ;; *) echo "사용법: $SCRIPTNAME {start|stop|restart}" >&2 exit 1 ;; esac exit 0 |

그런 다음 실행 가능하게 만들고 MyDNS를 시작합니다:

chmod 755 /etc/init.d/mydns
/etc/init.d/mydns start

MyDNS가 시스템 부팅 중 자동으로 시작되도록 하려면 필요한 시스템 부팅 링크를 생성해야 합니다. Debian에서는 다음과 같이 수행합니다:

update-rc.d mydns defaults 21 22

Fedora 또는 RedHat에서는 다음을 실행합니다:

chkconfig –levels 235 mydns on

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.