Coder Social home page Coder Social logo

auroradns.gui's Introduction

license AppVeyor GitHub-release Github All Releases CodeFactor FOSSA Status


简介

给大家的本地 DNS over HTTPS 客户端。

AuroraDNS 是一个纯净、简陋简单的、面向普通用户的,图形化的本地 DoH 客户端。

它在本地将 DNS over HTTPS 转换为传统的 DNS 协议。

正在使用 Windows 11? Windows 11 已经内置了 DNS over HTTPS 支持,也许您应该试试 ArashiDNS.Dekunua

正在使用 Linux 或在寻找 CLI?请试试看更轻量和现代的继任者 ArashiDNS.C

快速开始

Releases 下载最新版本 现在体验。

可能需要 Microsoft .NET Framework 4.7.2 运行环境。

无需复杂配置,开箱即可使用。


截图

截图


使用与测试

使用前,请关闭同类软件以防端口冲突(如 DNSCrypt )

普通用户指导

如果您有命令行使用经验,请查看:高级用户指导

  1. 打开本软件之后,确认打开左上角“启用 DNS 服务”开关
  2. 打开下方最左侧“设为系统 DNS”按钮

高级用户指导

使用 CMD 命令

  • 使用本软件提供的本地 DNS 服务解析 baidu.com
nslookup baidu.com 127.0.0.1

如果有解析,即代表本软件生效。如果无效,请先尝试排除一切可能情况之后发送 Issue
然后只需检查 DNS 是否已设置为 127.0.0.1

  • 查看所有网卡的网络参数设置
ipconfig /all

注意: 使用的网卡 DNS 要设为 127.0.0.1 才能生效

如果没有设置,请参考此文章 将第一个 DNS 设置为 127.0.0.1
第二个 DNS 推荐设为 腾讯 119.29.29.29 或者运营商提供的 DNS
如果已设置,只需刷新 DNS 缓存即可(点击本软件设置界面的“刷新缓存”按钮 或者使用如下命令)

  • 刷新 DNS 缓存
ipconfig /flushdns

反馈

  • 作为一个初学者,可能存在非常多的问题,还请多多谅解。
  • 如果有 Bug 或者希望新增功能,请在 issues 中提出。
  • 如果你添加了新的功能或者修正了问题,也请向我提交 PR,非常感谢。

致谢

我一直在使用 ReSharper,它真的可以说是令人惊叹的工具,使我的开发效率提升了数倍。

感谢 JetBrains 为本项目提供了 ReSharper 开源许可证授权。

Credits

没有他们,就没有 AuroraDNS 的诞生。

请查阅 Credits ,其中包含了我们的协作者与使用到的其他开源软件。

License

Copyright (c) 2018 Milkey Tan. Code released under the MIT License.

auroradns.gui's People

Contributors

axionl avatar dependabot[bot] avatar mili-tan avatar nihilityt avatar sky5454 avatar suibianp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

auroradns.gui's Issues

Support for macOS?

Wish macOS users could enjoy the same purified DNS service.

Appreciate it.Keep it up.

RFC 8484支持

实验了一下目前AuroraDNS应该只支持JSON API,有没有计划未来支持标准的RFC 8484

ps: 由于目前不支持标准的RFC 8484dns.quad9.net这个DOH是无法使用的,报错记录如下

| 2019/9/12 8:27:27 127.0.0.1 : www.twitter.com. | A
| 2019/9/12 8:27:29 127.0.0.1 : www.twitter.com. | AAAA
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 400 BadRequest | www.twitter.com. | https://dns.quad9.net/dns-query??ct=application/dns-json&name=www.twitter.com.&type=AAAA&edns_client_subnet=打码
| 2019/9/12 8:27:30 127.0.0.1 : www.twitter.com. | A
| - Catch WebException : 400 BadRequest | www.twitter.com. | https://dns.quad9.net/dns-query??ct=application/dns-json&name=www.twitter.com.&type=A&edns_client_subnet=打码
| -- SecondDoH : https://1.0.0.1/dns-query

