受欢迎的博客标签

自建本地DNS c#

Published

通过域名来访问服务器,但是对于网络层来说,其无法识别域名,所以需要将域名先转换成IP地址,

而DNS协议就是完成域名到IP地址的映射。

自建本地DNS工作原理

一次完整的查询请求经过的流程:

客户端Client -->客户端Client dns缓存-->操作系统dns缓存hosts文件 -->本地dns服务器-->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS

 


自建本地DNS截获访问域名,修改操作系统网卡dns或路由器dns指向自建本地DNS,从而使请求数据经过自建本地DNS。

 

主机host优先级:dns缓存>hosts文件>dns服务

 

本地DNS

本地DNS是指你电脑上网时IPv4或者IPv6设置中填写的那个DNS。这个可以手工指定。具体如下:

如果你的电脑是直连运营商(ISP)网络,一般默认设置情况下DNS为ISP的服务器地址。

如果你的电脑和ISP之间还加了无线或者有线路由(路由器本身会内置DNS转发器),它的作用是将发往它所有的DNS请求转发到上层DNS,但最终会转发到ISP的DNS。

如果手动修改了DNS,比如改成8.8.8.8这样的公用DNS服务器,那么指的就是这个服务器。

本地DNS不是权威服务器,相当于一个代理的DNS解析服务器,他会帮你迭代权威服务器返回的回答,然后把最终查到的IP返回给你。

当客户端向本地 DNS 服务器发出请求后,本地 DNS 服务器查询本机缓存

 

step 1. 先把路由器或本机的本地DNS 修改为我们的程序

1.2.1.修改本机的DNS

windos系统网卡本地连接里面有一个DNS设置

打开网络设置。
获取DNS服务器地址。
找到本地网络,右键打开,点击“属性”。
找到“Internet协议版本4(TCP/IPv4)”,双击打开。
将DNS从自动获得改成手动填写的,输入一组DNS保存即可

1.2.2.修改路由的DNS 

修改路由器的dns则是把连接路由器的所有终端进行修改,该修改项是存在于dhcp信息里,因此每个连接该路由器的终端都会获取到设置的dns


 

https://www.cnblogs.com/leiblog/p/10716959.html

 

 

 

C#中利用System.Net.DNS类进行DNS编程,包括同步方法GetHostName()、GetHostByName()、GetHostByAddress()和Resolve()的使用,以及异步方法的应用示例,帮助开发者实现DNS解析和主机信息获取

port 53 筛选端口(DNS服务的端口为53)

在C#中实现一个简单的DNS服务器,需要理解DNS查询和响应的工作流程。服务器端通常会监听UDP端口53,接收客户端发送的DNS请求,解析请求报文,查找相应的记录,然后构造响应报文并返回

 

 

useful links

C#的DNS协议完整实现代码

https://download.csdn.net/download/cc1072027237/9387454

wireshark dns域名解析抓包实验分析 

https://www.cnblogs.com/mggahui/p/13899888.html