BIND/指南
本指南教读者如何为域名和本地网络安装和配置 BIND。
介绍
本教程将向您展示如何安装和配置 Internet 上最常用的 DNS 服务器 BIND。我们将使用不同的配置为域名配置 BIND,一种用于本地网络,另一种用于世界其他地方。将使用两个视图来执行此操作:
- 查看内部区域(你的本地网络)。
- 查看外部区域(世界其他地区)。
示例中用到的数据
关键字 | 解释 | 示例 |
---|---|---|
YOUR_DOMAIN | 你的域名 | gentoo.org |
YOUR_PUBLIC_IP | ISP给你的公网 ip | 204.74.99.100 |
YOUR_LOCAL_IP | 本地 ip 地址 | 192.168.1.5 |
YOUR_LOCAL_NETWORK | 本地网络 | 192.168.1.0/24 |
SLAVE_DNS_SERVER | 您的域名的从属 DNS 服务器的 IP 地址。 | 209.177.148.228 |
ADMIN | DNS 服务器管理员的名称。 | root |
MODIFICATION | 文件区的修改日期,加上一个数字 | 2009062901 |
配置BIND
安装
首先,安装net-dns/bind。
root #
emerge --ask net-dns/bind
配置/etc/bind/named.conf
第一件要配置的事是/etc/bind/named.conf。这一步骤的第一部分是指定bind的根目录、IP上的监听端口、pid文件和一行针对IPv6协议。
/etc/bind/named.conf
选项部分options { directory "/var/bind"; listen-on-v6 { none; }; listen-on port 53 { 127.0.0.1; YOUR_LOCAL_IP; }; pid-file "/var/run/named/named.pid"; };
named.conf的第二部分是用于我们本地网络的内部视图。
/etc/bind/named.conf
内部视图view "internal" { match-clients { YOUR_LOCAL_NETWORK; localhost; }; recursion yes; zone "YOUR_DOMAIN" { type master; file "pri/YOUR_DOMAIN.internal"; allow-transfer { any; }; }; };
named.conf的第三部分是用于在世界上的其它地方的外部视图和为我们(和想使用我们DNS服务器的人们)解析全部其它域名。
/etc/bind/named.conf
外部视图view "external" { match-clients { any; }; recursion no; zone "." IN { type hint; file "named.ca"; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; zone "YOUR_DOMAIN" { type master; file "pri/YOUR_DOMAIN.external"; allow-query { any; }; allow-transfer { SLAVE_DNS_SERVER; }; }; };
named.conf的最后一部分是日志策略。
/etc/bind/named.conf
外部视图logging { channel default_syslog { file "/var/log/named/named.log" versions 3 size 5m; severity debug; print-time yes; print-severity yes; print-category yes; }; category default { default_syslog; }; };
/var/log/named/目录必须存在并且属于named
:
root #
mkdir -p /var/log/named/
root #
chmod 770 /var/log/named/
root #
touch /var/log/named/named.log
root #
chmod 660 /var/log/named/named.log
root #
chown -R named /var/log/named/
root #
chgrp -R named /var/log/named/
创建内部区域文件
我们使用网络示例图中的主机名和IP地址。注意几乎全部(不是全部)域名以“.”(点)结尾。
/var/bind/pri/YOUR_DOMAIN.internal
$TTL 2d @ IN SOA ns.YOUR_DOMAIN. ADMIN.YOUR_DOMAIN. ( MODIFICATION ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum YOUR_DOMAIN. IN MX 0 mail.YOUR_DOMAIN. YOUR_DOMAIN. IN TXT "v=spf1 ip4:YOUR_PUBLIC_IP/32 mx ptr mx:mail.YOUR_DOMAIN ~all" YOUR_DOMAIN. IN NS ns.YOUR_DOMAIN. YOUR_DOMAIN. IN NS SLAVE_DNS_SERVER www.YOUR_DOMAIN. IN A 192.168.1.3 ns.YOUR_DOMAIN. IN A 192.168.1.5 mail.YOUR_DOMAIN. IN A 192.168.1.3 router.YOUR_DOMAIN. IN A 192.168.1.1 hell.YOUR_DOMAIN. IN A 192.168.1.3 heaven.YOUR_DOMAIN. IN A 192.168.1.5 desktop.YOUR_DOMAIN. IN A 192.168.1.4
创建外部区域文件
这里我们只有我们希望针对外部客户端的子域名(www、mail和ns)。
/var/bind/pri/YOUR_DOMAIN.external
$TTL 2d @ IN SOA ns.YOUR_DOMAIN. ADMIN.YOUR_DOMAIN. ( MODIFICATION ;serial 3h ;refresh 1h ;retry 1w ;expiry 1d ) ;minimum YOUR_DOMAIN. IN MX 0 mail.YOUR_DOMAIN. YOUR_DOMAIN. IN TXT "v=spf1 ip4:YOUR_PUBLIC_IP/32 mx ptr mx:mail.YOUR_DOMAIN ~all" YOUR_DOMAIN. IN NS ns.YOUR_DOMAIN. YOUR_DOMAIN. IN NS SLAVE_DNS_SERVER www.YOUR_DOMAIN. IN A YOUR_PUBLIC_IP ns.YOUR_DOMAIN. IN A YOUR_PUBLIC_IP mail.YOUR_DOMAIN. IN A YOUR_PUBLIC_IP
完成配置
你需要添加named
到默认启动级别:
root #
rc-update add named default
配置客户端
现在你可以在所有在你的内部网络上的计算机中使用我们的DNS服务器去解析域名。修改所有在你的内部网络上的计算机中的/etc/resolv.conf文件。
/etc/resolv.conf
search YOUR_DOMAIN nameserver YOUR_DNS_SERVER_IP
注意YOUR_DNS_SERVER_IP是和我们在这篇文档中的YOUR_LOCAL_IP一样。在示例图片中是192.168.1.5。
测试
我们有能力测试我们的新DNS服务器。首先,我们需要启动服务。
root #
/etc/init.d/named start
现在,我们将对一些域名使用一些host
命令。我们可以使用任何在我们内部网络中的计算机来完成这个测试。如果你没有安装net-dns/host
,你可以使用ping
来代替。或者,先运行emerge host
。
user $
host www.gentoo.org
www.gentoo.org has address 209.177.148.228 www.gentoo.org has address 209.177.148.229
user $
host hell
hell.YOUR_DOMAIN has address 192.168.1.3
user $
host router
router.YOUR_DOMAIN has address 192.168.1.1
使用iptables保护这台服务器
运行 DNS 服务时,可以使用以下规则配置 iptables 以增加保护:
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Vicente Olivert Riera, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.