Fer*_*ont 12 networking dns systemd-resolved
我试图通过systemd-resolved. 我改变/etc/systemd/resolved.conf如下:
[Resolve]
DNS=1.1.1.1
#FallbackDNS=
Domains=~.
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
DNSOverTLS=opportunistic
#Cache=yes
#DNSStubListener=yes
Run Code Online (Sandbox Code Playgroud)
在监视网络(使用 tcpdump)以查看结果行为是否符合预期时,似乎与目标服务器建立了 TLS 会话;但是,然后服务器关闭连接。我在 1.1.1.1、8.8.8.8 和其他版本中得到了相同的结果。
有想法该怎么解决这个吗?
PS:systemd-resolved最终与传统 DNS 进行并行解析(尽管上面设置了“域”)。但我对这篇文章的主要问题是 TLS 可能出了什么问题。
最近我为家庭网络实现了基于 TLS 的 DNS(使用AsusWRT-Merlin有源路由器)。在探索为家庭网络之外的 Linux 工作站和服务器(在云中 - 我的意思是其他人的计算机哈哈)实施 DoT 的方法时,我发现systemd-resolved这是 DNS 隐私项目的建议。
虽然@opinion-no9提供了 Ubuntu 18.04 特定的解决方案(受 LTS 附带的 systemd 版本限制),但我想分享一个更通用且更接近上游的解决方案:
systemded25519密钥和签名)systemd-resolved现在默认支持opportunisticDNS-over-TLSOffsystemd-resolved获得了对新的strictDNS-over-TLS 模式的支持不好了!Ubuntu 18.04 LTS 提供 systemd 237 ...
更新 - 2020 年 4 月 23 日Ubuntu 20.04 LTS,附带 systemd 245(不带systemd-homed;-)。
因此,对于具有相对接近上游内核、systemd、glibc、工具链、GNU utils 等的通用 Linux 发行版
/etc/systemd/resolved.conf[Resolve]
DNS=1.1.1.1 1.0.0.1 8.8.8.8
#FallbackDNS=1.1.1.1 9.9.9.10 8.8.8.8 2606:4700:4700::1111 2620:fe::10 2001:4860:4860::8888
#Domains=
#LLMNR=yes
#MulticastDNS=yes
#DNSSEC=allow-downgrade
#DNSOverTLS=opportunistic
DNSSEC=yes
DNSOverTLS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
Run Code Online (Sandbox Code Playgroud)
Ubuntu 20.04 特定 resolved.conf
[Resolve]
DNS=1.1.1.1 1.0.0.1 8.8.8.8
FallbackDNS=1.1.1.1 8.8.8.10 8.8.8.8
#Domains=
#LLMNR=no
#MulticastDNS=no
DNSSEC=yes
DNSOverTLS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
Run Code Online (Sandbox Code Playgroud)
systemd-resolved已启用,重启服务systemctl restart systemd-resolved.service
Run Code Online (Sandbox Code Playgroud)
systemd-resolved在本地环回接口上的 IP 地址 127.0.0.53 上提供本地 DNS 存根侦听器,因此要使用 DNS over TLS 存根解析器,我们需要以某种方式管理/etc/resolv.conf并确保127.0.0.53用作名称服务器。
注意:systemd 保持
/run/systemd/resolve/stub-resolv.conf与传统 Linux 程序的兼容性。我们可以简单地符号链接到这个文件;-)
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
注意:对于 Arch Linux,我必须替换openresolvconf为systemd-resolvconf.
完毕。
生成 DNS 查询,然后通过端口 853 检查与指定上游 DNS 服务器的 TCP 连接,在以下示例中,我们明确使用了 Cloudflare 的1.1.1.1.
root@netbook:/etc# uname -a
Linux netbook 5.4.5-arch1-1 #1 SMP PREEMPT Wed, 18 Dec 2019 19:48:51 +0000 x86_64 GNU/Linux
root@netbook:~# kdig -d github.com
;; DEBUG: Querying for owner(github.com.), class(1), type(1), server(127.0.0.53), port(53), protocol(UDP)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 55366
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 0
;; QUESTION SECTION:
;; github.com. IN A
;; ANSWER SECTION:
github.com. 58 IN A 13.236.229.21
;; Received 44 B
;; Time 2019-12-21 22:55:13 AEDT
;; From 127.0.0.53@53(UDP) in 58.0 ms
root@netbook:~# ss -tuna | grep :853
tcp ESTAB 0 0 192.168.1.150:50504 1.1.1.1:853
tcp ESTAB 0 0 192.168.1.150:50506 1.1.1.1:853
Run Code Online (Sandbox Code Playgroud)
或者,如果您想简单粗暴,请使用tcpdump;-)
tcpdump -tttt -nn -XX -vv -i <interface> dst 1.1.1.1 and port 853
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点:这是在 Linux 主机上启用 DNS over TLS 的通用指南,它并不特定于发行版或桌面环境(因为我们甚至没有接触过 NetworkManager 或替代品 ;-)。可能需要针对不同的发行版和不同的 DE/WM 进行调整。
根据我的经验,它不会在 Ubuntu 18.04+(即 U19、U20、U21)上以上述方式工作。
由于 Ubuntu 18+ 将Netplan与 NetworkManager 并行使用,事情发生了巨大变化:
不再以传统方式进行手动配置;-( 文档.... 稀疏。
snap 可能会带来进一步的变化。它建立额外的resolved.conf 文件。但是,以下实际上有效(/w 性能良好)。
有关 Netplan 的信息,请查看此处。
什么 DNS-over-TLS 工作成功(works4me):
在/etc/systemd/resolved.conf 中, 仅将 DNSOverTLS 设置更改为
DNSOverTLS=机会主义
没有其他选项(请参阅此处的说明:DNS over TLS
使用功能强大的 DNS 服务器。我更喜欢Digitalcourage服务器
46.182.19.48分别 2a02:2970:1002::18
为什么?隐私!
这应该通过 GUI在网络管理器中完成!
分别在 IPv4 设置/DNS 服务器和 v6 下的 GUI 字段中为您的连接输入 DNS 服务器地址。
条目不会出现在/etc/resolv.conf!! 哪个是正确的。相反,您将看到名称服务器 127.0.0.53
这是新的 Ubuntu .... 不再适合业余管理员。
不推荐但可能的替代方案
可以直接以/etc/resolv.conf通常的格式设置适当的 DNS 服务器,删除 127.0.0.53 或其他内容。
问题:在 Ubuntu 中被网络管理器覆盖!
补救措施:作为真正的 root (!) chattr文件 /etc/resolv.conf
chattr +i /etc/resolv.conf
这是蛮力,可能会通过已解析禁用自动 DNS 缓存。
归功于Arch 文档
但是,工作正常 ;-) 但需要以真正的 root 身份手动维护!
提示:
建议你做resolv.conf一个链接。这是解决正常工作所必需的。当 sudo-root 移走旧文件时
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
我不喜欢这种方式,但本质上工作正常。
.
然后重启。或者重启网络。
.
如何检查
检查systemd-resolved实际使用的DNS:
resolvectl status
Run Code Online (Sandbox Code Playgroud)
检查 DNS 是否使用 resolvectl 解析:
resolvectl query archlinux.org
Run Code Online (Sandbox Code Playgroud)
(尝试一些例子)
检查实际使用的 DNS,检查 VPN 中的泄漏:
. 2. 启动 Wireshark 并过滤“端口 53”并进行网络流量。
这不应再显示端口 53 上的连接。然后过滤端口 853。这里应该有很多内容。
重要提示:如果所有流量都使用端口 853 而没有流量使用 53,那么您就成功了!
Wireshark 示例在这里。
备注:我试过stubby。stubby 不能很好地集成到 Ubuntu 中,但即使使用 NetworkManager,您也可以使用它。有一本手册可以成功地做到这一点: 如何在 Ubuntu Linux 上使用 DNS-over-TLS 问题:性能有点麻烦。事情很奇怪,我没有找出原因。
现在应该可以在 /etc/systemd/resolved.conf 中启用 DNSSEC=yes。
重要的:
该解决方案大大改善了隐私。
但如果您的个人诚信取决于数据隐私和安全,这还不够!!请参阅解析说明中的注意事项。有机会主义模式是不够的。那么最好注意 Tails Linux。向全世界所有政治犯致以悲伤的问候。
此更新版本可用 - 仅限德语 - 通过 TOR 网址:http : //mutant21.onastroidst6krpn.onion/schweinekraftland/DNS_sicherer_machen/sicherer%20surfen%20und%20mailen%20mit%20gesichertem%20DNS.htm
| 归档时间: |
|
| 查看次数: |
12106 次 |
| 最近记录: |