DNS与Bind基本配置实现

DNS是一个用来把名称解析为IP地址的协议,它是标准TCP/IP协议簇的一部分,是几个能提供名称解析功能的协议中的一个,其他的协议包括NIS和LDAP。

DNS与这些协议的不同之处在于它只做名称解析这一件事,NIS和LDAP还能做其他解析操作,例如对网络用户和组账户的解析。

DNS也是名称解析的行业标准,被因特网上绝大多数系统所采用。

DNS客户端配置非常简单,如linux只需要在本地名为/etc/resolv.conf的文件里指定要使用的DNS服务器的地址即可:

[root@worker-03 ~]#cat/etc/resolv.conf

nameserver 172.16.21.2

ICANN

全世界域名的最高管理机构,是一个叫做 ICANN (Internet Corporation for Assigned Names and Numbers)的组织。它的总部在美国加州。

它原来是美国商务部下面的一个非盈利机构。2016年,美国政府宣布,ICANN 不再隶属于商务部,成为一个自我管理的独立机构。

ICANN 负责管理全世界域名系统的运作。它的一项主要工作,就是规定顶级域名(top level domain,简写为 TLD)。

顶级域名有1000多个,ICANN 自己不会去管理这些顶级域名,每个顶级域名下面都有许多批发商。

ICANN 的政策是,每个顶级域名都找一个托管商,该域名的所有事项都由托管商负责。ICANN 只与托管商联系,这样管理起来就容易多了。举例来说,.cn域名的托管商就是中国互联网络信息中心(CNNIC),它决定了.cn域名的各种政策。

目前,世界最大的顶级域名托管商是美国的 Verisign 公司。

根域名及根服务器

由于 ICANN 管理着所有的顶级域名,所以它是最高一级的域名节点,被称为根域名(root domain)。在有些场合,www.naquan.com被写成www.naquan.com.,即最后还会多出一个点。这个点就是根域名。

DNS 域名解析服务采用了类似目录树的层次结构来记录域名与 IP 地址之间的对应关系,从而形成了一个分布式的数据库系统

理论上,所有域名查询都必须先查询根域名,因为只有根域名才能告诉你,某个顶级域名由哪台服务器管理。ICANN 维护着一张列表,里面记载着顶级域名和对应的托管商。

比如,要访问www.naquan.com,就必须先询问 ICANN 的根域名列表,它会告诉我.com域名由 Verisign 托管,必须去找 Verisign,它会告诉我example.com服务器在哪里。

DNS 根域名服务器

保存 DNS 根区文件的服务器,就叫做 DNS 根域名服务器(root name server)。

由于早期的 DNS 查询结果是一个512字节的 UDP 数据包。这个包最多可以容纳13个服务器的地址,因此就规定全世界有13个根域名服务器,编号从a.root-servers.net一直到m.root-servers.net。分布在世界各地,其管理单位、具体的地理位置,以及 IP 地址如表

名称 管理单位 地理位置 IP 地址

A INTERNIC.NET 美国弗吉尼亚州 198.41.0.4

B 美国信息科学研究所 美国加利福尼亚州 128.9.0.107

C PSINet 公司 美国弗吉尼亚州 192.33.4.12

D 马里兰大学 美国马里兰州 128.8.10.90

E 美国航空航天管理局 美国加利福尼亚州 192.203.230.10

F 因特网软件联盟 美国加利福尼亚州 192.5.5.241

G 美国国防部网络信息中心 美国弗吉尼亚州 192.112.36.4

H 美国陆军研究所 美国马里兰州 128.63.2.53

I Autonomica 公司 瑞典斯德哥尔摩 192.36.148.17

J VeriSign 公司 美国弗吉尼亚州 192.58.128.30

K RIPE NCC 英国伦敦 193.0.14.129

L IANA 美国弗吉尼亚州 199.7.83.42

M WIDE Project 日本东京 202.12.27.33

注:DNS服务器会保存根服务器的信息,Bind系统默认保存在/var/named/named.ca

[root@worker-03 ~]#  cat /var/named/named.ca

; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net

