DNS

DNS原理

dns架构

image.png

一次DNS查询的过程

Client --> hosts文件 --> DNS Service Local Cache --> DNS Server (recursion)
--> Server Cache --> iteration(迭代) --> 根 --> 顶级域名DNS --> 二级域名DNS…

资源记录

  • 语法:name [TTL] IN rr_type value
  • name: 域名
  • TTL:缓存存活时间
  • IN:保留
  • rr_type
  • value: IP

资源记录类型

rr_type comments
SOA 起始授权记录;一个区域解析库有且仅有一个SOA记录,必须位于解析库第一条记录
A Internet address,FQDN --> IP
AAAA FQDN --> IPv6
PTR PointTeR, IP -->FQDN
NS Name Server, 专用于标明当前区域的DNS服务器
CNAME Canonical Name, 别名记录
MX Mail eXchanger, 邮件交换器
TXT 对域名进行标识和说明的一种方式,一般做验证记录时使用,如SPF(反垃圾邮件)记录,https验证等
$TTL 1D          #解析记录在缓存中保存的时间
@   IN SOA  master admin.coding.com. (
# @ 表示本域名即coding.com.
# IN 保留字段
# SOA:ttr_type
# master.coding.com  主dns名称
# admin.coding.com.: 主dns管理员邮箱
                    0   ; serial          # 当前dns数据版本号,在主从复制时参照
                    1D  ; refresh        # 主从复制时同步间隔时间
                    1H  ; retry            # 主从复制同步失败时,重试时间
                    1W  ; expire          # 同步失败多长时间,记录失效
                    3H )    ; minimum        # 失败的dns记录保存在缓存时间
    NS master                # 标明当前区域内dns

master A 192.168.80.11
@ MX 10 mailsrv              # 邮件交换
mailsrv A 192.168.37.123
ftp A 1.1.1.1
db A 2.2.2.2
www CNAME websrv        # 别名
websrv A 192.168.80.13
websrv A 192.168.80.14
coding.com  CNAME websrv
@       A 3.3.3.3        # 匹配 coding.com
*       A 4.4.4.4          # 匹配wwwwww.coding.com
$GENERATE 1-254 HOST$ A 1.2.3.$

DNS测试工具

  1. host
  2. dig
    dig [-t type] name [@SERVER] [query options]
查询选项 comments
+ trace 跟踪解析过程:dig +trace coding.com
+ recurse 进行递归解析
-x IP 测试反向解析 dig -x 192.168.80.11
dig -t axfr zone_name @server 查询区域数据记录
dig -t ns qq.com 查询qq的dns服务器
dig -t soa qq.com 查询qq的soa记录
  1. rndc
command comments
reload 重载主配置文件和区域解析库文件
reload zonename 重载区域解析库文件
retransfer zonename 手动启动区域传送,不管序列号是否增加
notify zonename 重新对区域传送发通知
reconfig 重载主配置文件
querylog 开启或关闭查询日志文件/var/log/message
flush 清空dns缓存记录

端口作用

tcp 53 -- 实现主从同步
udp 53 -- 实现查询和主从同步

搭建只缓存dns服务器

  1. 安装dns软件包bind机器工具
yum install bind* -y
  1. 编辑bind配置文件
# vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query     { any; };
  1. 启动服务
rndc reload
or
systemctl restart named
# 查看dns监听端口和ip
ss -nltu
  1. 测试
# 将机器dns指向刚刚配置dns
dig www.baidu.com
host www.baidu.com

搭建主DNS服务器

  1. 创建区域解析数据库
  • 复制区域解析数据库模板
cd /var/named
cp -p named.localhost coding.com.zone # note保留named权限
  • 编辑数据库文件
# vim coding.com.zone

$TTL 1D
@   IN SOA  master.coding.com admin.coding.com. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS master

master A 192.168.80.11
ftp A 1.1.1.1
db A 2.2.2.2
www CNAME websrv
websrv A 192.168.80.13
websrv A 192.168.80.14
  1. 将 区域解析数据库记录加入到bind配置文件
#vim /etc/named.rfc1912.zones
zone "coding.com"{
        type master;
        file "coding.com.zone"
};
  1. 检查配置文件
named-checkconf
  1. 检查解析数据库记录
named-checkzone coding.com /var/named/coding.com.zone
  1. 重启DNS服务
rndc reload

实现反向解析区域 PTR记录

  1. 创建数据解析记录
vim /etc/named.rfc1912.zones 
zone "80.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.80.zone";
}
  1. 编辑/var/named/192.168.80.zone
vim /var/named/192.168.80.zone
$TTL 1D
@ IN SOA ns1.coding.com. admin ( 1 1D 1H 1W 2D )
        NS ns1
