[原创]bind DNS IP列表的精确获取

[原创]bind DNS IP列表的精确获取 - LSX - 博客园

[原创]bind DNS IP列表的精确获取

Posted on 2012-02-19 21:43 LSX 阅读(661) 评论(1) 编辑 收藏

公司准备自己实施CDN的项目:

这里有个关键的问题:

如何来实现智能化判断,智能化程度到市级别,当然精确度及考虑实用性,经过仔细的揣摩,改省级别,也就是智能DNS可以判断出来用户的访问是从那过来,具体到省的级别,其他公司的智能DNS最多也就能判断是:电信还是 网通 还是铁通,这只是线路的判断,今天所说的是更具体的识别方式,在网上找了几家做DNS的发现,他们都无法误别,我当时在想一些做CDN的如何来判断的呢,我百思不得其解,当然我的技术圈也不大,没有这方面的高人指点,所以只能根据自己的网络知识来做相关的技术分析,当然中间遇到很多问题,但最终还是成功了,这时我才明白,原来没有高人指点,也可以搞的定。

大家都知道关键的问题是IP的列表问题如何解决,当然这个问题,也是让我头痛了许久的问题,当时因为判断失误,我是到各个网站去查找相关的资料,到APNIC官网,下载相关的IP分配信息,当然APNIC的官网IP分配信息库也是挺大的,要一时的整理出来每一个IP是那个地区,更是一个体力话,当然也看到网上有通过相关代码实现IP归属地的方法,但识别的级别也只能到电信网通 各个ISP运营商之间,要想识别到省的级别那误差就相当大了,和没有误别差不了多少,最后我还是放弃了这条路,于是呼,开始到网上查相关的DNS列表,下载,当时想着,应该会有这方面的资料,毕竟CDN还是很多人用的,总要有人共享一下吧,可现实打击了我幼小的心灵,没有找到,郁闷。

经过头痛式的思考,我想到了纯真IP库,这东西引导我进入了一个正确方向,打开发现IP信息很多,准确度也相当的高,不定期的更新,总算看到太阳了,很美,开始想如何把这些列表都提取出来,归类,当然不可能手动一个一个复制,那就让计算机搞定吧,开始拿出来百年不用的MFC和C# 功底,头痛式的编程,程序搞定后那就开始提取列表了,很快,很舒服。

用户访问网址的原理:

用户请求DNS--DNS服务器查找本机如果没有则会转发请求让另外的DNS服务器来应答,一直到查到,最后查找到则DNS服务器会返回记录,当时我理解错误,以为是用户的本机IP会请求DNS,这里不要搞错,DNS的请求机制,要控制用户访问的服务器,还要从DNS入手,DNS服务器的IP很重要,有列表,犹如令牌。

本文章分为二个部分

第一部分为根据纯真IP库对全国地方包括港奥台地区所属IP进行格式转换,这部分是12年整理的。

第二部分是针对BIND的访问日志里面的记录进行整理获取的列表,这部分为10年整理的。

关于如何安装,配置,不在本文的讨论范围内(网上资料多的很)

第一部分

基本上这部分都是软件的使用说明

1、 下载纯真IP库

http://www.crsky.com/soft/2611.html

如何下载安装不在本文章讨论范围之内如果不会请问度娘(百度)

在非凡软件站下载并安装然后更新到最新版本界面如图

2、 解压IP库到文本文件

3、 用EiditPlus打开这个文本拖动到最后几行,删除多余的东西

删除尾部的这些就行了

上图是删除后的效果,记得保存

4、 导入到Access数据库

我用的是Access2010版本,其它的版本原理一样,选择外部数据,点文本文件,然后出来一框框,浏览我们刚才导出的那个文本文件即可。

5、 然后点确定进入下图

点击过确定会出现如图的情况,然后点高级,把字段3的那个宽度调整的大一点,因为这一列是地区信息,比较长,然后点确定,然后再点下一步,进入下图

再点下一步

再点下一步

选择,不要主键,再点下一步

这一步,点完成,等一会,导入完成,如图所示

会发现多了一个表,这个表名,记得一定要是ip这个名字,因为时间比较急,所以不是太友好,记得保存,还要记得保存成2003的格式。

保存即可,2010的另存为成2003的地方还真不好找。

上面的是几个文件

第一个是转换程序

第二个是纯真IP库程序

第三个是导出的IP库转换成Access的数据库

第四个是IP库的文本文件

第五个是纯真IP库的专用数据格式

第六个是我写的这个文章的文件

其中我们只需要二个文件

第一个和第三个其它你可以删除

6、 下面是程序转换使用

这是程序运行界面

生成方式:

全自动,会生成34个省份,四条线路的信息

自定义:就是自己选择要生成的地区,或者线路

其它的我想就不用我解释了,一看就知道了

