MyDNS 설치 및 사용하는 방법
MyDNS는 가볍고 관리가 쉬운 오픈소스 DNS 서버 소프트웨어로 특히 웹 기반으로 관리할 수 있는 기능을 제공합니다. MyDNS는 주로 데이터베이스(MySQL, PostgreSQL)를 백엔드로 사용하여 도메인과 레코드 정보를 저장하고 관리합니다. 이로 인해 다른 DNS 서버 소프트웨어에 비해 손쉬운 도메인 관리 및 확장성을 제공합니다.
MyDNS - http://mydns.bboy.net
테스트 환경
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
1. 필요한 패키지 설치
데이터베이스 및 필요한 패키지를 설치합니다.
sudo yum install -y gcc make wget
sudo yum install -y epel-release
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
sudo yum localinstall -y mysql80-community-release-el7-5.noarch.rpm
sudo yum install -y mysql-server mysql-devel --nogpgcheck
zlib 정적 라이브러리 설치(libz.a)
--with-zlib=/usr/local/zlib-1.3.1/lib
---
정적 라이브러리(libz.a)
cd /usr/local/src
wget https://zlib.net/current/zlib.tar.gz
tar xvfz zlib.tar.gz
cd zlib-1.3.1
./configure --prefix=/usr/local/zlib-1.3.1
make
sudo make install
---
2. MyDNS 다운로드 및 압축 해제
MyDNS를 공식 사이트에서 다운로드하고 설치할 준비를 합니다.
# 작업 디렉토리 이동
cd /usr/local/src
# MyDNS 소스 다운로드
wget http://mydns.bboy.net/download/mydns-1.1.0.tar.gz
# 압축 해제
tar -zxvf mydns-1.1.0.tar.gz
cd mydns-1.1.0
3. MyDNS 컴파일 및 설치
압축을 해제한 후 MyDNS를 컴파일하고 설치합니다.
# 컴파일 설정
./configure --with-mysql-lib=/usr/lib64/mysql --with-zlib=/usr/local/zlib-1.3.1/lib
# 컴파일
make
# 설치
sudo make install
4. MySQL 데이터베이스 설정
MyDNS는 데이터베이스에 도메인 및 DNS 레코드를 저장하므로 MySQL에서 필요한 데이터베이스와 테이블을 설정해야 합니다.
cat /var/log/mysqld.log | egrep "A temporary password is generated"
# MySQL 시작
sudo systemctl start mysqld
# MySQL 보안 설정 (필요시)
sudo mysql_secure_installation
# MySQL 비밀번호 정책 완화하기
SET GLOBAL validate_password.length = 4;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.special_char_count = 0;
FLUSH PRIVILEGES;
# MySQL 접속
mysql -u root -p
# 데이터베이스 및 사용자 생성
CREATE DATABASE mydns;
CREATE USER 'mydnsuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydns.* TO 'mydnsuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
5. MyDNS 데이터베이스 테이블 생성
MyDNS 소스 코드에 포함된 SQL 스크립트를 사용하여 MySQL에 테이블을 생성합니다.
mysql -u mydnsuser -p mydns < sql/mysql_mydns_schema.sql
6. MyDNS 설정 파일 편집
MyDNS 설정 파일을 편집하여 데이터베이스 정보 및 기타 설정을 구성합니다. 설정 파일 경로는 /usr/local/etc/mydns.conf입니다.
sudo vim /usr/local/etc/mydns.conf
필요한 설정 항목을 다음과 같이 수정합니다.
database-access-host = localhost
database-access-user = mydnsuser
database-access-password = password
database-access-database = mydns
위 설정에서 mydnsuser와 password는 데이터베이스 설정에서 지정한 사용자 이름과 비밀번호입니다.
7. MyDNS 실행
MyDNS를 데몬으로 실행하여 DNS 서버를 시작합니다.
sudo /usr/local/sbin/mydns --daemon
8. MyDNS 서비스 자동 시작 설정
서버가 재부팅될 때 MyDNS가 자동으로 실행되도록 systemd를 사용하여 설정합니다. 새로운 서비스 파일을 생성합니다.
sudo vim /etc/systemd/system/mydns.service
다음 내용을 추가합니다.
[Unit]
Description=MyDNS Server
After=network.target
[Service]
ExecStart=/usr/local/sbin/mydns --daemon
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
서비스를 활성화하고 시작합니다.
sudo systemctl enable mydns
sudo systemctl start mydns
9. MyDNS 사용
MyDNS는 도메인과 DNS 레코드를 데이터베이스에 저장하므로 MySQL에 직접 쿼리를 실행하거나 웹 인터페이스를 통해 쉽게 관리할 수 있습니다.
USE mydns;
# 도메인 추가
INSERT INTO domains (name) VALUES ('example.com');
# A 레코드 추가
INSERT INTO rr (domain_id, name, type, data, ttl) VALUES (LAST_INSERT_ID(), 'www.example.com', 'A', '192.168.1.1', 86400);
# MX 레코드 추가
INSERT INTO rr (domain_id, name, type, data, aux, ttl) VALUES (LAST_INSERT_ID(), 'example.com', 'MX', 'mail.example.com', 10, 86400);
도메인 및 레코드 추가 예시
다음과 같은 방식으로 MySQL에 직접 도메인과 레코드를 추가할 수 있습니다.
10. 웹 관리 패널 설치
웹에서 MyDNS를 쉽게 관리하기 위해서는 웹 인터페이스를 추가할 수 있습니다. 대표적인 도구로는 MyDNSConfig가 있습니다.
MyDNSConfig 설치
# Apache와 PHP 설치
sudo yum install httpd php php-mysql
# MyDNSConfig 다운로드 및 설치
wget https://sourceforge.net/projects/mydnsconfig/files/latest/download -O mydnsconfig.tar.gz
tar -zxvf mydnsconfig.tar.gz -C /var/www/html/
mv /var/www/html/mydnsconfig-<version> /var/www/html/mydnsconfig
# Apache 설정 및 시작
sudo systemctl start httpd
sudo systemctl enable httpd
브라우저에서 http://<서버 IP>/mydnsconfig으로 접속하여 도메인 및 레코드를 관리할 수 있습니다.
11. DNS 서버 테스트
MyDNS가 정상적으로 동작하는지 확인하려면 DNS 질의를 수행할 수 있습니다. 예를 들어, 다음 명령어를 사용하여 DNS 질의 결과를 확인합니다.
dig @<서버 IP> example.com
MyDNS 1.1.0은 데이터베이스 기반의 DNS 서버 소프트웨어로 도메인과 DNS 레코드를 쉽게 관리할 수 있습니다. 설치 및 설정을 완료한 후 웹 인터페이스를 추가하면 더욱 편리하게 DNS 서버를 운영할 수 있습니다.
'네임서버' 카테고리의 다른 글
bind zone 파일 IP 변경 스크립트 (0) | 2013.09.04 |
---|---|
네임서버 점검을 위한 일반적인 절차 (0) | 2013.09.03 |
DNS의 SOA 레코드 (0) | 2013.09.01 |
[네임서버] 원도우 DNS 강좌 (0) | 2013.08.14 |
[네임서버] nslookup 및 dig 사용 정리 (0) | 2013.08.14 |