存档在 2015年9月

怎样部署织梦dedecms

2015年9月24日

【安装】

1. 程序目录权限设置为777。

2. 目录权限设置为777:

chmod -R 777 plus dede data a install special uploads

【报错】

undefined function XSSClean()

症状是无法编辑软件,页面空白。奇怪的是新安装的没有此类问题。

Fatal error: Call to undefined function XSSClean() in dede/soft_edit.php on line 81

解决:注释掉81行

//    $arcRow=XSSClean($arcRow);$addRow=XSSClean($addRow);

参考:http://www.ucbug.com/jiaocheng/75161.html
参考:http://www.51zixuewang.com/article/jianzhanjingyan/zhimengdedecmsjiaocheng/228877.html
参考:https://www.douban.com/note/323262360/

需求:修改文档标题最大长度

在控制面板修改文档标题最大长度参数后,比如设置为100,需要手工修改数据表,修改简略标题的长度。

DEDECMS中的“简略标题”默认长度为36个字符,即18个汉字。

1. 修改数据库字段设置,找到dede_archives表,再找到shorttitle字段,将值由36修改为100。

2. 修改管理后台目录(默认目录为/dede/)下的核心文件,批量替换里面的源代码,把36修改为100。

archives_add.php
archives_do.php
archives_edit.php
article_add.php
article_edit.php
$shorttitle = cn_substrR($shorttitle,36);

【需求】

需求:希望织梦dedecms的文章ID从指定数字开始,至少8个数字,那么从10000000,预设容量900万条

方法:

1. 发布一篇文章
2. 在phpMyAdmin中打开dede_archives表、dede_arctiny表、dede_addonarticle表中此文章的ID为10000000。
3. 发布第二篇文章的ID即为100001。此时删除第一篇文章。

参考:http://www.55of.com/cms/dedecms/188
参考:http://www.bkjia.com/dedecms/339121

需求:希望织梦dedecms的文章ID在指定区间批量删除

在后台一条条的删除文章的话实在太慢了,可以使用SQL批量删除aid文章。

DELETE FROM dede_addonarticle_17 WHERE aid >= 10000000 and aid <=10000035;
DELETE FROM dede_arctiny WHERE id >= 10000000 and aid <=10000035;
DELETE FROM dede_archives WHERE id >= 10000000 and aid <=10000035;

参考:http://jingyan.baidu.com/article/414eccf63ab2e96b421f0a47.html

【安全设置】

常规设置

1. 修改dede这个文件夹名称

2. 后台管理员不要使用admin或者其他易被猜到的账号

3. 使用最新版的dede cms建站,留意后台的升级信息

4. 如果你用不到会员功能,最好在后台的系统设置里面把会员功能关闭,这样防止别人对网站进行SQL注册;或者直接请删除member这个文件夹,如果必须使用,请安装360安全补丁!

5. 织梦可删除目录列表:member会员功能,special专题功能,install安装程序(必删),company企业模块,plus\guestbook留言板,友情链接,以及其他模块一般用不上的都可以不安装或删除。总之就是减少别人往网站提交信息的可能。

6. DEDE后台管理目录下的以下文件是后台文件管理器(这俩个功能最多余,也最影响安全,许多HACK都是通过它来挂马的。它简直就是小型挂马器,上传编辑木马忒方便了。一般用不上统统删除)。

file_manage_control.php
file_manage_main.php
file_manage_view.php
media_add.php
media_edit.php
media_main.php

5. 不需要SQL命令运行器的将dede/sys_sql_query.php 文件删除。避免HACK利用。不需要tag功能请将根目录下的tag.php删除。不需要顶一下、踩一下功能的请将plus目录下的digg_ajax.php和digg_frame.php删除。

6. 将data、templets、uploads、a或html目录, 设置可读写,不可执行的权限

7. 将include、member、plus、后台管理目录 设置为可执行脚本,可读,但不可写入(安装了附加模块的,book、ask、company、group 目录同样如此设置)。

8. 文件夹权限不要设置777,data文件夹下的common.inc.php文件设置644属性等,

DEDEDATA设置

