<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Life Style! &#187; build dns</title>
	<atom:link href="http://www.realqi.cn/tag/build-dns/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.realqi.cn</link>
	<description>系统管理  维护监控  简单生活</description>
	<lastBuildDate>Wed, 25 Aug 2010 14:41:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>build your own dns on the internet</title>
		<link>http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/</link>
		<comments>http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 08:39:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[技术实践]]></category>
		<category><![CDATA[经验技巧]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[build dns]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[ns]]></category>
		<category><![CDATA[公网上自建DNS]]></category>

		<guid isPermaLink="false">http://www.realqi.cn/?p=526</guid>
		<description><![CDATA[最近一直在看非技术方面的书，对技术有的渐谈的感觉，正好买了一个thinkos.net 的域名.打算深入的学习一下DNS.
预期目标
1.自己建立解析服务器,并解析自己的域名,并做到安全,可靠
预期计划
                第一步:搞定自己的DNS服务器,使其能正常解析
                第二步:去代理商那里注册自建的DNS服务器
                第三步:进行功能测试,确定功能,其响应及处理能力.
                第四步:了解DNS服务器相关的安全性问题,加固
                第五步:做一台辅域名服务器
相关必要信息
       1. thinkos.net 是在万网的代理商那里买的(60块/年)
       2.有一台自己完全管控的服务器,并有公网IP(这个在双线IDC机房)
       3.NS 服务器是需要花钱在代理商那里注册后才能用的(购买价格约为20元每组)
第一步:建设自己的DNS 服务器
      1.yum 安装相关的软件包
        yum -y install  bind  bind-chroot bind-utils
      2.规划bind 配置文件的存放结构，
        服务器可能会解析多个域，我把相关数据文件和配置文件分开,
        还有就是请求的对像，比如内网的请求需要解析的内网IP，电信的请求需要解析的电信的IP
        所以要用到VIEW,方便简单的管理
      3.创建相关的配置文件
           1. /etc/named.conf  #bind9的主配置文件
           2. ../chroot/var/named/data/internal.conf  #针对内网的ZONE配置
           3. ../chroot/var/named/data/external.conf #针对非内网的查询ZONE配置文件
           4. ../chroot/var/named/data/thinkos.net  #非内网的查询用的域名数据库
           5. ../chroot/var/named/data/thinkos.zone  #内网的查询用的域名数据库
zone 数据文件内一部份放在../chroot/var/named/data/localzone下，thinkos域名相关的，则直接放在../chroot/var/named/data 下面
1.named.conf 
options {
	directory "/var/named/data";
	dump-file "/var/named/data/cache_dump.db";
    	statistics-file  <a href="http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/" class="more-link">更多 &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>最近一直在看非技术方面的书，对技术有的渐谈的感觉，正好买了一个thinkos.net 的域名.打算深入的学习一下DNS.</p>
<p>预期目标<br />
1.自己建立解析服务器,并解析自己的域名,并做到安全,可靠</p>
<p>预期计划<br />
                第一步:搞定自己的DNS服务器,使其能正常解析<br />
                第二步:去代理商那里注册自建的DNS服务器<br />
                第三步:进行功能测试,确定功能,其响应及处理能力.<br />
                第四步:了解DNS服务器相关的安全性问题,加固<br />
                第五步:做一台辅域名服务器</p>
<p>相关必要信息<br />
       1. thinkos.net 是在万网的代理商那里买的(60块/年)<br />
       2.有一台自己完全管控的服务器,并有公网IP(这个在双线IDC机房)<br />
       3.NS 服务器是需要花钱在代理商那里注册后才能用的(购买价格约为20元每组)</p>
<p><strong>第一步:建设自己的DNS 服务器</strong><br />
      1.yum 安装相关的软件包</p>
<pre>        yum -y install  bind  bind-chroot bind-utils</pre>
<p>      2.规划bind 配置文件的存放结构，<br />
        服务器可能会解析多个域，我把相关数据文件和配置文件分开,<br />
        还有就是请求的对像，比如内网的请求需要解析的内网IP，电信的请求需要解析的电信的IP<br />
        所以要用到VIEW,方便简单的管理</p>
<p>      3.创建相关的配置文件<br />
           1. /etc/named.conf  #bind9的主配置文件<br />
           2. ../chroot/var/named/data/internal.conf  #针对内网的ZONE配置<br />
           3. ../chroot/var/named/data/external.conf #针对非内网的查询ZONE配置文件<br />
           4. ../chroot/var/named/data/thinkos.net  #非内网的查询用的域名数据库<br />
           5. ../chroot/var/named/data/thinkos.zone  #内网的查询用的域名数据库<br />
zone 数据文件内一部份放在../chroot/var/named/data/localzone下，thinkos域名相关的，则直接放在../chroot/var/named/data 下面</p>
<p><strong>1.named.conf </strong></p>
<pre>options {
	directory "/var/named/data";
	dump-file "/var/named/data/cache_dump.db";
    	statistics-file "/var/named/data/named_stats.txt";
    	version "";
 	datasize 40M;
        recursion no;
        allow-query { any; };
	forwarders { 221.228.255.1;
			218.2.135.1;
			221.6.96.177;
			221.6.96.178;
			221.228.255.1;
			218.2.135.1;
			202.96.209.133;
			202.96.209.5; };

};

logging {
    channel default_syslog {
			     syslog local2;
			     severity debug;
			  };
    channel audit_log { file "/var/named/data/named.log";
			severity info;
			print-time yes;
			versions 3 size 1240k;
		      };

    category default { default_syslog; };
    category general { default_syslog; };
    category security { audit_log; default_syslog; };
    category config { default_syslog; };
    category resolver { audit_log; };
    category xfer-in { audit_log; };
    category xfer-out { audit_log; };
    category notify { audit_log; };
    category client { audit_log; };
    category network { audit_log; };
    category update { audit_log; };
    category queries { audit_log; };
    category lame-servers { audit_log; };
};

controls {
	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

include "/etc/rndc.key";

view "internal" {
        match-clients { 10.11.10.0/24; };
        recursion no; 

include "internal.conf";
};

view "external" {
        match-clients { any; };
        recursion no; 

include "external.conf";
};</pre>
<p><strong>2.internal.conf</strong></p>
<pre>zone "." IN {
        type hint;
        file "localzone/named.ca";
};

zone "localdomain" IN {
        type master;
        file "localzone/localdomain.zone";
        allow-update { none; };
};

zone "localhost" IN {
        type master;
        file "localzone/localhost.zone";
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "localzone/named.local";
        allow-update { none; };
};

zone "255.in-addr.arpa" IN {
        type master;
        file "localzone/named.broadcast";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "localzone/named.zero";
        allow-update { none; };
};

zone "thinkos.net" IN {
	type master;
         file "thinkos.zone";
         allow-update { none;};

};</pre>
<p><strong>3.external.conf</strong></p>
<pre>zone "." IN {
        type hint;
        file "localzone/named.ca";
};

zone "thinkos.net" IN {
      type master;
      file "thinkos.net";
      allow-update { none; };
};</pre>
<p><strong>4.thinkos.net</strong></p>
<pre>$TTL 300
@ IN SOA  dns.thinkos.net. root. (
                       2009021201   ;Serial
                       3600         ;Refresh ( seconds )
                       900          ;Retry ( seconds )
                       68400        ;Expire ( seconds )
                       15 )         ;Minimum TTL for Zone ( seconds )
        IN      NS     thinkos.net.
        IN      A      210.51.50.122
ns1     IN      A      210.51.50.122
dns     IN      A      210.51.50.122
www     IN      A      210.51.50.122
cacti   IN      A      210.51.50.122
 </pre>
<p><strong>5.thinkos.zone</strong></p>
<pre>$TTL 20
@ IN SOA  dns.thinkos.net. root. (
                       2009021201   ;Serial
                       3600         ;Refresh ( seconds )
                       900          ;Retry ( seconds )
                       68400        ;Expire ( seconds )
                       15 )         ;Minimum TTL for Zone ( seconds )
        IN      NS     thinkos.net.
        IN      A      10.11.10.254
ns1     IN      A     10.11.10.254
dns     IN      A     10.11.10.254
www     IN      A     10.11.10.254</pre>
<p>  <strong>   4.启动bind 并进行基本功能测试</strong><br />
           在另外一台机器上执行如下命令<br />
                                   dig www.thinkos.net @ns1.thinkos.net<br />
看如下的返回</p>
<pre>; &lt;&lt;&gt;&gt; DiG 9.3.4-P1 &lt;&lt;&gt;&gt; www.thinkos.net @ns1.thinkos.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18686
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.thinkos.net.               IN      A

;; ANSWER SECTION:
<span style="color: #ff00ff;">www.thinkos.net.        300     IN      A       210.51.50.122
</span>
;; AUTHORITY SECTION:
thinkos.net.            300     IN      NS      thinkos.net.

;; ADDITIONAL SECTION:
thinkos.net.            300     IN      A       210.51.50.122

;; Query time: 113 msec
;; SERVER: 210.51.50.122#53(210.51.50.122)
;; WHEN: Thu Oct 29 09:09:41 2009
;; MSG SIZE  rcvd: 79</pre>
<p><strong>第二步:去代理商那里注册自建的DNS服务器</strong></p>
<p>     这一步很复杂，复杂主要是跟域名提供商的沟通，一是我自己对某些概念不是很确定,二是客服啥也不懂,三是网站上的的体验很差,找了半天找不到相关的产品,找到了且还不能购买,后来根据他们的建议,直接找万网的人终于了解整个概念，和操作流程,后来他们手动在后台给我做了购买. 但也很简单,直接告诉他们你的NS 服务器的域名,和要对IP地址,他们给你注册一下,半个小时候可以在公网上解析得到,这一步就完成了. 相关的图</p>
<p><a title="Flickr 上 realqi.cn 的 DNS" href="http://www.flickr.com/photos/realqi/4055073046/"><img src="http://farm4.static.flickr.com/3510/4055073046_b6d2e1d157_o.jpg" alt="DNS" width="623" height="351" /></a></p>
<p>                              <span style="color: #ff0000;"> 图&lt;创建自己的DNS服务器&gt;以万网一个代理商为例</span></p>
<p><a title="Flickr 上 realqi.cn 的 dn1" href="http://www.flickr.com/photos/realqi/4055081992/"><img src="http://farm4.static.flickr.com/3477/4055081992_f4bfaccaae_o.jpg" alt="dn1" width="630" height="375" /></a></p>
<p><span style="color: #ff0000;">                      图&lt;到域名购买商修改解析地址为自己创建的NS服务器&gt;</span></p>
<p><span style="color: #ff0000;"> </span></p>
<p><a title="Flickr 上 realqi.cn 的 OK" href="http://www.flickr.com/photos/realqi/4055092356/"><img src="http://farm4.static.flickr.com/3533/4055092356_363f2e47f5_o.jpg" alt="OK" width="638" height="396" /></a></p>
<p>    <span style="color: #ff0000;">                    图 &lt;NS  服务器已成功在公网注册上,并已生效&gt;</span></p>
<p><span style="color: #ff0000;">  注意</span>: 我在自己建的DNS 服务器上是没有添加ns2.thinkos.net 这条记录的，可去看thinkos.net 文件进行确认.</p>
<p><strong>第三步:进行功能测试,了解响应及处理能力.</strong><br />
<strong>1.确定NS 服务器已正常工作</strong><br />
       思路一、 解析一个A记录，跟踪其解析路径。比如 dig  www.thinkos.net +trace<br />
       思路二、 指定多个DNS 服务器解析你的一个A记录比如 dig www.thinkos.net @221.228.255.1</p>
<p><strong>dig www.thinkos.net +trace</strong></p>
<pre>; &lt;&lt;&gt;&gt; DiG 9.2.4 &lt;&lt;&gt;&gt; www.thinkos.net +trace
;; global options:  printcmd
<span style="color: #ff00ff;">.                       166869  IN      NS      G.ROOT-SERVERS.NET.
</span>.                       166869  IN      NS      D.ROOT-SERVERS.NET.
.                       166869  IN      NS      E.ROOT-SERVERS.NET.
.                       166869  IN      NS      H.ROOT-SERVERS.NET.
.                       166869  IN      NS      L.ROOT-SERVERS.NET.
.                       166869  IN      NS      C.ROOT-SERVERS.NET.
.                       166869  IN      NS      A.ROOT-SERVERS.NET.
.                       166869  IN      NS      K.ROOT-SERVERS.NET.
.                       166869  IN      NS      J.ROOT-SERVERS.NET.
.                       166869  IN      NS      B.ROOT-SERVERS.NET.
.                       166869  IN      NS      F.ROOT-SERVERS.NET.
.                       166869  IN      NS      I.ROOT-SERVERS.NET.
.                       166869  IN      NS      M.ROOT-SERVERS.NET.
;; Received 512 bytes from 221.228.255.1#53(221.228.255.1) in 72 ms

net.                    172800  IN      NS      C.GTLD-SERVERS.net.
net.                    172800  IN      NS      F.GTLD-SERVERS.net.
net.                    172800  IN      NS      L.GTLD-SERVERS.net.
net.                    172800  IN      NS      I.GTLD-SERVERS.net.
net.                    172800  IN      NS      E.GTLD-SERVERS.net.
net.                    172800  IN      NS      J.GTLD-SERVERS.net.
net.                    172800  IN      NS      H.GTLD-SERVERS.net.
net.                    172800  IN      NS      B.GTLD-SERVERS.net.
net.                    172800  IN      NS      K.GTLD-SERVERS.net.
net.                    172800  IN      NS      A.GTLD-SERVERS.net.
net.                    172800  IN      NS      G.GTLD-SERVERS.net.
net.                    172800  IN      NS      D.GTLD-SERVERS.net.
net.                    172800  IN      NS      M.GTLD-SERVERS.net.
<span style="color: #ff00ff;">;; Received 490 bytes from 192.112.36.4#53(G.ROOT-SERVERS.NET) in 155 ms</span>

<span style="color: #ff00ff;">thinkos.net.            172800  IN      NS      ns1.thinkos.net.
thinkos.net.            172800  IN      NS      ns2.thinkos.net.</span>
<span style="color: #ff00ff;">;; Received 101 bytes from 192.26.92.30#53(C.GTLD-SERVERS.net) in 294 ms</span>

<span style="color: #ff00ff;">www.thinkos.net.        300     IN      A       210.51.50.122
thinkos.net.            300     IN      NS      thinkos.net.</span>
;; Received 79 bytes from 210.51.50.122#53(ns1.thinkos.net) in 29 ms</pre>
<p><strong>dig www.thinkos.net @221.228.255.1</strong></p>
<pre>; &lt;&lt;&gt;&gt; DiG 9.2.4 &lt;&lt;&gt;&gt; www.thinkos.net @221.228.255.1
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63334
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.thinkos.net.               IN      A

;; ANSWER SECTION:
www.thinkos.net.        138     IN      A       210.51.50.122

;; AUTHORITY SECTION:
<span style="color: #ff00ff;">thinkos.net.            <span style="color: #ff0000;">138 </span>    IN      NS     <span style="color: #ff0000;"> ns1.</span>thinkos.net.
</span>
;; ADDITIONAL SECTION:
ns1.thinkos.net.        70315   IN      A       210.51.50.122

;; Query time: 0 msec
;; SERVER: 221.228.255.1#53(221.228.255.1)
;; WHEN: Thu Oct 29 14:31:45 2009
;; MSG SIZE  rcvd: 83</pre>
<p>这里有两个点值得说一下，<br />
<strong>一是</strong> ns1.thinkos.net.本来应该返回为thinkos.net.这里返回为ns1.thinkos.net的原因为我更改了thinkos.net 里的<br />
IN      NS     <span style="color: #ff0000;">thinkos.net. </span>为 IN      NS   <span style="color: #ff0000;">ns1.thinkos.net</span></p>
<p><strong>二是</strong>： <span style="color: #ff0000;">138</span>这个数字是是TTL 值，单位为秒。比如在我的thinkos.net 里的设置为<br />
$TTL 300<br />
@ IN SOA  ns1.thinkos.net. root.<br />
     DNS中TTL值的主要作用是为每一条记录设置一个存活时间，互联网上的缓存DNS服务器在查询到这条记录之后都会将TTL值缓存到本地，这样做一是提高DNS解析的速度，二是降低网络流量。这个值如果设得过大，如果你记录有更新，互联网上DNS对这条变更的记录生效的就慢，如果设得过小，其它服务器会因时间过短而查不到。<a href="http://http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.ch06.html#Setting_TTLs">更多请看bind9官方文档</a>   <a href="http://www.oolec.com/dns_ttl_settings_and_negative_ttl/">这里有中文</a></p>
<p><strong>2.了解响应时间</strong><br />
<h3>相关文章</h3>
<ul class="related_post">
<li>No Related Post</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.realqi.cn/2009/10/%e7%bb%88%e4%ba%8e%e6%90%9e%e5%ae%9a%e4%ba%86%e8%87%aa%e5%b7%b1%e7%9a%84dns%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

