在CentOS 6上设置BIND DNS服务器
时间:2020-03-21 11:42:28 来源:igfitidea点击:
使用VirtualBox设置Linux测试环境环境的第2部分。
检查此教程 文章以获取更多信息。
BIND是开源软件,可为Internet实现域名系统(DNS)协议。
名称BIND代表“伯克利Internet名称域”。
软件
本文使用的软件:
- CentOS 6
- Bind 9.8
在我们开始之前
我们将要建立一个通用的DNS服务器,该服务器:
- 充当两个内部区域的主节点,以及
- 充当所有其他请求的缓存服务器。
BIND服务器的信息:
- 主机名:spacewalk,
- IP:10.8.8.2,
- 局域网:10.8.8.0/24.
将设置两个内部DNS区域:
- hl.local –前向区域,可将域名转换为IP地址,
- 8.8.10 –反向区域,可将IP地址转换为域名。
在我们的案例中,hl.local域代表“测试环境”。
DNS服务器将通过以下方式保护:
- 以较少的权限运行BIND,
- 将查询限制为仅LAN,
- 限制区域仅传输到局域网,
- 隐藏公开的BIND版本号和主机名,
- 将iptables配置为仅允许从LAN访问TCP/UDP端口53,
安装
安装BIND软件包:
# yum install -y bind bind-utils
在启动时启动BIND:
# chkconfig named on
更新“ /etc/resolv.conf”文件:
search hl.local nameserver 127.0.0.1 nameserver 10.8.8.2
我们将peerdns设置为“ no”。
配置
创建一个日志目录:
# mkdir /var/log/named # chown named:named /var/log/named
/etc/named.conf
提供了一些注释。
请查看BIND v9.8文档以获取更多信息。
include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; # Limiting access to local networks only acl "clients" { 127.0.0.0/8; 10.8.8.0/24; }; options { listen-on port 53 { any; }; listen-on-v6 { none; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; # Maximum number of simultaneous client TCP connections to accept tcp-clients 50; # Disable built-in server information zones version none; hostname none; server-id none; # Attempt to do all the work required to answer the query recursion yes; recursive-clients 100; allow-recursion { clients; }; allow-query { clients; }; # Only LAN users are allowed to receive zone transfers from the server allow-transfer { clients; }; auth-nxdomain no; notify no; dnssec-enable yes; dnssec-validation auto; dnssec-lookaside auto; # Path to ISC DLV key bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; # Specifications of what to log, and where the log messages are sent logging { channel "common_log" { file "/var/log/named/named.log" versions 10 size 5m; severity error; print-category yes; print-severity yes; print-time yes; }; category default { "common_log"; }; category general { "common_log"; }; category queries { "common_log"; }; category client { "common_log"; }; category security { "common_log"; }; category query-errors { "common_log"; }; category lame-servers { null; }; }; # Internal zone definitions zone "hl.local" { type master; file "/etc/named/db.hl.local"; allow-update { none; }; }; zone "8.8.10.in-addr.arpa" { type master; file "/etc/named/db.8.8.10"; allow-update { none; }; };
/etc/named/db.hl.local
$TTL 86400 @ IN SOA localhost. root.localhost. ( 2014101000 ; Serial 86400 ; Refresh 3600 ; Retry 604800 ; Expire 7200 ) ; Negative Cache TTL @ IN NS localhost. @ IN A 10.8.8.2 dhcp IN A 10.8.8.2 dns IN A 10.8.8.2 ntp IN A 10.8.8.2 puppet IN A 10.8.8.2 smtp IN A 10.8.8.2 spacewalk IN A 10.8.8.2
/etc/named/db.8.8.10
$TTL 86400 @ IN SOA localhost. root.localhost. ( 2014101000 ; Serial 86400 ; Refresh 3600 ; Retry 604800 ; Expire 7200 ) ; Negative Cache TTL @ IN NS localhost. 2 IN PTR dhcp.hl.local. ;10.8.8.2 2 IN PTR dns.hl.local. ;10.8.8.2 2 IN PTR ntp.hl.local. ;10.8.8.2 2 IN PTR puppet.hl.local. ;10.8.8.2 2 IN PTR smtp.hl.local. ;10.8.8.2 2 IN PTR spacewalk.hl.local. ;10.8.8.2
验证BIND配置
# named-checkconf /etc/named.conf
如果未出现任何错误,请重新启动服务:
# /etc/init.d/named restart
在BIND服务器上配置iptables以允许LAN访问
iptables将通过Puppet进行配置。
以下几行仅用于:
# iptables -A INPUT -s 10.8.8.0/24 -p tcp -m state --state NEW --dport 53 -j ACCEPT # iptables -A INPUT -s 10.8.8.0/24 -p udp -m state --state NEW --dport 53 -j ACCEPT
故障排除
检查日志:
# tail /var/log/messages # tail /var/log/named/named.log