; (2 servers found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 1472

;; QUESTION SECTION:

;.                              IN      NS

;; ANSWER SECTION:

.                      518400  IN      NS      a.root-servers.net.

.                      518400  IN      NS      b.root-servers.net.

.                      518400  IN      NS      c.root-servers.net.

.                      518400  IN      NS      d.root-servers.net.

.                      518400  IN      NS      e.root-servers.net.

.                      518400  IN      NS      f.root-servers.net.

.                      518400  IN      NS      g.root-servers.net.

.                      518400  IN      NS      h.root-servers.net.

.                      518400  IN      NS      i.root-servers.net.

.                      518400  IN      NS      j.root-servers.net.

.                      518400  IN      NS      k.root-servers.net.

.                      518400  IN      NS      l.root-servers.net.

.                      518400  IN      NS      m.root-servers.net.

;; ADDITIONAL SECTION:

a.root-servers.net.    518400  IN      A      198.41.0.4

b.root-servers.net.    518400  IN      A      199.9.14.201

c.root-servers.net.    518400  IN      A      192.33.4.12

d.root-servers.net.    518400  IN      A      199.7.91.13

e.root-servers.net.    518400  IN      A      192.203.230.10

f.root-servers.net.    518400  IN      A      192.5.5.241

g.root-servers.net.    518400  IN      A      192.112.36.4

h.root-servers.net.    518400  IN      A      198.97.190.53

i.root-servers.net.    518400  IN      A      192.36.148.17

j.root-servers.net.    518400  IN      A      192.58.128.30

k.root-servers.net.    518400  IN      A      193.0.14.129

l.root-servers.net.    518400  IN      A      199.7.83.42

m.root-servers.net.    518400  IN      A      202.12.27.33

a.root-servers.net.    518400  IN      AAAA    2001:503:ba3e::2:30

b.root-servers.net.    518400  IN      AAAA    2001:500:200::b

c.root-servers.net.    518400  IN      AAAA    2001:500:2::c

d.root-servers.net.    518400  IN      AAAA    2001:500:2d::d

e.root-servers.net.    518400  IN      AAAA    2001:500:a8::e

f.root-servers.net.    518400  IN      AAAA    2001:500:2f::f

g.root-servers.net.    518400  IN      AAAA    2001:500:12::d0d

h.root-servers.net.    518400  IN      AAAA    2001:500:1::53

i.root-servers.net.    518400  IN      AAAA    2001:7fe::53

j.root-servers.net.    518400  IN      AAAA    2001:503:c27::2:30

k.root-servers.net.    518400  IN      AAAA    2001:7fd::1

l.root-servers.net.    518400  IN      AAAA    2001:500:9f::42

m.root-servers.net.    518400  IN      AAAA    2001:dc3::35

;; Query time: 24 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Thu Apr 05 15:57:34 CEST 2018

;; MSG SIZE  rcvd: 811

美国军方控制的:

U.S. DOD Network Information Center(G根)

U.S. Army Research Lab(H根)

企业控制的:

Verisign (A根、J根)

Cogent Communications(C根)

Netnod(I根)

高校控制的:

USC(B根)

University of Maryland(D根)

政府组织控制的:

NASA Ames Research Center(E根)

其他组织控制的:

Internet Systems Consortium, Inc.(F根)

RIPE NCC(G根)

ICANN(L根)

日本WIDE组织(K根)

这13台根域名服务器由12个组织独立运营。其中,Verisign 公司管理两台根域名服务器:A 和 J。每家公司为了保证根域名服务器的可用性,会部署多个节点,比如单单 Verisign 一家公司就部署了104台根域名服务器(2016年1月数据)。

所以,根域名服务器其实不止13台。据统计,截止2021年12月,全世界共有 1478 台根域名服务器。可以在 http://root-servers.org 这个网站查到所有根域名服务器的信息。

DNS根区

根域名列表的正式名称是 DNS 根区(DNS root zone),ICANN 官网可以查看这个根区文件。

该文件保存所有顶级域名的托管信息,所以非常大,超过2MB。

举例来说,顶级域名.com可以查到13个域名服务器。

com. 172800 IN NS a.gtld-servers.net.

com. 172800 IN NS b.gtld-servers.net.

com. 172800 IN NS c.gtld-servers.net.

com. 172800 IN NS d.gtld-servers.net.

com. 172800 IN NS e.gtld-servers.net.

com. 172800 IN NS f.gtld-servers.net.

com. 172800 IN NS g.gtld-servers.net.

com. 172800 IN NS h.gtld-servers.net.

com. 172800 IN NS i.gtld-servers.net.

com. 172800 IN NS j.gtld-servers.net.

com. 172800 IN NS k.gtld-servers.net.

com. 172800 IN NS l.gtld-servers.net.

com. 172800 IN NS m.gtld-servers.net.

DNS查询

DNS 域名解析服务采用分布式的数据结构来存放海量的“区域数据”信息,在执行用户发起的域名查询请求时,具有递归查询和迭代查询两种方式。

递归查询,是指 DNS 服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果 DNS 服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。

迭代查询,DNS 服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台 DNS 服务器的地址,用户再向这台 DNS 服务器提交请求,这样依次反复,直到返回查询结果

在一般情况下,当用户向配置指定的 DNS 服务器发起对某个域名的查询请求(这里以www.cisco.com为例),其查询流程大致如图

Bind

BIND 9

现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早由伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护。BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows),BIND服务的名称称之named。DNS默认使用UDP、TCP协议,使用端口为53(domain),953(mdc,远程控制使用)。

Bind-chroot

BIND服务器通常从因特网可直接访问。只要有一个通过因特网可以直接访问的系统,安全就成了一个大问题。这些安全问题包括有人破坏了服务器上的数据(有时称为数据投毒)和黑客控制了暴露的服务器进程,允许被劫持的服务器未经授权访问其他系统文件。

named进程在处理传人的DN查询时与网连接起交互。任何时候,只要一个进程是通过网络可访问的,那么这个进程就有可能受到动击。在这种攻击中,远程系统上的用户控制本地服务器上的进程。一旦这个用户有了提制权,他们就可以访问本地系统,包括查看或修改文件。

当被劫持的进程是以非root身份运行时,虽然危害是有限的。但是,像/etc/passwd这样

的系统核心文件。系统上的每个用户,包括named用户,都能查看/etc/passwd文件的内容,因为每个用户都有这个文件的读取权限。

chroot jail的目的是限制对系统文件的访问。named进程被放入jail,在那里它只能看到和BIND相关的配置。这是通过将BIND的配置文件放到特定的子目录中并启动named进程实现,这样文件系统的根看起来就是前面提到的子目录(chroot代表 change root,就好像是更改这个进程的文件系统根路径)。

bind-chroot本质上是使用chroot方式给bind软件换了个“根”,这“根”在/var/named/chroot下,把yum安装的bind-chroot在/etc下的产生的配置文件硬链接到/var/named/chroot/etc下。配置起来就跟BIND9没什么区别。

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

推荐阅读更多精彩内容