본문 바로가기

네임서버

MyDNS 설치 및 사용하는 방법

반응형

MyDNS 설치 및 사용하는 방법

MyDNS는 가볍고 관리가 쉬운 오픈소스 DNS 서버 소프트웨어로 특히 웹 기반으로 관리할 수 있는 기능을 제공합니다. MyDNS는 주로 데이터베이스(MySQL, PostgreSQL)를 백엔드로 사용하여 도메인과 레코드 정보를 저장하고 관리합니다. 이로 인해 다른 DNS 서버 소프트웨어에 비해 손쉬운 도메인 관리 및 확장성을 제공합니다.

MyDNS - http://mydns.bboy.net

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 서버를 운영할 수 있습니다.

 

# MySQL 시작 sudo systemctl start mysqld # MySQL 보안 설정(필요시) sudo mysql_secure_installation # MySQL을 종료하기 위해 SET GLOBAL verify_password.length = 4; SET GLOBAL verify_password.mixed_case_count = 0; SET GLOBAL verify_password.number_count = 0; SET GLOBAL verify_password.policy = LOW; SET GLOBAL verify_password.special_char_count = 0; 플러시 권한; # MySQL 접속 mysql -u root -p # 데이터베이스 및 사용자 생성 CREATE DATABASE mydns; 'password'로 식별된 'mydnsuser'@'localhost' 사용자 생성; mydns.*에 대한 모든 권한을 'mydnsuser'@'localhost'에 부여합니다. 플러시 권한; 출구;
 
728x90
반응형