centos dns 服务,centos7配置DNS服务器
其实centos dns 服务的问题并不复杂,但是又很多的朋友都不太了解centos7配置DNS服务器,因此呢,今天小编就来为大家分享centos dns 服务的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
CentOS系统怎样安装DNS服务器
CentOS系统安装DNS服务器方法
DNS安装配置
在 RHEL5、6中 DNS都是用的是 bind软件包,而在 RHEL/CentOS 7用的是 unbound安装包,配置文件也有了改变。我们来看一下:
2.1.安装:
代码如下:
[root@linuxprobe~]# yum-y install unbound
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
---> Running transaction check
---> Package unbound.x86_64 0:1.4.20-19.el7 will be installed
---> Finished Dependency Resolution
·····
启动服务
代码如下:
[root@linuxprobe~]# systemctl restart unbound//启动DNS服务
[root@linuxprobe~]# systemctl enable unbound
ln-s‘/usr/lib/systemd/system/unbound.service‘‘/etc/systemd/system/multi-user.target.wants/unbound.service‘
//下次系统重启自动启动DNS服务
2.2.修改配置文件
unbound安装好之后,缺省配置文件在/etc/unbound/unbound.conf。
2.2.1.修改端口监听地址
相当于 RHEL6配置文件中的:listen-on port 53{ any;};
查看默认监听地址
代码如下:
[root@linuxprobe~]# netstat-tunlp|grep unbound
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3333/unbound
tcp 0 0 127.0.0.1:8953 0.0.0.0:* LISTEN 3333/unbound
tcp6 0 0::1:53:::* LISTEN 3333/unbound
tcp6 0 0::1:8953:::* LISTEN 3333/unbound
udp 0 0 127.0.0.1:53 0.0.0.0:* 3333/unbound
udp6 0 0::1:53:::* 3333/unbound
//默认监听本地回环地址,也就是现在只有自己能访问DNS服务,其它主机不能访问本机的DNS服务
修改监听地址代码如下:
[root@linuxprobe~]# vim/etc/unbound/unbound.conf
……
38# interface: 0.0.0.0
39 interface: 0.0.0.0
……
//找到38行,复制去掉注释行,打开监听全网功能。
重启服务查看
代码如下:
[root@linuxprobe~]# systemctl restart unbound
[root@linuxprobe~]# netstat-tunlp|grep unbound
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 3461/unbound
tcp 0 0 127.0.0.1:8953 0.0.0.0:* LISTEN 3461/unbound
tcp6 0 0::1:8953:::* LISTEN 3461/unbound
udp 0 0 0.0.0.0:53 0.0.0.0:* 3461/unbound
//现在53号端口监听的是0.0.0.0,即所有网段都监听。
2.2.2.修改允许查询的范围
在 RHEL6中,DNS配置文件中有这样一句:allow-query{ localhost;};。此句定义的是允许向本机查询(迭代&递归)的主机范围,localhost代表只有本机可以向本机查询。而在配置中,经常改 localhost为 any,让所有主机能够向本机查询 DNS。所以,在 RHEL7中,也要做这样的修改,只不过修改内容不同而已,如下:
代码如下:
[root@linuxprobe~]# vim/etc/unbound/unbound.conf
……
177# access-control: 0.0.0.0/0 refuse
178 access-control: 0.0.0.0/0 allow
179# access-control: 127.0.0.0/8 allow
……
找到配置文件/etc/unbound/unbound.conf的第177行,缺省为注释行,把内容改为允许访问,然后保存退出,重启服务即可。
2.2.3.创建解析文件
RHEL/CentOS 5、6系统中,DNS的解析文件分正向和反向两个解析文件,并且有解析文件的模板文件。但是在 RHEL7中,正反向解析文件合并为一个,并且无模板文件,需自己创建,路径可以在主配置文件中查看:
代码如下:
[root@linuxprobe~]# vim/etc/unbound/unbound.conf
……
453# You can add locally served data with
454# local-zone:"local." static
455# local-data:"mycomputer.local. IN A 192.0.2.51"
//正向解析可参考语法
456# local-data:‘mytext.local TXT"content of text record"‘
457#
458# You can override certain queries with
459# local-data:"adserver.example.com A 127.0.0.1"
460#
461# You can redirect a domain to a fixed address with
462#(this makes example.com, www.example.com, etc, all go to 192.0.2.3)
463# local-zone:"example.com" redirect
464# local-data:"example.com A 192.0.2.3"
465#
# Shorthand to make PTR records,"IPv4 name" or"IPv6 name".
467# You can also add PTR records using local-data directly, but then
468# you need to do the reverse notation yourself.
469# local-data-ptr:"192.0.2.3 www.example.com"
//反向解析参考语法
470
471 include:/etc/unbound/local.d/*.conf
472
473# service clients over SSL(on the TCP sockets), with plain DNS inside
……
查看本机FQDN
代码如下:
[root@linuxprobe~]# hostname
linuxprobe.example.com
//由此可知,域名为example.com
创建解析文件代码如下:
[root@linuxprobe~]# vim/etc/unbound/local.d/example.conf
local-zone:"example.com." static
local-data:"example.com. 86400 IN SOA ns.example.com. root 1 1D 1H 1W 1H"
local-data:"ns.example.com. IN A 192.168.10.10"
local-data:"linuxprobe.example.com. IN A 192.168.10.10"
local-data-ptr:"192.168.10.10 ns.example.com."
local-data-ptr:"192.168.10.10 linuxprobe.example.com."
查看RHEL6上解析文件以作对比
代码如下:
[root@linuxprobe~]# vim/var/named/named.localhost
$TTL 1D
@ IN SOA@ rname.invalid.(
0; serial
1D; refresh
1H; retry
1W; expire
3H); minimum
NS@
A 127.0.0.1
AAAA::1
2.3.禁用服务用户
每个服务都是有其专用的服务用户,DNS的服务用户为 unbound,实际情况下服务用户的启用有可能有安全隐患,这里要禁用服务用户。
代码如下:
[root@linuxprobe~]# vim/etc/unbound/unbound.conf
······
211# if given, user privileges are dropped(after binding port),
212# and the given username is assumed. Default is user"unbound".
213# If you give"" no privileges are dropped.
214#username:"unbound"
215 username:""
216
217# the working directory. The relative files in this config
······
如上,找到配置文件的第214行,删除unbound即可,删除后为:username”“。
2.4.验证
代码如下:
[root@linuxprobe~]# unbound-checkconf
unbound-checkconf: no errors in/etc/unbound/unbound.conf
验证无配置问题,即可重启服务
复制代码代码如下:
[root@linuxprobe~]# systemctl restart unbound
dns验证:
修改本机DNS
代码如下:
[root@linuxprobe~]# vim/etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=00:0C:29:70:····
TYPE=Ethernet
····
IPADDR="192.168.10.10"
PREFIX="24"
···
DNS1=192.168.10.10
NAME=eth0
ONBOOT=no
[root@linuxprobe~]# systemctl restart network
nslookup验证
代码如下:
[root@linuxprobe~]# nslookup
linuxprobe.example.com.
192.168.10.10
ok dns设置成功
PS:关闭防火墙
在本次实验中我们关闭了 linux的3大防火墙。当没有关闭防火墙时,远程主机验证可能出现故障,这时需要在 DNS服务器防火墙上开放 DNS服务。我们以 firewall防火墙为例,修改一下:
代码如下:
[root@linuxprobe~]# systemctl stop iptables
[root@linuxprobe~]# systemctl stop ebtables
[root@linuxprobe~]# systemctl disable iptables
[root@linuxprobe~]# systemctl disable ebtables
[root@linuxprobe~]# firewall-cmd--add-service=dns--permanent
success
[root@linuxprobe~]# firewall-cmd--reload
success
[root@linuxprobe~]# firewall-cmd--list-all
public(default, active)
interfaces: eth0
sources:
services: dhcpv6-client dns ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
//DNS服务器上Firewall开放DNS访问ok
CentOS7实现DNSDHCP动态更新详解
windows域里有一个功能,dhcp把新分发的ip数据发给DNS服务器,这样只要知道一个人的电脑名字就可以很方便的远程。
linux当然也能很好的实现类似的功能。man 5 dhcpd.conf有详细描述。
昨天运维帮组织线下的沙龙,又拍云的运维总监邵海杨先生分享了一句“千金难买早知道”。是啊,就在实现动态更新的功能上,在网上找了不少博客,照着做又遇到各种问题,最后不不知道到底什么原理实现的。早知道认真看一下man,问题早解决了,对实现的原理也理解得深些。所以,在这个信息爆炸的时代,很多时候真的互联网没有让人更聪明,反而大量的信息经常把人淹没了。技术,还是需要静下心来去钻研的。
dhcp和dns的基本配置资料比较完善,此处不再赘述。有心的朋友认真看一下man 5 dhcpd.conf,瞧一眼下面配置中标红的部分,相信就能搞定了。
另外分享一个dns chroot的流程,先安装 bind,调通named,然后再安装bind-chroot
执行/usr/libexec/setup-named-chroot.sh/var/named/chroot on
停用named,启用named-chroot即可
systemctl disabled named; systemctl stop named
systemctl enable named-chroot;systemctl start named-chroot
[root@pxe~]# cat/etc/dhcp/dhcpd.conf
ddns-update-style interim;
ddns-updates on;
do-forward-updates on;
allow client-updates;
allow bootp;
allow booting;
#allow client-updates;
option space Cisco_LWAPP_AP;
option Cisco_LWAPP_AP.server-address code 241= array of ip-address;
option space pxelinux;
option pxelinux.magic code 208= string;
option pxelinux.configfile code 209= text;
option pxelinux.pathprefix code 210= text;
option pxelinux.reboottime code 211= unsigned integer 32;
option architecture-type code 93= unsigned integer 16;
subnet 192.168.1.0 netmask 255.255.255.0{
authoritative;
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option domain-name"it.lab";
option domain-name-servers 192.168.1.200;
range dynamic-bootp 192.168.1.100 192.168.1.199;
key SEC_DDNS{
algorithm hmac-md5;
secret 7ObhTIhKeDFMR2SbbS5s8A==;
};
ddns-domainname"it.lab";
zone it.lab.{
primary 192.168.1.200;
key SEC_DDNS;
}
zone 1.168.192.in-addr.arpa.{
primary 192.168.1.200;
key SEC_DDNS;
}
default-lease-time 600;
max-lease-time 7200;
class"pxeclients"{
match if substring(option vendor-class-identifier, 0, 9)="PXEClient";
next-server 192.168.1.200;
if option architecture-type= 00:07{
filename"uefi/syslinux.efi";}
else{
filename"bios/pxelinux.0";}
#filename"pxelinux.0";}
}
}
[root@pxe~]# cat/etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver(as a localhost DNS resolver only).
//
// See/usr/share/doc/bind*/sample/ for example named configuration files.
//
options{
listen-on port 53{ 127.0.0.1;192.168.1.200;};
listen-on-v6 port 53{::1;};
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";
allow-query{ any;};
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE(caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key*/
bindkeys-file"/etc/named.iscdlv.key";
managed-keys-directory"/var/named/dynamic";
pid-file"/run/named/named.pid";
session-keyfile"/run/named/session.key";
};
logging{
channel default_debug{
file"data/named.run";
severity dynamic;
};
};
zone"." IN{
type hint;
file"named.ca";
};
include"/etc/named.rfc1912.zones";
include"/etc/named.root.key";
key SEC_DDNS{
algorithm hmac-md5;
secret 7ObhTIhKeDFMR2SbbS5s8A==;
};
zone"it.lab" IN{
type master;
file"it.lab.forward";
allow-update{ key SEC_DDNS;};
};
zone"1.168.192.in-addr.arpa" IN{
type master;
file"1.168.192.reverse";
allow-update{ key SEC_DDNS;};
};
centos7配置dns
CentOS7配置DNS的方法如下:
1、打开终端,使用root权限登录。
2、编辑/etc/resolv.conf文件,可以使用文本编辑器如vi或nano进行编辑。
3、在文件中添加以下行来指定DNS服务器的IP地址:nameserverDNS_IP_ADDRESS,将“DNS_IP_ADDRESS”替换为要使用的DNS服务器的实际IP地址。可以添加多个nameserver行,按优先顺序指定多个DNS服务器。
4、保存并关闭/etc/resolv.conf文件。
5、重启网络服务以使更改生效。可以使用以下命令重启网络服务:systemctlrestartnetwork。
6、重启成功后,可以通过以下命令验证/etc/resolv.conf文件是否已经更新:cat/etc/resolv.conf。检查是否显示了添加的DNS服务器IP地址。