首页 > 系统相关 >68、Linux DNS实现

68、Linux DNS实现

时间:2023-02-19 15:03:49浏览次数:43  
标签:named zone DNS Linux 68 服务器 com example

DNS软件

LINUX DNS软件 bind

bind:服务器

bind-lib:相关库

bind-utils:客户端

bind-chroot:安全包,将DNS相关文件放置/var/named/chroot

68、Linux DNS实现_配置文件

68、Linux DNS实现_配置文件_02

68、Linux DNS实现_配置文件_03

配置文件

BIND主程序:/usr/sbin/named
服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
(3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库

主配置文件

全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
注意:
任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
缓存名称服务器的配置:监听外部地址即可
dnssec: 建议关闭dnssec,设为no

68、Linux DNS实现_配置文件_04

68、Linux DNS实现_DNS_05

主DNS实现

主配置文件配置:

vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};

68、Linux DNS实现_DNS_06

主配置文件检查

named-checkconf

解析库文件语法检查

named-checkzone "example.com" /var/named/example.com.zone

配置生效

rndc reload
systemctl reload named
service named reload

创建DNS区域数据库文件

cp -p /var/named/named.localhost /var/named/example.com.zone
#编辑新增区域文件
vim /var/named/example.com.zone
$TTL 1D
@ IN SOA master admin.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.7.200
WWW A 10.0.7.200
AAAA ::1
#检查区域文件
[14:20:24root@lgw-linux-07named]#named-checkzone example.com /var/named/example.com.zone
zone example.com/IN: loaded serial 0
OK
编辑主配置文件增加区域文件
vim /etc/named.conf
注释下方两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#编辑配置zone配置文件
vim /etc/named.rfc1912.zones
zone "example.com" IN {
type master;
file "example.com.zone";
};

#检查主配置文件

[14:28:03root@lgw-linux-07named]#named-checkconf
#启动服务
[14:30:58root@lgw-linux-07named]#systemctl restart named
[14:31:06root@lgw-linux-07named]#systemctl status named
#在客户端上测试
dig www.example.com @10.0.7.200

68、Linux DNS实现_配置文件_07

68、Linux DNS实现_配置文件_08

68、Linux DNS实现_DNS_09

68、Linux DNS实现_DNS_10

68、Linux DNS实现_配置文件_11

动态更新

可以通过远程更新区域数据库的资源记录

实现动态更新,需要在指定的zone语句块中:

Allow-update {any;};

zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-update { 192.0.2.0/24; };
};

68、Linux DNS实现_DNS_12

从DNS实现

只有一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实现DNS服务的容错机制

1. 应该为一台独立的名称服务器
2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4. 主服务器得允许从服务器作区域传送
5. 主从服务器时间应该同步,可通过ntp进行
6. bind程序的版本应该保持一致;否则,应该从高,主低

格式:

zone "ZONE_NAME" IN {
type slave;
masters { MASTER_IP; };
file "slaves/ZONE_NAME.zone";
};
#主DNS配置如上
#从DNS配置,更改主配置文件,参考主DNS
增加
allow-transfer { none;};不允许其他主机进行区域传输
#编辑配置文件
vim /etc/named.rfc1912.zones
zone "example.com" IN {
type slave;
masters {10.0.7.200;};
file "slaves/example.com.slave";
};
#启动从服务器的named服务
systemctl start named

68、Linux DNS实现_DNS_13

68、Linux DNS实现_配置文件_14

68、Linux DNS实现_配置文件_15

风险:任何一台机器都可以从主服务器拿取域名解析数据库,以下方式设置安全?

#编辑主配置文件
vim /etc/named.conf
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#不允许其它主机进行区域传输
allow-transfer { none;};

如果是针对特定zone
vim /etc/named.rfc1912.zones
zone "example.com" {
type master;
file "/var/named/example.com.zone";
allow-transfer { 192.0.2.10; }; // 允许192.0.2.10服务器传输该域名
};
反向解析区域

即将IP反向解析为FQDN

区域名称:网络地址反写.in-addr.arpa.

172.16.100. --> 100.16.172.in-addr.arpa.
#定义区域
zone "ZONE_NAME" IN {
type {master|slave|forward};
file "网络地址.zone"
};
#定义区域解析库文件 注意:不需要MX,以PTR记录为主

$TTL 86400
$ORIGIN 8.168.192.in-addr.arpa.
@ IN SOA ns1.example.com. admin.example.com. (
2015042201
1H
5M
7D
1D )
IN NS ns1.example.com.
11 IN PTR ns1.example.com.


子域DNS实现

将子域委派给其它主机管理,实现分布式DNS数据库

#编辑父域DNS配置文件
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
#只允许从服务器进行区域传输
allow-transfer { 从服务器IP;};
dnssec-enable no;
dnssec-validation no;
#编辑zone文件
vim /etc/named.rfc1912.zones
#加上这段
zone "example.com" {
type master;
file "example.com.zone";
};
cp -p /var/named/named.localhost /var/named/example.com.zone
#如果没有-p,需要改权限。chgrp named magedu.org.zone
#编辑example.com.zone配置文件
vim /var/named/example.com.zone
$TTL 1D
@ IN SOA master admin.example.com. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
shanghai NS shanghains
master A 192.168.8.8
shanghains A 192.168.8.18
# 启动named服务
systemctl start named 第一次启动
rndc reload 加载配置文件

