Life Style!

系统管理 维护监控 简单生活

RSS订阅

  • 首页
  • 关于
  • FULL WIDTH

build your own dns on the internet

十 28th

由admin发表在技术实践 | 790

没有评论

最近一直在看非技术方面的书,对技术有的渐谈的感觉,正好买了一个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 "/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";
};

2.internal.conf

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;};

};

3.external.conf

zone "." IN {
        type hint;
        file "localzone/named.ca";
};

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

4.thinkos.net

$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
 

5.thinkos.zone

$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

     4.启动bind 并进行基本功能测试
           在另外一台机器上执行如下命令
                                   dig www.thinkos.net @ns1.thinkos.net
看如下的返回

; <<>> DiG 9.3.4-P1 <<>> www.thinkos.net @ns1.thinkos.net
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- 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:
www.thinkos.net.        300     IN      A       210.51.50.122

;; 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

第二步:去代理商那里注册自建的DNS服务器

     这一步很复杂,复杂主要是跟域名提供商的沟通,一是我自己对某些概念不是很确定,二是客服啥也不懂,三是网站上的的体验很差,找了半天找不到相关的产品,找到了且还不能购买,后来根据他们的建议,直接找万网的人终于了解整个概念,和操作流程,后来他们手动在后台给我做了购买. 但也很简单,直接告诉他们你的NS 服务器的域名,和要对IP地址,他们给你注册一下,半个小时候可以在公网上解析得到,这一步就完成了. 相关的图

DNS

                               图<创建自己的DNS服务器>以万网一个代理商为例

dn1

                      图<到域名购买商修改解析地址为自己创建的NS服务器>

 

OK

                        图 <NS  服务器已成功在公网注册上,并已生效>

  注意: 我在自己建的DNS 服务器上是没有添加ns2.thinkos.net 这条记录的,可去看thinkos.net 文件进行确认.

第三步:进行功能测试,了解响应及处理能力.
1.确定NS 服务器已正常工作
       思路一、 解析一个A记录,跟踪其解析路径。比如 dig  www.thinkos.net +trace
       思路二、 指定多个DNS 服务器解析你的一个A记录比如 dig www.thinkos.net @221.228.255.1

dig www.thinkos.net +trace

; <<>> DiG 9.2.4 <<>> www.thinkos.net +trace
;; global options:  printcmd
.                       166869  IN      NS      G.ROOT-SERVERS.NET.
.                       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.
;; Received 490 bytes from 192.112.36.4#53(G.ROOT-SERVERS.NET) in 155 ms

thinkos.net.            172800  IN      NS      ns1.thinkos.net.
thinkos.net.            172800  IN      NS      ns2.thinkos.net.
;; Received 101 bytes from 192.26.92.30#53(C.GTLD-SERVERS.net) in 294 ms

www.thinkos.net.        300     IN      A       210.51.50.122
thinkos.net.            300     IN      NS      thinkos.net.
;; Received 79 bytes from 210.51.50.122#53(ns1.thinkos.net) in 29 ms

dig www.thinkos.net @221.228.255.1

; <<>> DiG 9.2.4 <<>> www.thinkos.net @221.228.255.1
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- 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:
thinkos.net.            138     IN      NS      ns1.thinkos.net.

;; 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

这里有两个点值得说一下,
一是 ns1.thinkos.net.本来应该返回为thinkos.net.这里返回为ns1.thinkos.net的原因为我更改了thinkos.net 里的
IN      NS     thinkos.net. 为 IN      NS   ns1.thinkos.net

二是: 138这个数字是是TTL 值,单位为秒。比如在我的thinkos.net 里的设置为
$TTL 300
@ IN SOA  ns1.thinkos.net. root.
     DNS中TTL值的主要作用是为每一条记录设置一个存活时间,互联网上的缓存DNS服务器在查询到这条记录之后都会将TTL值缓存到本地,这样做一是提高DNS解析的速度,二是降低网络流量。这个值如果设得过大,如果你记录有更新,互联网上DNS对这条变更的记录生效的就慢,如果设得过小,其它服务器会因时间过短而查不到。更多请看bind9官方文档   这里有中文

