This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
BIND/指南
This guide teaches the reader how install and configure BIND for a domain and a local network.
介绍
这个教程将向你展示如何安装及配置BIND,这个互联网上使用最多的DNS服务器。我们使用不同的配置文件来为你的域名配置bind
:针对本地网络和针对世界上的其它地方。我们将使用视图来做那件事。一个视图针对你的内部区域(你的本地网络),另一个视图针对外部区域(世界上的其它地方)。
- View of the internal zone (your local network).
- View for the external zone (rest of the world).
示例中用到的数据
关键词 | 解释 | 示例 |
---|---|---|
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协议。
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的第二部分是用于我们本地网络的内部视图。
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服务器的人们)解析全部其它域名。
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的最后一部分是日志策略。
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保护这台服务器
如果你使用iptables来保护你的服务器,你可以针对DNS服务添加这些规则。
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.