dns 还是被污染

| - Catch WebException : 未将对象引用设置到对象的实例。 | p9.qhimg.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | p1.qhimg.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | p9.qhimg.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| 2019/8/4 12:04:10 127.0.0.1 : logic2.updrv.com. | A
| - Catch WebException : 未将对象引用设置到对象的实例。 | p8.qhimg.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | p1.qhimg.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| 2019/8/4 12:04:10 127.0.0.1 : cloud.browser.360.cn. | A
| - Catch WebException : 未将对象引用设置到对象的实例。 | p3.qhimg.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | p8.qhimg.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| 2019/8/4 12:04:11 127.0.0.1 : toutyrater.github.io. | A
| - Catch WebException : 未将对象引用设置到对象的实例。 | p5.qhimg.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | p3.qhimg.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| - Catch WebException : 未将对象引用设置到对象的实例。 | dispatch.updrv.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | p5.qhimg.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| - Catch WebException : 未将对象引用设置到对象的实例。 | izy.updrv.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | dispatch.updrv.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| - Catch WebException : 未将对象引用设置到对象的实例。 | izy.updrv.com. | https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | hashtourl1.updrv.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| - Catch WebException : 未将对象引用设置到对象的实例。 | hashtourl1.updrv.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| - Catch WebException : 未将对象引用设置到对象的实例。 | dsearch2.updrv.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | dsearch2.updrv.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| 2019/8/4 12:04:19 127.0.0.1 : autoupdater.updrv.com. | A
| 2019/8/4 12:04:19 127.0.0.1 : autoupdater.updrv.com. | A
| 2019/8/4 12:04:20 127.0.0.1 : media.update.updrv.com. | A
| 2019/8/4 12:04:20 127.0.0.1 : dtl.update.updrv.com. | A
| - Catch WebException : 未将对象引用设置到对象的实例。 | s3.nzbdw.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | s3.nzbdw.com. | https://1.0.0.1/dns-query
| -- SecondDns : 223.5.5.5
| 2019/8/4 12:04:22 127.0.0.1 : api.github.com. | A
| - Catch WebException : 未将对象引用设置到对象的实例。 | logic2.updrv.com. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query
| - Catch WebException : 未将对象引用设置到对象的实例。 | cloud.browser.360.cn. | https://dns.google/resolve
| -- SecondDoH : https://1.0.0.1/dns-query

点选“重新启动”不会应用之前做的配置变更

先变更配置,例如如更改备用DNS服务器IP,点确定,确认配置保存,然后点选“重新启动”,然后查看 ipconfig /all 的网卡DNS配置,备用DNS服务器还会是原来没有变更的服务器IP,这时需要退出程序,重新运行程序才会应用变更的配置

关于国内外分流解析

关注到了您的这个项目,很不错,关于这个国内外解析的问题,同样感觉是一个比较大的痛点,虽然使用chinalist这样的方式可以实现一部分需求,但是像一些视频网站,本身会采用一些单独的域名用作静态内容或者版权内容,不太方便全部都添加到list内。
提一个建议吧,供参考。可以先使用国内DNS进行解析,解析出来的地址是国外的,再采用国外DNS重新解析,返回最终值,或者国内外同时查询,通过返回的IP的位置决定最终返回哪一个地址作为程序的输出值,同时将结果缓存起来,应该能解决这个痛点。谢谢~

Originally posted by @anyran in #20 (comment)

系統未設定 DNS2 時出現錯誤訊息

config.json

{
  "Listen": "127.0.0.1",
  "SecondDns": "139.175.1.1",
  "BlackList": false,
  "RewriteList": false,
  "DebugLog": true,
  "EDnsCustomize": false,
  "EDnsClientIp": "0.0.0.0",
  "ProxyEnable": false,
  "HttpsDns": "https://dns.google.com/resolve",
  "SecondHttpsDns": "https://dns.cloudflare.com/dns-query",
  "Proxy": "127.0.0.1:1080",
  "EnableDnsCache": true,
  "EnableDnsMessage": false,
  "EnableHttp2": true
}