2.了解响应时间

bind, build dns, dns, ns, 公网上自建DNS

难得一个惬意下午

十 25th

由admin发表在life hacks | 581

3个评论

      家里的宽带是每月120小时的限时套餐,算起来平均每天上四个小时正好,当初讨伦这个的时候,大家也是一致根据自己的情况认可的。可是最近遇上了个挫人,天天用外挂挂在那里偷菜,一天24个小时的挂着,沟通多次,他自己也觉得不好意思了,就偷偷的挂. 结果才交的钱,不到一个星期就光光了,

      一是网费远远超过了大家的预算,二是对这种人产生了不良印像.甚至有些鄙视那个人了,如果说上网看电影或是下资料也就罢了,偏偏却是用外挂偷菜,三是发现电信太黑了(升极其它套餐就要签一年,且还要送你个手机要用到15个月以上.),正在头痛要怎么去处理

     本来这周未计划了在家里的工作,于是只好来公司,然后随便找些资料看看,结果找到一个MM的空间,首先是发现此MM 的文笔很好,其后发现其界面看起来很舒服,布局很简洁,但是不简单, 所以就想多看看.

    此MM技术文章很有特点,能让人体会到,一个是专注、二个是专业、三个是有细节,四个是有要点.

    其它还记录了很多生活锁事.字里行间都透露出生活的幸福,甜蜜,为人的真诚,有爱心, 聪明,有智慧,还透露了女人的傻气,和爱. 看完后几篇后简直把我的奋斗意志消灭了一半,真让人想去迫不急待的去找一个女朋友.然后从此开始.....

    有几遍日志,看完后有些伤感,让人想静静的坐在那里掉眼泪.一事自己曾经也发生过那些经历,能深切的体会得到当时的那种感觉,二是文笔用词很准确,很生动,越看越喜欢.越看越让我感觉到自己曾经的难过.

   看完后觉得自己心里沉沉的,有些为自己满意,因为曾经的认真,也因为勇敢的放弃,也有些为现在的自己感到庆幸,能遇上那些让我成长,帮我成长的人。

       越来越体会到.选择真的是一种智慧,对自己的发展来说,这个可能是最大的成本了.

惬意, 爱情, 生活, 真情实感
«12345»102030...最后一页 »
  • Gallery

  • Views

    • show a cacti-monitor-mysql graph - 11,756 views
    • 还是唠叨的点啥子吧 - 3,631 views
    • 关于 - 3,010 views
    • warning: rpmts_HdrFromFdno: V3 DSA signature: NOKEY, key ID 443e1821 - 2,953 views
    • PostgreSQL partitioning with plproxy (PART 1) - 2,930 views
    • Install usvn on centos - 2,424 views
    • Stateless VMware ESXi Server Version 3.5 Update 4 Using PXE Booting - 2,220 views
    • 利用apache的防盗链 - 1,868 views
    • 分享一个cacti监控CPU 的模版. - 1,669 views
    • FULL WIDTH - 1,350 views
  • 最近文章

    • 心情生活
    • 不懒女人太少了
    • 还是唠叨的点啥子吧
    • 想去阿里
    • build your own dns on the internet
  • 最新评论

    • anna und die liebe 发表于 关于
      I would like to thank you for the efforts you have... »
    • retard 发表于 FULL WIDTH
      He who sups with the devil should have a long spoo... »
    • pres 发表于 关于
      Hullo! I'm in a hurry today. I just want to throw ... »
    • armando codina 发表于 还是唠叨的点啥子吧
      Great post, bookmarked your site for interest to r... »
    • Armando Codina 发表于 FULL WIDTH
      The well written post helped me a lot! Bookmarked... »
    • 下一页 »
由digitalnature提供主题Mystique | 由WordPress强力驱动
RSS订阅 XHTML 1.1 顶端