在Linux上安装:概述
内核要求(来自golang的最低要求):
- 内核版本2.6.23或更高版本。
- Linux / ARMv5需要更新得多的内核,至少v3.1(针对
__kuser_cmpxchg64
)。 - 我们不支持CentOS5。内核太旧(2.6.18)。
- 对于低端MIPS64,已知内核版本4.1会失败,并且4.8可以运行。
步骤1:获取root shell
在大多数Linux发行版中,该sudo -s
命令将完成任务。
步骤2:检查还有什么可能已经在监听端口53
如果您已经拥有本地DNS缓存,则最终必须将其替换为dnscrypt-proxy。两者可以同时使用,但这超出了本指南的范围(或至少在此Wiki页面的范围之外)。
输入以下命令:
SS -lp '运动=:域'
这可能类似于以下内容:
tcp LISTEN 0 128 127.0.0.1:domain *:* users:(("unbound",pid=28146,fd=6))
tcp LISTEN 0 128 127.0.0.1:domain *:* users:(("unbound",pid=28146,fd=4))
unbound
使用特定于发行版的命令(例如apt-get remove
或)卸载相应的软件包(在上面的示例中:)pacman -R
,然后使用再次检查ss -lp 'sport = :domain'
:不再有任何监听domain
端口的内容。
您可能还会看到所服务的端口systemd-resolved
。该命令无法卸载,但可以使用以下命令禁用:
systemctl stop systemd-resolved
systemctl disable systemd-resolved
检查是否再也没有监听端口53了:
ss -lp 'sport = :domain'
看起来还好吗 让我们继续下一步。
步骤3:下载并运行dnscrypt-proxy
在此处下载dnscrypt-proxy:dnscrypt-proxy二进制文件。
这里有很多文件,但是您只需要一个文件,即可匹配您的操作系统和体系结构。
dnscrypt-proxy-linux_x86_64-*.tar.gz
是大多数人想要的。
因此,下载此文件,然后将其解压缩到任意位置。In可以位于您的主目录中,也可以位于您/opt/dnscrypt-proxy
想要的任何位置。
完全可能将可执行文件放在一个位置,将配置文件放在另一个位置,将缓存文件放在其他位置,将日志文件放在其他位置。
但是,如果这是您第一次安装该软件,并且没有充分的理由使事情变得比应有的复杂,则只需将所有内容保存在同一目录中即可。至少要从头开始,并确保一切正常。
然后,如果您愿意,发疯。但是请不要在启动代理之前更改所有内容,然后抱怨“它不起作用”。从一些无聊的事情开始,然后逐渐进行调整。如果您确实需要。
另外,此时请勿更改DNS设置。
只需根据示例一创建一个配置文件:
cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml
现在,对于紧张的事情,请转到dnscrypt-proxy目录,然后键入:
./dnscrypt-proxy
看起来是否正确启动了吗?如果没有,请尝试找出原因。这里有一些提示:
dnscrypt-proxy.toml: no such file or directory
:按照上述说明复制示例配置文件dnscrypt-proxy.toml
。not found ELF - not found - Syntax error: ")" unexpected
或类似的东西:您没有为操作系统和CPU下载正确的文件。listen udp 127.0.0.1:53: bind: permission denied
:您没有使用root shell(请参阅步骤1)。使用sudo -s
得到一个。或者su
如果sudo
您的系统上不存在。listen udp 127.0.0.1:53: bind: address already in use
:某些内容已经在侦听DNS端口。也许还有其他事情,也许是您在启动新的dnscrypt-proxy之前没有停止的实例。返回步骤2,然后重试。dnscrypt-proxy.socket: TCP_NODELAY failed: Protocol not available
注意:使用systemd套接字激活时,这些警告是预期的,可以安全地忽略。之所以会发生这种情况,是因为systemd尝试为UDP套接字应用仅TCP选项。这不应该影响功能。dnscrypt-proxy.socket: TCP_DEFER_ACCEPT failed: Protocol not available
:同上systemctl failed
:您跳开了枪,没有遵循上面的指示。<something about IPv6 not being available>
:编辑dnscrypt-proxy.toml
并, [::1]:53
从中删除listen_addresses
。
没有错误吗?惊人!
不要关闭终端窗口。我们将更改系统DNS设置。
步骤4:更改系统DNS设置
您的系统是否有一个名为的目录/etc/resolvconf
(不是resolv.conf
文件)?如果是这种情况,请将其删除:
apt-get remove resolvconf
现在,备份/etc/resolv.conf
文件:
cp /etc/resolv.conf /etc/resolv.conf.backup
然后删除/etc/resolv.conf
文件(重要的是,因为这可能是一个悬挂的链接,而不是实际的文件):
rm -f /etc/resolv.conf
并创建一个/etc/resolv.conf
具有以下内容的新文件:
nameserver 127.0.0.1
options edns0
让我们通过使用dnscrypt-proxy发送第一个查询来检查一切是否正常:
./dnscrypt-proxy -resolve example.com
看起来成功解决了example.com
吗?甜!尝试其他一些操作:Web浏览,文件下载,正常使用系统并查看是否仍然可以连接而没有任何与DNS相关的问题。
如果发生任何错误,并且您想要还原所有内容:
- 如果已卸载
resolvconf
,请使用apt-get install resolv.conf
- 恢复
/etc/resolv.conf
备份:cp /etc/resolv.conf.backup /etc/resolv.conf
- 如果即使重新启动后您仍然无法解决任何问题,请将其放在
/etc/resolv.conf
:nameserver 1.0.0.1
步骤5:调整配置文件
打Control
和C
在dnscrypt-proxy
终端窗口阻止它。
此时,您仍必须位于dnscrypt-proxy
目录中。
该dnscrypt-proxy.toml
文件具有许多可以调整的选项。如果愿意,请调整它们。但是,一个接一个地调整它们,这样,一旦您搞砸了,您就会知道发生了什么确切的变化。
该消息bare keys cannot contain 'n'
通常表示配置文件中存在语法错误。
键入./dnscrypt-proxy
启动服务器,以及Control
– C
停止它。测试,调整,停止,测试,调整,停止,直到您满意为止。
你满意吗?好,让我们跳到步骤6!
步骤6:将代理安装为系统服务
打Control
和C
在dnscrypt-proxy
终端窗口停止代理。
现在,将其注册为系统服务(仍然具有root
特权,并且位于包含配置文件的目录中):
./dnscrypt-proxy -service install
如果它没有吐出任何错误,那就太好了!您的Linux发行版与内置安装程序兼容。
这假定可执行文件和配置文件在同一目录中。如果您不遵循这些建议,那么您将自己修改单元文件。
现在已经安装,可以启动它:
./dnscrypt-proxy -service start
做完了!
如果确实出现错误,则需要执行Linux发行版的步骤。保持镇静,不要喝咖啡,而要去健身房,然后寻求具体说明。
Failed to start DNSCrypt client proxy: "systemctl" failed: exit status 5
表示您尝试start
了服务而没有install
先使用它。
要停止服务吗?
./dnscrypt-proxy -service stop
是否要在更改配置文件后重新启动当前正在运行的服务?
./dnscrypt-proxy -service restart
要卸载该服务吗?
./dnscrypt-proxy -service uninstall
是否想检查DNS解析是否有效?
./dnscrypt-proxy -resolve example.com
是否要完全删除该东西?
删除目录。做完了
以非root用户身份运行
以下命令将必需的属性添加到dnscrypt-proxy
文件,以便它可以以非root用户身份运行:
sudo setcap cap_net_bind_service = + pe dnscrypt-proxy
这可能不适用于某些发行版和文件系统。
如果内容/etc/resolv.conf
不坚持
编辑它,然后在根控制台中键入以下命令以将其锁定:
chattr + i /etc/resolv.conf
解锁:
chattr -i /etc/resolv.conf
如果您只能通过HTTPS访问DNS服务器
运行时dnscrypt-proxy
,可能是仅成功到达HTTPS上的DNS(DoH)服务器,而没有成功到达DNSCrypt服务器的情况。一个症状是,在运行时./dnscrypt-proxy
唯一不超时的服务器是DoH服务器,例如:
...
[NOTICE] [securedns] TIMEOUT
[NOTICE] [securedns-doh] OK (DoH) - rtt: 40ms
...
在这种情况下,请确保不仅dnscrypt-proxy
可以在TCP 443(HTTPS,因此是DoH)上而且可以在UDP 443上连接对等方。如果iptables
在Linux 上使用,则可以添加以下规则
iptables -A输出-p udp --sport 443 -j接受
然后重新启动dnscrypt-proxy
。
升级中
为了安装新版本,只需将可执行文件(dnscrypt-proxy
)替换为新版本,然后重新启动服务。
与systemd结合使用
dnscrypt-proxy
可以从systemd开始。
由于对于经验丰富的Linux用户来说这是一个复杂的主题,因此有一个专用页面:带有systemd的dnscrypt-proxy。
自动更新代理
使代理保持最新状态的最简单方法是使用始终附带最新软件包的操作系统或发行版。
或者,对于Linux,这些说明可能会有所帮助:更新。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!