我試著只設定系統的 DNS1: 127.0.0.1 時執行出現如圖的錯誤訊息
image

log

| 2019-05-12 12:25:32 127.0.0.1 : whatismyip.akamai.com. | A
| System.NullReferenceException: 並未將物件參考設定為物件的執行個體。
   於 AuroraGUI.DnsSvr.QueryResolve.<ServerOnQueryReceived>d__0.MoveNext()
Try Connect:System.Net.WebException: 無法解析遠端名稱: 'whatismyip.akamai.com'
   於 System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   於 System.Net.WebClient.DownloadString(Uri address)
   於 System.Net.WebClient.DownloadString(String address)
   於 AuroraGUI.Tools.IpTools.GetIntIp()

這狀況看起來是連 AuroraDNS 要去查的時候也走了 127.0.0.1
但是卻沒有經過裡面設定的 139.175.1.1 這個 DNS

版本 | 190501

[自定义监听IP地址]设置显示有误

如图,如果开放为 0.0.0.0 (想给局域网内其他电脑使用),保存后似乎确实生效,但设置窗口如果再次打开,这个开关还是显示为关闭状态。版本是 1.0.0.0 (190701.Releases)

image

允许禁用公网 IP 查询

对于有些用户而言 这是一个隐私风险
不过同时 禁用公网 IP 查询就意味着不再使用区域化查询

PS (这是代发的)

能不能加一个新功能?

思路是这样的:访问baidu.com使用多个DNS例如223.5.5.5 114.114.114.144 获得不同的ip后进行ping,使用延迟最低的ip,可以做缓存不会对dns服务器有很大负担
这种方法可以解决dns返回的ip无效或者延迟过高的问题
还可以解决轻度dns污染与doh的本意不谋而合

经常显示:DNS服务器无法启动:端口被占用

是不是该系统默认占用了127.0.0.1:1080?
我不知道该提供哪方面的详细信息,系统Windows10但是装了很多软件无法排查哪些之间冲突……
希望给出常见错误处理和故障说明的页面方便自查,谢谢了:(

want you to prepare English notation

Chinese notation can be used somehow, but I do not understand some meanings, so I hope that you can prepare English notation, such as switching to English notation if possible.

(Im Japanese but I can use it if I have English notation)

[feature] Blacklist/whitelist, IPv6 & host files

Some feature requests from simple DNSCrypt:

  • Adding blacklist/whitelist. It would be better if you return 0.0.0.0 instead of empty response for blacklist entries.
  • Stop IPv6, aka send empty message to IPv6 server. This accelerate querying when you don't have IPv6 access.
  • Support remote host files. Better if there is a management UI.
  • UI to manage virtual network driver.

有啥用

用了反而连不了google翻译了:)

快速切换 DNS 脚本(给有需要的人)

微软 TechNet 的 VBS 脚本
https://gallery.technet.microsoft.com/3d5ae334-1d75-4cea-8079-78c6bd836faf

用法:保存为文件名 vbIPConfig.vbs
以下在 CMD 里操作,均需管理员权限
(如果找不到 CMD,你可以在 PowerShell 里输入 CMD 以切换到 CMD 模式的控制台)





然后查询所有网卡配置及其序号

vbIPConfig.vbs /?

注:网卡一般是:带 PCI 或带 Wireless LAN 或带 WLAN 字样的,部分轻薄本稍有不同,请善用百度
如我的会显示 19 - Realtek RTL8168/8111 PCI-E Gigabi
记下你所用网卡所在的序号(我的是 19 )
然后定位到该文件,如需要设置DNS为 127.0.0.1 则执行命令

vbIPConfig.vbs /I:19 /IP:DHCP /DNS:127.0.0.1 

此命令中,19 前面的字母是 i




来源

IPv6支持

日志文件被这条以每秒2-3K的速度在刷屏

在 System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
在 AuroraGUI.Tools.IpTools.ResolveNameIpAddress(String name)
System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index

关于DoH服务器使用的建议

