C#实现DNS解析服务

利用ARSoft.Tools.Net实现一个客户端DNS解析服务,通过这个工具,可看到当前客户端对某个域名的解析地址是否正确。

ARSoft.Tools.Net是一个非常强大的开源DNS控件库,包含.Net SPF validation, SenderID validation以及DNS Client、DNS Server接口。

使用该接口可轻松实现DNS客户请求端及服务器解析端。项目地址:http://arsofttoolsnet.codeplex.com/或参考:http://i.isclab.org/?p=327

工具的主要代码:

 1         private void btnDNS_Click(object sender, EventArgs e)
 2         {
 3             int QUERY_TIMEOUT = 10000;
 4             string domain = txtDomain.Text;
 5             string dnsAddr = txtDNSAddr.Text;
 6             txtResult.Clear();
 7             btnDNS.Enabled = false;
 8             btnDNS.Text = "正在解析...";
 9             new Thread(() =>
10             {
11                 if (string.IsNullOrWhiteSpace(domain))
12                 {
13                     MessageBox.Show("待解析的域名不可为空");
14                     return;
15                 }
16                 if (string.IsNullOrWhiteSpace(dnsAddr))
17                 {
18                     MessageBox.Show("DNS地址不可为空");
19                     return;
20                 }
21                 //初始化DnsClient,第一个参数为DNS服务器的IP,第二个参数为超时时间
22                 //DnsClient dnsClient = new DnsClient(IPAddress.Parse("8.8.8.8"), QUERY_TIMEOUT);
23                 DnsClient dnsClient = new DnsClient(IPAddress.Parse(dnsAddr), QUERY_TIMEOUT);
24                 //解析域名。将域名请求发送至DNS服务器解析,第一个参数为需要解析的域名,第二个参数为解析类型, RecordType.A为IPV4类型
25                 //DnsMessage dnsMessage = dnsClient.Resolve("sso.zt-express.com", RecordType.A);
26                 DnsMessage dnsMessage = dnsClient.Resolve(domain, RecordType.A);
27                 //若返回结果为空,或者存在错误,则该请求失败。
28                 if (dnsMessage == null || (dnsMessage.ReturnCode != ReturnCode.NoError && dnsMessage.ReturnCode != ReturnCode.NxDomain))
29                 {
30                     // return null;
31                     //Console.WriteLine("没有解析成功");
32                     this.Invoke(new Action(() =>
33                     {
34                         txtResult.Text = "没有解析成功";
35                         btnDNS.Enabled = true;
36                         btnDNS.Text = "解析";
37
38                     }));
39                 }
40                 else
41                 {
42                     //循环遍历返回结果,将返回的IPV4记录添加到结果集List中。
43                     foreach (DnsRecordBase dnsRecord in dnsMessage.AnswerRecords)
44                     {
45                         ARecord aRecord = dnsRecord as ARecord;
46                         if (aRecord != null)
47                         {
48                             //resultIpList.Add(aRecord.Address.ToString());
49                             //Console.WriteLine(aRecord.Address.ToString());
50                             this.Invoke(new Action(() =>
51                                     {
52                                     txtResult.AppendText(aRecord.Address.ToString() + "\r\n");
53                                 }));
54                         }
55                         else
56                         {
57                             continue;
58                         }
59                     }
60                     this.Invoke(new Action(() =>
61                     {
62                         btnDNS.Enabled = true;
63                         btnDNS.Text = "解析";
64                     }));
65
66                 }
67
68             }).Start();
69
70         }

工具下载地址:http://files.cnblogs.com/files/hnsongbiao/Release.rar

时间: 2024-11-25 07:05:39

C#实现DNS解析服务的相关文章

DNS解析服务结构图

1.DNS(domain name system) 域名 <==> IP地址 DNS解析过程: 原文地址:https://www.cnblogs.com/wqs-Time/p/11642989.html

centOS建立bind服务,做为内网DNS解析服务安装记录