ns1     A       192.168.80.11
12      PTR     ftp.coding.com.
15      PTR     db.coding.com.
13      PTR     websrv.coding.com
14      PTR     websrv.coding.com

# 配置所有组和权限
chown :named /var/named/192.168.80.zone
chmod 640 /var/named/192.168.80.zone
  1. 重启服务
rndc reload
  1. 测试配置
dig -x 192.168.80.12
host 192.168.80.12
12.80.168.192.in-addr.arpa domain name pointer ftp.coding.com.

DNS 主从复制

192.168.80.11 --- 主服务器
192.168.80.13 --- 从服务器

  1. 搭建从DNS服务器(192.168.80.13)
# 安装
yum install bind

# 编辑配置文件
vim /etc/named.conf
listen-on port 53 { localhost; };
allow-query     { any; };

vim /etc/named.rfc1912.zones
zone "coding.com" {
        type slave;
        masters {192.168.80.11;};
        file "slaves/coding.com.zone.slave";
};

systemctl start named
  1. 增加一条记录在主DNS(192.168.80.11)上面, 更新版本号, 添加从dns
vim /var/named/coding.com.zone
       
        NS master
        NS slave

master  A 192.168.80.11
slave   A 192.168.80.13

@       MX      10      mailsrv
mailsrv A       1.1.1.1

rndc reload
  1. 测试从DNS
dig -t mx coding.com @192.168.80.13

4 安全加固

在主dns
vim /etc/named.conf

       allow-query     { any; };
       allow-transfer {192.168.80.13;};                  # 仅允许从服务器同步数据

在从dns
vim /etc/named.conf
      allow-query     { any; };
      allow-transfer  { none; };                               # 禁止所有机器同步

子域

同一机器同一区域实现子域 bejing.coding.com

添加一个A记录
vim /var/named/coding.com.zone
www.beijing     A 22.22.22.22

同一机器不同区域实现子域beijing.coding.com

# 创建子域的区域
cp /var/named/coding.com.zone /var/named/beijing.coding.com.zone -p
vim /var/named/beijing.coding.com.zone
$TTL 1D
@   IN SOA      master admin.coding.com. (
                                        3       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS master

master  A 192.168.80.11
www     CNAME websrv
websrv  A 5.5.5.5
# 添加子域配置文件
vim /etc/named.rfc1912.zones
zone "beijing.coding.com"{
        type master;
        file "beijing.coding.com.zone";
};

不同机器上实现子域委派

在192.168.80.14上实现子域shanghai.coding.com

  1. 在主dns上添加一条NS和A记录
vim /var/named/coding.com
shanghai NS ns3
ns3     A 192.168.80.14

1.1 关掉dns安全相关选项

dnssec-enable no;
ndssec-validation no;
  1. 在192.168.80.14上配置主DNS服务
  2. 测试
dig www.shanghai.coding.com

转发

192.168.80.11:主缓存服务器
192.168.80.12:dns转发服务器
配置成只缓存服务器,并将转发发送到192.168.80.11

vim /etc/named.conf
forward first|only
forwarders {192.168.80.11;};

CDN

image.png

GSLB :Global Server Load Balance全局负载均衡

image.png

智能DNS,类CDN服务

1.  
vim /etc/named.conf
acl beijingnet  {
        192.168.80.0/24;
         192.168.90.0/24;
};
acl shanghainet {
        172.16.0.0/16;
         172.17.0.0/16;
};
acl othernet {
        any;
};

view view_beijing {
        match-clients { beijingnet;};
        include "/etc/named.rfc1912.zones.bj";
};
view view_shanghai {
        match-clients { shanghainet;};
       include "/etc/named.rfc1912.zones.sh";
};
view view_other {
        match-clients { othernet;};
        include "/etc/named.rfc1912.zones";
};

2. 
vim /etc/named.rfc1912.zones.bj"
zone "coding.com" {
        type master;
        file "coding.com.zone.bj";
};
vim /etc/named.rfc1912.zones.sh
zone "coding.com" {
        type master;
        file "coding.com.zone.sh";
};
vim /etc/named.rfc1912.zones
zone "coding.com" {
        type master;
        file "coding.com.zone.other";
};
3. 
vim coding.com.zone.bj
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H )
                NS ns1
ns1 A 192.168.37.7
www A 192.168.37.100

vim coding.com.zone.sh
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H )
                NS ns1
ns1 A 192.168.37.7
www A 172.168.16.100

vim coding.com.zone.other
$TTL 1D
@ IN SOA ns1 admin ( 1 1H 1H 1D 3H )
                NS ns1
ns1 A 192.168.37.7
www A 10.10.10.100
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343