DoH && EDNS 的配置

DoH

Dns over Https 一说 Dns over Http/2

虽然有一些差别,但本质上都是为了解决一个问题

使用 dnsforwarder 建立本地 DNS 服务器避免 DNS 问题 一文中,我们讲述了通过了tcp查询代替udp查询来提高污染的难度以避免污染

但是即便是tcp查询,依然使用明文,中间攻击会导致你可以想到的任何不好情况发生

而随着技术发展,https连接的延迟已经越来越低,已经在用户可以接受的范围内——70-600 ms,在http2的情况下,延迟甚至有可能比udp要低

在去年IETF与谷歌实验室分别发布了两套标准

继续阅读“DoH && EDNS 的配置”

使用 dnsforwarder 建立本地 DNS 服务器避免 DNS 问题

0 事出有因

我们学校的网络似乎被污染了,目前看来dns污染是主要问题

dns 是使用udp明文传输的,监听和被污染的难度是相当的低的

然后就被污染了……

主要是 IP 解析出来会连接到一些比较奇怪的地方

正常的DNS延迟高到怀疑人生

看起来搭建一个自己的DNS服务器是非常有必要的了…

1 坑

如果想要直接看教程的话,建议从 2 部分看

一开始找到的解决方案是 dnsmasq 其并不支持 tcp 链接,而我们的 udp 访问方式已经被全端口污染了 ……

网上建议的方法是 pdnsd然而 Debian 官方库里并没有这个东西,而这个东西的源码感觉已经在互联网上销声匿迹了,而且它的已知的最后更新时间已经远在2012 年了……

然后我找到了 dnsforwarder

2 编译 && 安装

项目链接: [https://github.com/holmium/dnsforwarder]

将项目克隆到本地

git clone https://github.com/holmium/dnsforwarder.git
cd ./dnsforwarder

编译

make

安装

sudo make install

然后 dnsforwarder 便位于你的 /usr/bin/ 目录下,你就可以使用了

然而你直接运行本质上与和用 8.8.8.8是除了多了内存缓存是没有区别的…

3 配置

实际上如果你要看官方的 config 的话

它介绍的是挺清楚的

问题就是太清楚了,你要没有基础感觉就跟没学过英语的人读英翻英词典一样……

这里有一份推荐设置

LogOn true
LogFileThresholdLength 102400
LogFileFolder
UDPLocal 127.0.0.1:53
TCPGroup 208.67.220.220:5353 * no
GroupFile
BlockIP 243.185.187.39,46.82.174.68,37.61.54.158,93.46.8.89,59.24.3.173,203.98.7.65,8.7.198.45,78.16.49.15,159.106.121.75,69.63.187.12,31.13.76.8,31.13.64.49
IPSubstituting
BlockNegativeResponse false
Hosts
HostsUpdateInterval 18000
HostsDownloadPath
HostsScript
HostsRetryInterval 30
AppendHosts
BlockIpv6WhenIpv4Exists false
UseCache true
CacheSize 1048576
MemoryCache true
CacheFile
IgnoreTTL false
OverrideTTL -1
MultipleTTL 1
ReloadCache false
OverwriteCache false
DisabledType
DisabledDomain
DisabledList
DomainStatistic false
DomainStatisticTempletFile
StatisticUpdateInterval 29

这份配置使用了 TCP 链接,你可以设置端口或使用多个DNS

  • 开启了硬盘缓存 && 内存缓存
  • 避免了不存在IP
  • 监听本地53端口,非本机无法使用

然后更改 /etc/resolv.conf (dns配置文件) 的内容为

nameserver 127.0.0.1

执行以下命令防止被自动配置(DHCP) 覆盖

sudo chattr +i /etc/resolv.conf

Enjoy it!

04 日常使用

你可以把dnsforwarder设置为开机启动…..

不愿意的话,你可以每次开机执行这个东西qwq

]]>