子域DNS
#编辑配置文件
vim /etc/named.conf
#注释掉下面两行
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
allow-transfer { none;};
#编辑zone配置文件
vim /etc/named.rfc1912.zones
zone "shanghai.example.com" {
type master;
file "shanghai.example.com.zone";
};

cp -p /var/named/named.localhost /var/named/shanghai.example.com.zone
#如果没有-p,需要改权限。chgrp named example.com.zone
vim /var/named/shanghai.example.com.zone
$TTL 1D
@ IN SOA master admin.example.com. (
2019042214 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.8.18
systemctl start named #第一次启动服务
rndc reload #不是第一次启动服务
DNS转发器实现

利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务,而非默认的根DNS服务器,并将指定服务器查询的返回结果进行缓存,提高效率

注意:

1. 被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
2. 在全局配置块中,关闭dnssec功能
dnssec-enable no;
dnssec-validation no;

全局转发

Options {
forward first|only;
forwarders { ip;};
};

特定区域转发

zone "ZONE_NAME" IN {
type forward;
forward first|only;
forwarders { ip;};
};

first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询

only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询

DNS排查命令

dig:dig只用于测试dns系统,不会查询hosts文件进行解析

dig [-t type] name [@SERVER] [query options]
query options:
+[no]trace:跟踪解析过程 : dig +trace example.com
+[no]recurse:进行递归解析


68、Linux DNS实现_DNS_16

68、Linux DNS实现_DNS_17

68、Linux DNS实现_DNS_18

host命令

host [-t type] name [server]

68、Linux DNS实现_配置文件_19

nslookup

nslookup 可以支持交互和非交互式两种方式执行

nslookup [-option] [name | -] [server]

rdnc命令

利用rndc工具可以实现管理DNS功能,监听端口tcp953

rndc COMMAND
COMMAND:
status: 查看状态
reload: 重载主配置文件和区域解析库文件
reload zonename: 重载区域解析库文件
retransfer zonename: 手动启动区域传送,而不管序列号是否增加
notify zonename: 重新对区域传送发通知
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志文件/var/log/message
trace: 递增debug一个级别
trace LEVEL: 指定使用的级别
notrace:将调试级别设置为 0
flush:清空DNS服务器的所有缓存记录

标签:named,zone,DNS,Linux,68,服务器,com,example
From: https://blog.51cto.com/gavenlee/6064301

相关文章

  • Linux基础 - 进程管理 ps
     psaux|sort-k4,4nr|head-n10 #查看内存占用前10名的程序ps-e/ps-ef/ps-eF/ps-ely  #Toseeeveryprocessonthesystemusingstandardsy......
  • Linux系统的日志管理
    (Linux系统的日志管理)一、systemd-journald服务1.systemd-journald介绍#系统时间日志的核心服务#收集包括来自内核,早期引导阶段啊,进程启动,运行时的标准输出和错误输......
  • Linux系列教程(十四)——Linux用户和用户组管理之相关配置文件
    前面我们介绍了软件包管理。首先介绍了rpm包的相关命令,但是我们发现直接安装rpm包会被其依赖性折磨的不行,然后解决办法是yum在线管理,通过yum命令安装rpm包能自动帮助我......
  • 【自用】Linux常用命令
    目录grepgrepLinux搜索指定目录中所有文件的内容grep-rn'要搜索的关键词'*-r递归查找-n显示行号-R查找所有文件包含子目录-i忽略大小写-l只列出匹配的文件......
  • Linux基础 - 文件系统 /proc
      一、/proc文件系统1.1/proc:一个虚拟文件系统/proc文件系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做/proc)。最初的设计目的是允许......
  • 5.windows安装linux系统
    本章意图将windows系统安装为Linux系统 1.安装的准备:U盘(不小于20G)windows电脑安装软件连接链接:https://pan.baidu.com/s/1QHYv3tif2cX3V6dDQ9nV4w提取码:o1......
  • github 私有仓库linux下免输入账号密码 ||php shell_exec webhook自动化部署||如何使w
    github私有仓库linux下免输入账号密码cd~/touch.git-credentialsvim.git-credentials内容为:https://{username}:{password}@github.com比如https://account:password......
  • Linux 安装jdk并配置环境
    1、官网下载安装包注:笔者所用的远程连接工具为WindTerm官网:Oracle官网网盘:网盘下载下拉,找到Java8点击jdk-8u351-linux-x64.tar.gz即可,如果需要登录那就登录一......
  • linux文件保护命令chattr
    chattr命令用来设置文件属性的一个工具,与chmod和chown不同,chattr命令主要是用来提高系统文件的安全性,对相应的文件进行锁定,可以很有效的防止误删除误操作,与chattr对应的命......
  • linux centOs7 安装docker
    一.设置安装源yum-config-manager--add-repohttp://download.docker.com/linux/centos/docker-ce.repo(中央仓库)或yum-config-manager--add-repohttp://mirrors.aliyu......