我们学校的网络似乎被污染了,目前看来dns
污染是主要问题
dns 是使用udp
明文传输的,监听和被污染的难度是相当的低的
然后就被污染了……
主要是 IP 解析出来会连接到一些比较奇怪的地方
正常的DNS延迟高到怀疑人生
看起来搭建一个自己的DNS
服务器是非常有必要的了…
1 坑
如果想要直接看教程的话,建议从 2 部分看
一开始找到的解决方案是 dnsmasq
其并不支持 tcp 链接,而我们的 udp 访问方式已经被全端口污染了 ……
网上建议的方法是 pdnsd
然而 Debian 官方库里并没有这个东西,而这个东西的源码感觉已经在互联网上销声匿迹了,而且它的已知的最后更新时间已经远在2012 年了……
然后我找到了 dnsforwarder
2 编译 && 安装
将项目克隆到本地
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
]]>