第一步

确认生成方式,这里我选择全自动

然后选择数据库文件就是刚才我们导出的那个2003格式的数据库

然后点生成即可

生成中的图,采用多线程,所以界面不会卡死

然后会在这个程序的当前目录生成一个ACL的目录里面就是各地区的IP信息了,一个文件一个地区,一个文件里面会包含四个线路。

上图就是生成后的各个省份的文件

下图是打开一个最少的地区文件看一下结构,澳门地区的

然后大家就可以根据这些文件导入到bind里面了,如果这再不会,我就真没有办法了,不过另外要说的是,这是我最新的研究生成结果,还没有来得急测试,bind引入几M的文件会不会查询速度慢,或者启动慢,当我想,bind因为是加载到内存里面的,我想速度上面不会有太大差距,大家快快测试引入吧,一个精确的智能DNS就是这么的简单。

第二部分

以下内容,是对以上内容的初充,如果你在运行一段时间发现IP库还不全,就可以用以下方法,分析 DNS的日志来补充和生成这些列表信息

步骤如下:

一:从DNS日志里面提取other(就是没有识别出来的IP) 生成列表

#!/bin/bash
cp /etc/named/log/dns-query.log ~/
cat ~/dns-query.log|grep other|cut -f4 -d':'|cut -f1 -d'#'|cut -f3 -d' '>./DnsList.txt
cat /dev/null >/etc/named/log/dns-query.log
cat /dev/null >/etc/named/log/dns-alllogs
cat /dev/null >/etc/named/log/dns-logs
cat /dev/null >/etc/named/log/dns-warning
rm ~/dns-query.log

解释如下:

第一行#!/bin/bash  我想不用说大家都知道

第二行复制日志到用户目录

第三行生成列表,这一句话是最关键的

第四、五、六、七、行清空日志

第八行移除用户目录日志文件因为这时我们不需它了

最后生成的列表样子如下:

1.1.1.1

2.2.2.2

3.3.3.3

4.4.4.4

文件名:DnsList.txt

这是下载到WINDOWS下面用UltraEdit打开的效果

只有是这样的格式,下面的程序才可以进行处理

代码可能冗余,当然也很简单,大家可以看看原理

这时我们已经有了无法识别的IP了,现在就要做这些IP列表进行分类了,拿出我的杀手剑:MFC处理程序

二:处理IP列表

这是程序运行的界面

原理:http://www.ip138.com/ips.asp?ip=查询IP&action=2对这个地址进行提交然后在返回的数据里面程序搜索相关的位置信息归类保存

当然这个东西对于高手而言,是很低级的东西,今天我也是冒死一分享

自己整的不好看了,功能有就行了,看点文档编写程序,我是够菜的了,因为没时间看线程方面的东西,所以就没有采用线程方式处理文件,在处理文件时可能界面会假死,只要不管它就行了,运行完自动停止

运行第一步:

第二步:点击开始

第三步:处理中 假死,,正常现象

处理完成:

生成三个文件夹:

文件夹里面是按地区进行归类的文本文件

里面内容如下

当然这些列表都是DNS服务器的地址,可以手动添加到bind的acl里面

我的ACL的格式如下:

每个省一个文件

文件里面的格式如下:

识别三个运营商

当然这个HeNan.acl的文件我以前都是手动创建的,最近感觉这样太傻冒了,于是升级了一下,用shell脚本自动化创建文件,效果非常不错。

虽然没有达到一键OK但这个效果我还是比较满意的

下面我们继续谈如何生成acl 文件

三:

1、创建data文件夹(这个文件夹和脚本有关系) 把cnc telcom tietong  三个文件夹放到里面用7-zip 压缩data文件夹,文件名为:data.tar

上传到LINUX服务器

这是我上传的

红字是压缩包,tar xvf data.tar  解压到目录

里面的

0mysql.opt是操作数据库的

1list.create 是创建DnsList.txt的脚本

2db.import 是把IP列表存到数据库时面,这些都是贵重资源啊

3acl.create 这个就是创建acl的脚本

这些文件同样我也会一并上传,倡导:开源,开源,再开源,免费,免费,再免费

data 目录就是存放的按地区分类的文本文件了,可以称为数据源

./2db.import 执行

这时脚本会自动读取data文件夹下面的数据,并写入到数据库里面这是写入

./3acl.create 执行

这时脚本会自动读取数据库里面的数据,并保存为acl

note:有人会问,你为什么要多一步了,写到数据库里面,一来呢,我要保存以备以后使用,二来呢,我要靠数据库的unique约束来避免有重复的IP

这几步一执行就OK了,基本上是不用干体力活了。只是操作,操作流程

注意:

这里的数据库的生成脚本我也会一并上传,如果有什么地方不理解的大家也可以提问,如果那里写的比较低级的,大家不要骂我,我也是初级玩家,总要给我点机会改过吧,到此结束。

