Hướng dẫn này sẽ chỉ cho bạn cách định cấu hình dịch vụ DNS dễ bảo trì, dễ cấu hình và thường an toàn hơn dịch vụ BIND cổ điển. Bài viết này giả định rằng bạn đang chạy VPS có cài đặt FreeBSD.
Để bắt đầu, hãy mở terminal của bạn và cài đặt gói này:
<ceph>[~]# pkg install djbdns
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 3 packages will be affected (of 0 checked):
New packages to be INSTALLED:
djbdns: 1.05_20,1
ucspi-tcp: 0.88_2
daemontools: 0.76_17
The process will require 1 MB more space.
251 KB to be downloaded.
Proceed with this action? [y/N]: y
Fetching djbdns-1.05_20,1.txz: 100% 139 KB 142.4k/s 00:01
Fetching ucspi-tcp-0.88_2.txz: 100% 62 KB 63.1k/s 00:01
Fetching daemontools-0.76_17.txz: 100% 51 KB 51.7k/s 00:01
Checking integrity... done (0 conflicting)
[1/3] Installing ucspi-tcp-0.88_2...
[1/3] Extracting ucspi-tcp-0.88_2: 100%
[2/3] Installing daemontools-0.76_17...
[2/3] Extracting daemontools-0.76_17: 100%
[3/3] Installing djbdns-1.05_20,1...
[3/3] Extracting djbdns-1.05_20,1: 100%
Cài đặt sẽ tự động cài đặt các gói bổ sung ( daemontools
và ucspi-tcp
).
Tạo hai người dùng, gtinydns
và gdnslog
. Bắt đầu với người dùng đầu tiên:
<ceph>[~]# adduser
Username: gtinydns
Full name: gtinydns
Uid (Leave empty for default):
Login group [gtinydns]:
Login group is gtinydns. Invite gtinydns into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh rzsh nologin) [sh]: nologin
Home directory [/home/gtinydns]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username : gtinydns
Password : <random>
Full Name : gtinydns
Uid : 1002
Class :
Groups : gtinydns
Home : /home/gtinydns
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gtinydns) to the user database.
adduser: INFO: Password for (gtinydns) is: rTsada2131sa1Mg
Add another user? (yes/no): no
Goodbye!
Bây giờ, thêm người dùng thứ hai:
<ceph>[~]# adduser
Username: gdnslog
Full name: gdnslog
Uid (Leave empty for default):
Login group [gdnslog]:
Login group is gdnslog. Invite gdnslog into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh rzsh nologin) [sh]: nologin
Home directory [/home/gdnslog]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username : gdnslog
Password : <random>
Full Name : gdnslog
Uid : 1003
Class :
Groups : gdnslog
Home : /home/gdnslog
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gdnslog) to the user database.
adduser: INFO: Password for (gdnslog) is: jWsdad33aasdaFa0
Add another user? (yes/no): no
Goodbye!
Chạy lệnh sau. Thay thế địa chỉ IP bằng địa chỉ máy chủ Vultr của bạn.
<ceph>[~]# tinydns-conf gtinydns gdnslog /usr/local/etc/tinydns 108.61.100.100
Lệnh này sẽ tạo các thư mục, tệp và các thư mục con khác trong /usr/local/etc/tinydns
. Nó cũng sẽ đặt địa chỉ IP của VPS vào /usr/local/etc/tinydns/env/IP
.
Tạo thư mục /service
.
<ceph>[~]# mkdir /service
Chỉnh sửa /etc/rc.conf
tập tin của bạn :
<ceph>[~]# ee /etc/rc.conf
... Và những dòng này:
svscan_enable="YES"
svscan_servicedir="/service"
Lưu cấu hình và bắt đầu svscan
dịch vụ:
<ceph>[~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Tiếp theo, vào thư mục này:
<ceph>[~]# cd /usr/local/etc/tinydns/root
Chỉnh sửa data
tập tin:
<ceph>[root]# ee data
... và thêm một số dữ liệu DNS:
# domain1.com
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
&domain1.com::dns1.domain1.com.:3600
&domain1.com::dns2.domain1.com.:3600
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
# IP's (A records)
=dns1.domain1.com:108.61.210.99:3600
=dns2.domain1.com:89.201.163.42:3600
=mail1.domain1.com:89.201.163.42:3600
=mail2.domain1.com:85.114.41.8:3600
=www.domain1.com:108.61.178.194:3600
=test1.domain1.com:193.198.184.100:3600
=test2.domain1.com:108.61.178.215:3600
# Aliases
+domain1.com:108.61.178.194:3600
+smtp.domain1.com:89.201.163.42:3600
+imap.domain1.com:89.201.163.42:3600
Lưu file và thoát.
Chạy ls
:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data
Chuyển đổi dữ liệu văn bản của bạn sang định dạng cơ sở dữ liệu:
<ceph>[root]# make
/usr/local/bin/tinydns-data
Chạy ls
lại:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data data.cdb
Để ý data.cdb
tập tin. Bạn đã tạo ra nó với make
lệnh.
Và một điều nữa, tạo ra một liên kết tượng trưng:
<ceph>[root]# ln -s /usr/local/etc/tinydns /service
Bây giờ hãy kiểm tra máy chủ DNS mới của bạn. Thay thế 108.61.178.110
bằng địa chỉ IP của máy chủ của bạn.
<ceph>[root]# host www.domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
www.domain1.com has address 108.61.178.194
Tra cứu máy chủ tên:
<ceph>[root]# host -t ns domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
domain1.com name server dns1.domain1.com.
domain1.com name server dns2.domain1.com.
Tra cứu Mailserver MX:
<ceph>[root]# host -t mx domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
domain1.com mail is handled by 10 mail1.domain1.com.
domain1.com mail is handled by 30 mail2.domain1.com.
Một lần nữa để chắc chắn:
<ceph>[root]# host mail1.domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
mail1.domain1.com has address 89.201.163.42
Xin chúc mừng! Bạn có một máy chủ DNS đang hoạt động. Thay thế domain1.com
bằng tên miền của bạn. Sau mỗi thay đổi, hãy chạy make
lệnh để tạo data.cdb
tệp mới .
Giải thích về tệp dữ liệu:
Hồ sơ "A" bắt đầu bằng một =
dấu hiệu. Bí danh hoặc bản ghi CNAME với một +
dấu hiệu. Máy chủ thư bắt đầu bằng @
dấu hiệu. Máy chủ tên với &
dấu hiệu.
Ví dụ 1:
=test1.domain1.com:193.198.184.100:3600
=
là viết tắt của chữ "A". test1.domain1.com
là tên DNS, IP 193.198.184.100
là địa chỉ test1.domain1.com
giải quyết và 3600 là TTL (thời gian tồn tại).
Ví dụ 2:
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
Trong ví dụ này, mail1
và mail2
là các máy chủ mail cho domain1.com
. mail1
có mức độ ưu tiên 10 và mail2
có mức độ ưu tiên 30. Điều đó có nghĩa là các máy chủ thư trước tiên sẽ cố gắng gửi thư đến mail1
. Nếu mail1
thất bại, sau đó họ sẽ cố gắng mail2
.
Các dòng sau đánh dấu bắt đầu của thông tin khu vực. Nó là bắt buộc.
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
2013101203
số được sử dụng khi bạn có DNS phụ trên một số nhà cung cấp khác. Khi bạn thay đổi số thành 2013101204
, DNS phụ sẽ biết rằng có một số thay đổi trong DNS và sẽ nhận các thay đổi. Đây chỉ là mục đích thông tin (bạn sẽ cần dịch vụ chuyển DNS AXFR). Ngoài ra, bạn có thể sao chép và dán các thay đổi DNS giữa hai máy chủ DJBDNS với rsync
chương trình.
Nếu bạn có PF Firewall trên máy chủ FreeBSD của mình, hãy thêm dòng này để cho phép truy vấn DNS:
pass quick proto {tcp, udp} from any to $me port 53 flags S/SA keep state