因为内网换了路由器,这个路由器不支持静态域名解析服务.所以只能自己建立一个DNS服务. DNS服务端软件选用bind,直接yum在线安装bind.此时会直接更新另外两个软件包bind-libs,bind-utils: yum -y install bind 安装过程不放了. 装完以后,配置文件:/etc/named.conf(没有装bind-chroot,可以增加安全性,只是内网用就没装了) 编辑named.conf配置文件: // // named.conf // // Provided by

反向区域DNS解析服务

前期准备:反向解析的tree结构是从根往下数,第二级为arpa,第三级为in-addr,第四级为IP,表示出来是:254.58.168.192.in-addr.apra. 1.建立反向解析区域: [[email protected] ~]# vim /etc/named.rfc1912.zones type master; file "magedu.com.zones"; }; zone "localhost.localdomain" IN { type maste

Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常被解析,莫名其妙地打不开,或者时好时坏. 如果碰上不稳定的本地DNS,还可能经常出现无法解析的情况.除了要避免"坏"的DNS的影响,我们还可以利用DNS做些"好"事,例如管理局域网的DNS.给手机App Store加速.纠正错误的DNS解析记录.保证上网更加安全.去掉网

Linux网络服务05——DNS域名解析服务(一)

Linux网络服务05--DNS域名解析服务(一) 一.DNS系统的作用 1.DNS服务器概述 整个Internet大家庭中连接了数以亿计的服务器.个人主机,其中大部的网站.邮件服务等服务器都使用了域名形式的地址,如crushlinux.google.com.mail.163.com等.很显然这种地址形式要比使用64.233.189.147.202.108.33.74的IP地址形式更加直观,更加容易被用户记住. FQDN格式(完整域名格式):在常见域名后添加"."(根域).例如:cru

DNS域名解析服务之(二)

使用BIND构建缓存域名服务器 在上一节中DNS服务器的相关知识,BIND软件包的安装以及DNS服务器的配置文件组成,配置格式等.下面分别讲解构建缓存域名服务器的方法 缓存域名服务器通常架设在公司的局域网内,主要目的是提高域名解析的速度,减少对互联网访问的出口流量,例如,在一个小型企业的内部网络中,可单独构建一台缓存域名服务器,为各部门的员工计算机提供DNS解析服务. 介绍一下测试环境: 缓存域名服务器的IP地址为192.168.59.65,并且能够正常访问互联网 缓存域名服务器代为处理客户端的

DNS域名解析服务之(一)

bind系统的作用类型 整个internet中连接了N多个服务器,个人主机,其中大部分的网站.邮件等服务器都使用了域名形式的地址.如www.google.com,mail.163.com等.很显然这种地址形式要比使用64.233.189.147,202.108.33.74的IP地址形式更加直观,而且更容易被用户记住. DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客户程序提供正向或反向地址查询服务,即正向解析与反向解析. 正向解析:根据域名查

Linux系统DNS域名解析服务

1.DNS系统的作用及类型   DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名也ip地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析.   ■ 正向解析:根据域名查ip地址,即将指定的域名解析为相对应的ip地址,域名的正向解析是DNS服务器最基本的功能,也是最常用的功能.   ■ 反向解析:根据ip地址查域名,即将指定的ip地址解析为相对应的域名,域名的反向解析不是很常用,只在一些特殊场合才会用到,如可用于反垃圾邮件的验证.   根据所管

Linux之DNS多种服务搭建

一:什么是DNS为什么会有DNS 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.在互联网诞生的早起因接入互联网的主机数量非常少,当时没有专用的DNS服务器来对整个互联网的域名进行解析,当时只在我们主机的host文件里记录了各个主机和IP对应的关系,他们每隔一定时间进行一次数据更新,但是后来接入互联网主机越来越多,以至于host文件里记录的数据太多,当在需要访问一个主机时查询host文件将是一个很浪费主机资源(不但有CPU还有巨大的内存资源)事情,所以人们