附件下载地址:

http://blog.lishixin.net/linux/468.html

posted on 2012-02-22 00:16  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/02/22/2362399.html

[原创]bind DNS IP列表的精确获取相关推荐

  1. 动态获取bind dns日志IP脚本

    #!/usr/bin/env python #_*_coding:utf-8_*_ ''' python deny_dns_allip.py your_filelog_name 动态获取dns日志的I ...

  2. Qt在linux和widows下获取IP列表,网关,子网掩码,广播地址

    Qt获取IP列表,网关,子网掩码,广播地址 linux下根据IP获取子网掩码还有网关 首先获取出IP列表,然后根据传入的IP地址进行判断,然后获取子网掩码和网关 #if defined(Q_OS_WI ...

  3. [原创]K8Cscan 3.8大型内网渗透自定义扫描器(支持批量C段/B段/A段/IP列表/URL列表/跨网段扫描)

    前言:无论内网还是外网渗透信息收集都是非常关键,信息收集越多越准确渗透的成功率就越高 但成功率还受到漏洞影响,漏洞受时效性影响,对于大型内网扫描速度直接影响着成功率 漏洞时效性1-2天,扫描内网或外网 ...

  4. [原创]开源跨平台大型网络端口扫描器K8PortScan(支持批量A段/B段/C段/IP列表)

    0x000 K8PortScan Python版Cscan端口扫描器 Code: https://github.com/k8gege/K8PortScan K8portScan 1.0 Date: 2 ...

  5. 原创|批处理|批处理设定IP地址与自动获取IP之间的切换

    批处理设定IP地址与自动获取IP之间的切换 背景 在办公环境中,通常,内网的IP地址是指定的,随意更改会导致上不了网或者IP地址冲突:但是当我们将办公电脑带回家中时,通常是自动获取IP地址的.手动来回 ...

  6. java获取dns_Java 根据网址查询DNS/IP地址的方法

    说明: 本文不涉及底层的 DNS 协议, 直接使用Java平台提供的API进行操作. DNS也就是 Domain Name Service,即 域名服务. 我们知道, Java中与网址有关的类包括 j ...

  7. 全国各地公用DNS服务器IP列表

      全国各地公用DNS服务器IP列表 名词解释DNS: 域名服务器(Domain Name Server),在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相 ...

  8. android 获取dns地址吗,Android: 获取dns IP地址

    在Android系统中,想获取dns server的IP地址并不是一件容易的事,在bionic中,有关于获取dns IP地址的相关代码,但是你在native代码中却不能接调用相关的函数获取. 如在bi ...

  9. socket编程之gethostbyname获取IP列表和Host别名列表

    gethostbyname 函数原型: struct hostent FAR * WSAAPI gethostbyname( _In_z_ const char FAR * name ); getho ...

最新文章

  1. 郁闷的时候看看这头驴,改变你的心态!
  2. java中集合的模型特点_Java 学习笔记(十四)集合
  3. 转数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示
  4. python获取机器唯一标识_python中uuid来生成机器唯一标识
  5. 数位DP CF 55D Beautiful numbers
  6. java. 三个人比赛怎么写_蓝桥杯——分组比赛(2017JavaB组第3题)
  7. java导出文件教程_Java文件教程
  8. Linq的Distinct方法的扩展
  9. 4.额外线程能力(Additional Thread Capabilities)
  10. 多个Tomcat同时运行环境配置 - imsoft.cnblogs
  11. (二)Struts.xml文件详解
  12. 初中生计算机课考试方案,信息技术中考备考方案
  13. java定时任务 时间_java 定时任务的执行时间表示-
  14. Android Paint,Canvas api 详解
  15. buck电路上下管_BUCK/BOOST电路原理
  16. 大学应届毕业生面临的压力和应对办法
  17. 国产操作系统调研 -- 银河麒麟4.0.2
  18. 在python里是什么意思_在Python中$是什么意思?
  19. 罗克韦尔自动化荣膺“2019全球最具商业道德企业”,这是该公司第11年上榜
  20. 记一次MySQL使用外网IP连接超时

热门文章

  1. 锁定应用,解锁应用,锁卡,解卡,更改密码指令
  2. 个人理财小助手 —— 简介
  3. Cocos Creator-5.物理与碰撞系统
  4. 【Linux】rc.local和rc.d/rc.local的区别|rc.local文件开机不执行
  5. 跨境电商新手卖家指南
  6. 机器学习(五)支持向量机
  7. 使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试
  8. 高逼格的实现WiFi共享,不安装第三方wifi共享软件,两种方式实现开启wifi的功能
  9. 单片机晶振异常分析于测试
  10. 工作十年总结的这36条项目管理经验,总有一条能戳中你