我大概明白程序使用DoH的逻辑,先使用备用DNS服务器IP查询DoH服务器网址的IP,然后使用DoH服务器的查询结果通过127.0.0.1反馈给应用程序
但这有一个前提是备用DNS服务器IP必须是没有被屏蔽或UDP应答没有被污染的,如果出现这种状况,这个备用DNS服务器IP不会查出正确的DoH服务器网址的IP结果
在这个情况下不如给用户一个选项,直接使用DoH的IP方式查询,如“https://9.9.9.10/dns-query”,,然后备用DNS服务器IP直接写成127.0.0.1
因为现在很多DoH服务提供商为了避免原来DNS的污染直接签发了IP证书而不止是域名证书,让用户直接可以以IP的URL方式使用

同时监听IPv6地址

因为Windows 10必然优先使用IPv6的DNS服务器(已查找无数资料无果,唯一方法是把IPv6关闭),所以尴尬的是由于本程序不支持监听IPV6(尝试将自定义监听地址改为::但是好像没有用),即使已经将IPv4的DNS地址设置为127.0.0.1,系统貌似并不会使用(由nslookup看出)

Lang

Only Chinese?

关于ipv6的监听

请问开发者有ipv6的情况要怎么设置配置文件监听为本地ipv6 DNS地址。

奇怪的问题(201031 - Release)

使用201031 - Release版本

设置备用dns为127.0.0.1

主DOH服务器选程序内置列表的第一项https://1.1.1.1/dns-query
备DOH服务器选程序内置列表的第二项https://1.0.0.1/dns-query

点选设置菜单顶上的清除DNS缓存,然后点确定,保存配置,退出程序,再重启程序,然后在CMD命令行打命令ipconfig /all确认网卡的主,备DNS地址均为127.0.0.1

按照我理解的逻辑理论上在这个设置下可能出现两种情况
第一,由于网卡的主,备DNS服务器地址均被设置为127.0.0.1,程序不能通过备用DNS地址查找DOH服务器,所以导致系统不能解析任何域名
第二,由于网卡的主,备DNS服务器地址均被设置为127.0.0.1,而由于在程序中选择了https://1.1.1.1/dns-query方式的直接IP访问DOH服务器方式,所以系统可以通过DOH查询到域名

但是实际情况非常奇怪,当按照前面的设置重启程序,然后在CMD命令行打命令ipconfig /all确认网卡的主,备DNS地址均为127.0.0.1
然后在CMD命令行打入nslookup www.baidu.com
或nslookup www.baidu.com 127.0.0.1
都报告查询超时出错,这个应该是正常的
然后再打入ping www.baidu.com ,就非常顺利地解析出地址并且ping通了(不能理解)

然后打开IE,firefox,chrome等3种浏览器,访问nstool.netease.com,都一致报告DNS服务器地址使用的是本身运营商的DNS地址,好像就跟网卡DNS地址没有被设置为127.0.0.1而采用自动获取DNS地址一样

为免ping的影响,退出所有程序及浏览器,清除DNS缓存,重启程序,重复上面的步骤直到打完两种nslookup命令,都报告超时出错,然后直接打开3个浏览器访问nstool.netease.com并刷新浏览器页面,然后3个浏览器还是一致报告DNS服务器地址使用的是本身运营商的DNS地址

这里的问题是既然网卡DNS都被设置为主,备地址都是127.0.0.1了,而且nslookup都查询出错了,为什么还能使用原来运营商的DNS去解析域名导致能够ping及浏览呢?

另外主,备DOH服务器都选程序内置列表的https://1.1.1.1/dns-query可以直接IP地址运作的项了,理论上和网卡设置什么DNS没有任何关系了,除非选的是程序内置列表那些域名URL的DOH服务器才需要网卡的DNS服务器解析这个DOH域名(这个更不理解)

Does it support dns cache?

In linux I use dns-over-https and use coredns to cache result, but in windows It's difficult for us to run sth like coredns, dnsmasq, so if AuroraDNS.GUI supports dns cache it will be great

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.