stackia / DNSAgent

A powerful "hosts" replacement.
MIT License
614 stars 88 forks source link

求助: 怎么去掉连接特定的DNS后缀 #8

Closed gdh1995 closed 9 years ago

gdh1995 commented 9 years ago

需求是: 我想定义个单标签做域名, 比如caffe1, 系统发现这个不是标准的a.b.c形式的域名, 就自动加了连接特定的DNS后缀再传给DNSAgent. 我想找个办法匹配这个DNS后缀后自动去掉, 只保留我原本的带标签, 不然写rules.cfg的时候太麻烦了。

这个DNS后缀是路由给的,我不知道怎么禁用,不过它是个没人用的复杂域名,不用担心误判。

stackia commented 9 years ago

抱歉,没有听懂你的问题。。 详细叙述一下?

gdh1995 commented 9 years ago

我的电脑连上了一个wifi, 这个wifi有个"连接特定的DNS后缀",在网络和共享中心里点WLAN状态的“详细信息”里能看到。这个后缀的作用是,任何不包括"."的名字,都会自动被加上这个后缀来得到“完整的”域名,然后再传给DNS server。比如我:

gdh1995 commented 9 years ago

这个问题 不急。 work-around是手动在rules.cfg里补上后缀。

我刚提了另一个issue,导致ipv6的ip基本没法被解析到,更有修复的价值些。

谢啦。

stackia commented 9 years ago

直接把 caffe1 加入 hosts 就好了吧。

gdh1995 commented 9 years ago

我想把这个dns server用到vpn上给其它机子用, hosts只能管到本地。

stackia commented 9 years ago

https://github.com/stackia/DNSAgent/releases/tag/v1.6.5781 现在可以在 rules.cfg 的 Address 里面使用 {0}/{1}/{2} 这样的占位符来插入正则匹配的结果。

例如

{
    "Pattern": "^(.*)\\.mysuffix\\.com$",
    "Address": "{1}"
}

这样 www.baidu.com.mysuffix.com 会解析到 www.baidu.com。

关于此前你在邮件里提到的 DNS 劫持问题,这个版本可以利用 DNSPod 的 HttpDNS 服务来防劫持。可以在 options.cfg 这样配置:

...
"DefaultNameServer": "119.29.29.29",
"UseHttpQuery": true,
...
gdh1995 commented 9 years ago

嗯,我看到你直接改用Regex.match来检测了,会不会造成变慢?也许可以做一个全局配置项来选择用match还是isMatch。 或者在读rules.cfg的时候预检查 是否更改address、address里是否有“{0}”,怎么样?

stackia commented 9 years ago

http://referencesource.microsoft.com/#System/regex/system/text/regularexpressions/Regex.cs,539fad5e1b3e233a http://referencesource.microsoft.com/#System/regex/system/text/regularexpressions/Regex.cs,1650e3cf34701fef

内部调用的都是同一个东西,性能是一样的~

gdh1995 commented 9 years ago

好的。我没怎么用过C#,抱歉妄想了。

另一个问题是,你说的DNS 劫持就是指我在这个issue里说的“给域名加后缀”的方式吗?

其实我机子有一个稳定的正确的校内DNS源,只是我想加些DNS信息进去(这么看,我做的就是DNS劫持了^_^),比如谷歌,*.sixxs.org之类的