1. 将data这个文件夹移动到程序上一层目录:与dedecms系统目录同级;

2. 修改系统目录/include/common.inc.php文件,修改DEDEDATA常量为新的目录。

3. 进入系统后台,在系统配置中修改模板缓存目录tplcache目录为你相对的目录,比如/../db/data/tplcache

4. 修改网站的首页文件index.php中的/data/common.inc.php也为相对的目录,比如/../db/data/common.inc.php

安装360检测中心提供的dedecms安全修复补丁

本安全补丁共修复12个高危漏洞,并且集成了360网站安全检测的后门查杀和漏洞修复功能。仅适合织梦DedeCMS v5.7 SP1正式版 (2013-07-15发布),对不满足此版本的用户,可以先去官方先升级至这个版本,然后使用补丁包覆盖安装。

注意,先验证网站所有权,再下载补丁包。

下载地址:http://webscan.360.cn/dedecms/about

安装360webscan后,因为需要修改“dede”目录为其他文件夹名,在系统管理时会出现报错:“输入内容存在危险字符,安全起见,已被本站拦截”。此时,需要修改360safe文件夹中webscan_cache.php代码的16行,把单引号之间的内容修改为当前后台文件夹名:

$webscan_white_directory='admin|\/dede\/'

参考:http://www.ithov.com/master/128947.shtml

【附件服务器设置】

参考:http://down.admin5.com/edu/dedecms/76542.html
参考:http://down.admin5.com/edu/dedecms/76542.html

怎样查看CentOS服务器硬盘和内存使用情况

2015年9月18日

1. 查看CentOS服务器硬盘情况

查看有几块硬盘

df -lh

输出:

Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                     6.5G  692M  5.5G  12% /
tmpfs                 764M     0  764M   0% /dev/shm
/dev/sda1             485M   30M  430M   7% /boot

有一个sda1的scsi硬盘分区,还有一个lvs的卷。这里可以很显示的看出各硬盘的分区、挂载情况,还能看到分区的空间使用情况。

查看硬盘每个分区的详细情况

fdisk -l

输出:

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003bc52

  Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1306     9972736   8e  Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 6987 MB, 6987710464 bytes
255 heads, 63 sectors/track, 849 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap: 3221 MB, 3221225472 bytes
255 heads, 63 sectors/track, 391 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

fdisk -l默认是查看所有的硬盘,如果只想查看sda盘的分区情况,可以使用命令:

fdisk -l /dev/sda

这样就不会列出VolGroup-lv卷的信息了。

输出:

I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

查看磁盘IO状态

iostat -d -x -k 1 10

查看某个目录占用空间的大小

当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢?

du -sh [dirname|filename]

以易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详细显示每个子目录或文件的大小。

显示前10个占用空间最大的文件或目录:

du -s * | sort -nr | head

查看哪个目录占用了这么多的磁盘,如果找到后,依次进入那个目录,利用相同的办法,就能定位到文件上去。

用root到/目录下去利用命令:

du -s -h ./*

2. 查看Linux服务器内存使用情况

free命令

free -m

输出:

            total       used       free     shared    buffers     cached
Mem:          1526        182       1344          0         16         99
-/+ buffers/cache:         65       1460
Swap:         3071          0       3071

很清晰明白的显示出了总内存多少,已使用多少,还剩下多少。

top命令

top

输出:

Mem:   1563088k total,   186784k used,  1376304k free,    17444k buffers
Swap:  3145720k total,        0k used,  3145720k free,   101980k cached

vmstat命令

vmstat

输出:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 1376320  17452 101980    0    0     1     1    4    5  0  0 100  0  0

参考资料:《linux 下查找大于100M的文件 》

怎样使用火车头采集微信文章

2015年9月17日

意图:

微信公众号如何采集?比如 http://weixin.sogou.com/gzh?openid=oIWsFtyyNse80FUaTBNS00eEpg-0

结果:

仅在火车头论坛找到了采集指定微信文章的采集规则。但未找到有效获取文章列表的方法。

变通:

从知乎的一篇文章《如何收藏或保存微信公众帐号内的文章?》中看到:传送门 http://chuansong.me
如果你关注的账号传送门上没有的话,你可以在这里提交这个账号:http://chuansong.me/submit/account

那么,在没有分析出有效采集微信文章列表的规则之前,可以利用这个传送门服务,以之为桥梁,直接采集传送门中的指定微信公众号。

从V2EX的一篇文章《微信公众号历史文章获取?》中看到《微信公众号抓取思路》

微信公众号存在不少精彩的文章,如果善于挖掘,可以得到不少的收获。但由于微信对PC端的支持并不友好,虽然有搜狗搜索可以用,但其结果仍然不全,一些公众号发的不是文章类型的只是一段话,搜狗就不收录。想要得到一个账号所有的文章,还是要从爬虫着手。网上对于微信公众号文章爬取的方法几乎没有介绍,不过有几个网站,比如传送门就做出来了。这就告诉我们这个目标是可以达到的。废话不多说,直入主题。 要想得到一个公众号发送的所有文章,需要从微信手机端入手。点击公众号右上角小人图标,会有查看历史消息的链接。点了之后可查看所有历史文章。所以自然要从这里入手了。上抓包工具,Fiddler4,手机和电脑接入同一网络,手机wlan设置代理,指向电脑的ip地址,端口默认8888,这样在电脑上就可以监听手机的http流量了。通过抓包,在点击‘查看历史消息’选项时,请求的地址是:

抓包1

通过对多个账号进行抓包分析,可以确定biz这个14位的字符串是每个公众号的“id”,uin似乎与访问者有关,key也和所访问的公众号有关,可以在下面的抓取中得到这两个参数,其他的查询参数都可以去掉。 所以,必须得到三个参数才可以得到文章列表。这三个参数biz最容易获得,在搜狗的微信平台,搜索目标公众号,会有对应的文章列表,连接到相应的文章页面。解析文章列表,即可得到公共账号的biz。可以通过请求http://weixin.sogou.com/weixin?query=,填入目标账号名称,返回的结果里解析最新文章的url,里面包含biz。当然,模糊搜索会出现多个候选账号,这个就比较难办了。 现在,已知biz,如何继续?我曾经也困扰了好久,也算是偶然发现的。电脑登陆微信,在手机上访问某个公众号的查看历史消息页面,点击右上角,发送给朋友,发送给文件助手即可,电脑上查看。 如图:

似乎看到连接了,打开,果然跳转到了文章列表的页面!查看元素,这个存在span标签内,仔细观察,才发现坑爹啊,和刚才抓包看到的url是一样的!继续寻找,这个span是a标签的子元素,看这个a标签的href:

a

加上https://wx.qq.com的前缀,就可以访问了,最后301跳转到了span的内容那个url。多看几个不同的公众号,可以发现a标签的内容基本一样,不同的只是biz而已。所以可以把这个url记为raw_url,每次请求时,用不同的biz替换即可。当然,要带上ua,cookie的header。用request.get(url,headers=m_header,verify=False),因为请求的是https域,所以要加上verify=False,返回的内容文章列表的那个页面。分析那个页面,即可以找到uin,key,

uin

可以用正则表达式提取出来。紧接着下面就是这个页面的msgList,类似json的文本,当前页面就是通过这里的文本渲染的。

msglist

可以用正则提取出来直接解析出来,然后用json.loads方法就可以得到dict,里面的信息包括content_url,文章发表的datetime时间戳,摘要信息,文章的id编号mid,还有是否是一次发多篇is_multi等。 鼠标向下滚动,可以看到动态请求更久远的文章,抓包可得,是通过json返回的。请求的url就是类似

json

这种的,前面获取的参数就都派上用场了。只要这几个参数就可以抓取了,后面几个参数不要也可以。要获得一个公众号的全部文章,可以将frommsgid改到比他最新文章的id大一点的数字(实验证明若刚好取最新文章的id,则会忽略最新的那篇),count值设置大一点,比如5000,基本上就会把所有文章信息都返回了。 根据返回的json,从中解析出文章的url,然后就可以去爬取文章了,这个比较常规,貌似连cookie都不用带,就不赘述了。

接下来再说说获取文章点赞数,阅读数的思路。从电脑网页访问是得不到这些数据的,只能从手机上获得。需要的参数还是uin,biz,key,mid以及idx。其中idx是这篇文章所在的编号,比如一个人一天发了3篇文章,idx就分别对应1,2,3。这几个参数的名称可能有些不一样,有时叫mid,有时是appmsgid,是从这样的url里获得的http://mp.weixin.qq.com/s?__biz=MzA3NTEzMTUwNA==&mid=206110593&idx=1&sn=bbebeb601bec2cd9bb576f31601774c5&scene=4#wechat_redirect,可能要进行一些异常处理。提交的地址是http://mp.weixin.qq.com/mp/getappmsgext,参数是上面提到的,提交的header要伪装成手机的,主要是ua,host要不要用我忘记了,之前的代码里是注释掉这句的, readnum_header={‘User-Agent’:’Mozilla/5.0 (Linux; Android 4.4.2; sdk Build/KK) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MicroMessenger/6.0.0.61_r920612.501 NetType/epc.tmobile.com’,#’Host’:’mp.weixin.qq.com’},然后返回的还是json,进行解析即可。

以上即是爬取的大致思路。

另外一篇爬虫策略分析《微信公众平台账号内容搜索引擎爬取技术实现》

有人问:游迹语音助手中的“微信精选”和 www.lewuxian.com 怎样实现对微信公众平台内容进行爬取的,不会是像诸多所谓的微信内容聚合站人工维护的吧。
首先可以肯定的是:游迹团队不是白富美,没有魅力与微信团队勾搭上关系,因此无法获得官方未开放的接口来实现公众号的搜索及爬取。游迹语音助手及 www.lewuxian.com 中所有与微信公众账号相关的内容都是爬虫自动化完成的,这里大致分享一下思路。
由于微信尚未有公开的搜索接口供第三方的搜索引擎爬取,而且微信也未提供官方权威的微信公众号的导航网站或推荐服务,因此指望完成对所有微信公众号的爬取并不现实,只能对指定微信公众号的内容进行爬取。
因此微信公众号的爬取主要分为如下一些步骤:
第一步就是获得需要爬取的微信公众号列表
微信公众号列表可以参考那些微信导航站的做法,人工维护维护行业精品微信号列表。当然也可以直接爬取那些微信导航站,但质量很差。好在真正高质量值得爬取微信公众号也就至多上万个。
第二部就是要获取每一个微信公众号的内容入口页面。
随便留意一下某个微信公众号,会发现每个微信公众号的“查看历史消息”中有此公众号已发布的所有微信内容,剩下的问题是怎样获取这个地址。
聪明的程序猿们肯定会通过抓包、反编译等手段来获取此入口地址。好消息是要获取此微信公众号的入口地址并不复杂,你会欣喜发现此入口地址是一个普通的网页。坏消息是:当你多测试一下,你会悲剧地发现:
1)、此入口地址并不是固定不变的,一天左右就会变化的,主要是里面的key值。因此指望通过人工手工抓包一劳永逸地获取的地址并无太多实用价值
2)、此入口页面对未关注的用户只能看第一页,需要关注后才能看后续页面,要获取后续页面,只能关注此账号,但要人工关注上万个来自更多账号的关注并不现实
3)、微信对一个账号关注的公众号数是有上限限制的
应对此难题最一劳永逸的方案当然是反编译代码,获取微信的通信协议,但就研究结果来看,成本过高,破解的可能性也不大。游迹团队对此也无兴趣。
剩下比较靠谱、可行的方案就是:怎样在需要爬取时候能够获取指定的微信公众号的入口页面的实际地址,然后去爬取其内容;
那怎样实现以上方案呢?具体的方案,你懂的!
概括一下方案:
1)、获得需要爬取的微信公众号列表
2)、自动化获取微信公众号的入口页面实际地址,实施爬取

搜狗微信搜索的URL分析

微信公众号主页URL:http://weixin.sogou.com/gzh?openid=oIWsFt_rkSTCP-ca8pcMNdwjfk8g
列表页微信文章URL:http://weixin.sogou.com/websearch/art.jsp?sg=CBf80b2xkgbZeHWfPcy0uro5n0c0bmkV68ysB1uPDvIFgw3EvCrhMXnKgJvNSBvR99gN6vRgr4_3tZ1-6xkNq_mQRTCQgxJdMbhypLjOyj3g0XV5A2kz-ineanHc8EgDpKupsNTn9TZa8i_hvC38eg..&url=p0OVDH8R4SHyUySb8E88hkJm8GF_McJfBfynRTbN8wh4CimdevN_HV3nFXwSqVGoM-zqhvKlj3fm2EZ3L4U5LGQ3JxMQ3374tc8UKS9o9c4m48dpVZls4BiUNFGblR-XVdhrZ2fbKwlYy-5x5In7jJFmExjqCxhpkyjFvwP6PuGcQ64lGQ2ZDMuqxplQrsbk
实际微信文章URL:http://mp.weixin.qq.com/s?__biz=MzA5NjM0MjMzMQ==&mid=210646739&idx=1&sn=1f623929befc11cd9584c7722ccf9658&3rd=MzA3MDU4NTYzMw==&scene=6#rd

采集微信文章的规则分析

方案下载:

方案A. http://bbs.locoy.com/forum.php?mod=viewthread&tid=140609

方案B. http://bbs.locoy.com/forum.php?mod=viewthread&tid=138973

参考C. http://bbs.locoy.com/forum.php?mod=viewthread&tid=140421

这个规则的格式是.ljobx,是采集规则文件。

导入火车头方法,右键选中分组,弹出对话框,点击最下方“导入任务到该分组”。参考《9SiR火车头采集器教程:[2]怎样导入规则》

采集规则的制作:

参考:《dz3.0免登陆接口使用教程》官方的使用接口:http://faq.locoy.com/q-804

内容采集规则标签务必等于或者多于发布接口的标签。

参考:《添加多级网址之手动填写链接地址规则》 http://faq.locoy.com/q-800

参考:《在线发布模块制作教程》 http://faq.locoy.com/q-726

参考:用抓包工具分析一下 http://www.locoy.com/Down/RelatedSoft/Fiddler

参考:http://bbs.locoy.com/forum.php?mod=viewthread&tid=137418&highlight=%E5%BE%AE%E4%BF%A1

1、可以搜索指定微信公众号的内容;
2、可以搜索包含关键词的微信文章(不指定公众号);

结果页的代码同样是被加密了,列表页没有上一页下一页代码,只有“查看更多”——

<div class="p-more" style="display:none;" id="wxmore"><a href="javascript:"><span>查看更多</span></a></div>

所以难点有两个,一个是解密,看到源代码,能够找到列表(采集源),第二个是能不断的翻页直到结束

下一页不需要从源码中获取哈,用批量页码即可。

怎样使用UltraEdit+正则表达式处理文本

2015年9月16日

下载:http://www.cr173.com/soft/2315 (UltraEdit-32 V22.20.25 烈火汉化绿色版)

用UltraEdit+正则表达式删除空行

网上一些搜集的文章都有大量的空行,如果一点一点删除势必十分的麻烦,有没有一个基本的要领处理呢?运用 UltraEdit就可以!

首先运用 UltraEdit打开文件,选择搜素(Search)菜单的替换(Replace)命令。在替换对话框中,选中正则表达式(Regular Exp ression)复选框,并在查找中输入:%[ ^t]++^p,留心 ^t之前有空格。该表达式字符意思与EditPlus的相对应。

然后,单击开始按钮,实行替换删除空行。这样就可以方便快捷的删除文档中的空行啦!

DNS(Domain Name System,域名系统)

2015年9月15日

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

一、DNS功能

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。主机名到IP地址的映射有两种方式:

1.静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;

2.动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[1]

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

二、DNS解析过程

DNS常用的资源记录类型

A:地址 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。
CNAME:标准名称 此记录指定标准主机名的别名。
MX:邮件交换器此记录列出了负责接收发到域中的电子邮件的主机。
NS:名称服务器此记录指定负责给定区域的名称服务器。

采用的工具:

1.在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。
2.在Linux Shell下通过dig查询
FQDN名的解析过程:
若想跟踪一个FQDN名的解析过程,在LinuxShell下输入dig www +trace,返回的结果包括从根域开始的递归或迭代过程,一直到权威域名服务器。
GeniePro DNS 应对DNS劫持和DNS缓存中毒攻击的关键性机制:一致性检查
每个Geniepro节点将自身的DNS记录发送给工作组内其他节点请求一致性检查;
每个Geniepro节点将自身的记录与收到的记录进行比较;
每个Geniepro工作组的通信协调节点将获得的DNS记录更新发送给其他组的通信协调节点请求一致性检查;
每个Genipro工作组的通信协调节点向上一级DNS服务器请求更新记录并与收到的其他通信协调节点的记录进行比较。
一致性仲裁:

如果一致性检查发现记录不一致情况,则根据策略(少数服从多数、一票否决等)决定是否接受记录的变化 根据结果,各Geniepro节点将自身记录进行统一通信协调节点选举 选举出的通信协调节点在任期内具有更新组内节点的权限 选举过程满足不可预测性和不可重复性DNS资源记录 如前所述,每个 DNS 数据库都由资源记录构成。一般来说,资源记录包含与特定主机有关的信息,如 IP 地址、主机的所有者或者提供服务的类型。

查询跟踪日志:

# dig www.cnnic.cn +trace

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> www.cnnic.cn +trace
;; global options:  printcmd
.                       20032   IN      NS      a.root-servers.net.
.                       20032   IN      NS      b.root-servers.net.
.                       20032   IN      NS      c.root-servers.net.
.                       20032   IN      NS      d.root-servers.net.
.                       20032   IN      NS      e.root-servers.net.
.                       20032   IN      NS      f.root-servers.net.
.                       20032   IN      NS      g.root-servers.net.
.                       20032   IN      NS      h.root-servers.net.
.                       20032   IN      NS      i.root-servers.net.
.                       20032   IN      NS      j.root-servers.net.
.                       20032   IN      NS      k.root-servers.net.
.                       20032   IN      NS      l.root-servers.net.
.                       20032   IN      NS      m.root-servers.net.
;; Received 228 bytes from 8.8.8.8#53(8.8.8.8) in 70 ms

cn.                     172800  IN      NS      ns.cernet.net.
cn.                     172800  IN      NS      e.dns.cn.
cn.                     172800  IN      NS      d.dns.cn.
cn.                     172800  IN      NS      c.dns.cn.
cn.                     172800  IN      NS      b.dns.cn.
cn.                     172800  IN      NS      a.dns.cn.
;; Received 293 bytes from 198.41.0.4#53(a.root-servers.net) in 149 ms

cnnic.cn.               86400   IN      NS      b.cnnic.cn.
cnnic.cn.               86400   IN      NS      c.cnnic.cn.
cnnic.cn.               86400   IN      NS      d.cnnic.cn.
cnnic.cn.               86400   IN      NS      e.cnnic.cn.
cnnic.cn.               86400   IN      NS      a.cnnic.cn.
;; Received 190 bytes from 202.112.0.44#53(ns.cernet.net) in 6 ms

www.cnnic.cn.           300     IN      A       159.226.6.133
cnnic.cn.               600     IN      NS      a.cnnic.cn.
cnnic.cn.               600     IN      NS      b.cnnic.cn.
cnnic.cn.               600     IN      NS      d.cnnic.cn.
cnnic.cn.               600     IN      NS      c.cnnic.cn.
cnnic.cn.               600     IN      NS      e.cnnic.cn.
;; Received 206 bytes from 203.119.26.5#53(b.cnnic.cn) in 21 ms

三、DNS的资源记录

我们要查询这些庞大数据当然要有专门的主机负责这些工作了,提供查询、存储DNS数据服务的主机我们称之为DNS服务器。网络上为了方便域名的注册、管理、解析,将DNS域名映射到特定类型的资源信息,我们称之为资源记录。资源记录是有类型:

SOA:起始授权,只能有一个,而且必须是第一个
NS:域名服务器,用于表示DNS服务器的域名地址
MX:邮件交换器,用于一个域下的邮件使用
A:域名->IP,我们经常用到的就是它了
PTR:IP->域名,和A记录相反,用于反向解析
AAAA:域名->IPv6,基本不用
CNAME:别名记录,用于作A记录的域名的别名

等等。。。

四、国内服务商

国内常用DNS服务提供商:

CNNIC云解析:http://sdns.cn/
ZDNS云服务:http://www.zdns.cn/
DNSpod:https://www.dnspod.cn/
DNS.La:https://www.dns.la/
八戒DNS:http://www.8jdns.com/
还有一些域名注册服务提供商:万网、新网等。

参考:免费DNS解析服务介绍 http://www.freehao123.com/ten-dns/

五、DNS开源软件

1.bind
Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各种unix平台和windows平台。
官网地址:https://www.isc.org/downloads/BIND/
下载地址:
http://www.isc.org/downloads/
ftp://ftp.isc.org/isc/bind9/

2.dnspod-sr
DNSPod Security Recursive DNS Server(简称DNSPod-sr)是一个运行在 Linux 平台上的高性能的递归 DNS 服务器软件,依托于 DNSPod 多年运营和优化 DNS 服务的经验,针对国内复杂的网络情况,对递归 DNS 进行了一系列的优化,不管是性能上、业务上还是运营上均适合国内的国情,非BIND等软件可比拟,且比所有流行的开源 DNS 软件性能高出2倍以上。
项目地址:https://github.com/DNSPod/dnspod-sr#dnspod-security-recursive-dns-server

3.PowerDNS
PowerDNS Authoritative Server (PDNS) 是一个高性能的权威 DNS 名字服务器,支持文本的 BIND 配置,也可将配置存储与 MySQL, Oracle, PostgreSQL, SQLite, MongoDB 等数据库,后端可使用多种编程语言进行扩展。
官网地址:https://www.powerdns.com
项目地址:https://github.com/PowerDNS
下载地址:https://www.powerdns.com/downloads

4.Knot DNS
Knot DNS 是一个高性能的权威 DNS 服务器,支持所有 DNS 系统的关键特性,包括区域转换、动态更新以及 DNSSEC。
官网地址:https://www.knot-dns.cz/

5.Eagle DNS
Eagle DNS 是一个用 Java 语言开发的功能强大的多线程的平台无关的DNS服务器,基于 dnsjava 类库,支持 Primary Zones 和 Secondary Zones。
官网地址:http://www.unlogic.se/projects/eagledns
下载地址:http://www.unlogic.se/projects/eagledns/page/download

5.robdns
robdns 是一个高速的 DNS 服务器,设计用于公众互联网环境,可应付大量的攻击。其思路是在防火墙内隐藏主服务器,关键的特性的内建自定义 TCP/IP 堆栈可在 1个 CPU 核上每秒钟处理几百万的 DNS 查询请求。
项目地址:https://github.com/robertdavidgraham/robdns

DNS相关工具:

1.OpenDNSSEC是一个实现了 DNSSEC 的开源解决方案,用来在发布到认证的域名服务器之前保护 zone 数据。
2.dnsjava是DNS协议的一个Java开源实现。

DNS管理工具:
1.wddns

wddns是一套基于bind+mysql构建开发,web在线管理的智能DNS系统,安装方便,快速,让你可在最短时间内架构一套DNS/智能DNS系统.目前支持电信/网通/教肓网/移动/铁通/广电/按省份解析(31个省份)/搜索引擎蜘蛛等多线路,具有强大的监控功能,服务器健康检测,即宕机检测和切换,DNS服务器健康监控,宕机切换,防攻击检测,可选自动屏蔽攻击者IP,易扩展DNS服务器,数据自动同步等
2.xbaydns

参考文章:

1.DNS百科 http://baike.baidu.com/subview/22276/15346050.htm

2.DNS服务介绍 http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=dns:dns%E6%9C%8D%E5%8A%A1%E7%AE%80%E4%BB%8B

3.DNS服务及基于BIND实现 http://www.360doc.com/content/14/0923/18/13047933_411817771.shtml

4.DNS学习站点 http://server.51cto.com/dnsserver/