linux通过resolve配置dns,使用systemd-resolved在Fedora上通过TLS配置DNS的方法
本文将演示如何使用systemd-resolved在Fedora操作系统上通过TLS配置DNS。前言现代计算机用来在Internet上查找资源的域名系统(DNS)是很旧以前设计的,没有考虑用户隐私,它面临安全风险和DNS劫持之类的攻击,它还允许ISP拦截查询。幸运的是,可以使用基于TLS的DNS和DNSSEC。TLS和DNSSEC上的DNS允许创建从计算机到其配置的DNS服务器的安全且加密的端到端
本文将演示如何使用systemd-resolved在Fedora操作系统上通过TLS配置DNS。
前言
现代计算机用来在Internet上查找资源的域名系统(DNS)是很旧以前设计的,没有考虑用户隐私,它面临安全风险和DNS劫持之类的攻击,它还允许ISP拦截查询。
幸运的是,可以使用基于TLS的DNS和DNSSEC。TLS和DNSSEC上的DNS允许创建从计算机到其配置的DNS服务器的安全且加密的端到端隧道,在Fedora操作系统上,实现这些技术的步骤很容易,并且所有必要的工具也很容易获得。
步骤1:设置systemd-resolved
修改/etc/systemd/resolved.conf,使其类似于以下所示,确保启用基于TLS的DNS并配置要使用的DNS服务器的IP地址:
$ cat /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 9.9.9.9
DNSOverTLS=yes
DNSSEC=yes
FallbackDNS=8.8.8.8 1.0.0.1 8.8.4.4
#Domains=~.
#LLMNR=yes
#MulticastDNS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
关于选项的简要说明:
DNS:以空格分隔的IPv4和IPv6地址列表,用作系统DNS服务器。
FallbackDNS:用作后退DNS服务器的IPv4和IPv6地址的空格分隔列表。
Domains:解析单标签主机名~时,这些域用作搜索后缀,代表使用DNS= 定义的系统DNS服务器,最好用于所有域。
DNSOverTLS:如果为true,则将加密与服务器的所有连接。请注意,此模式要求DNS服务器支持TLS上的DNS,并具有其IP的有效证书。
注意:上面示例中列出的DNS服务器是我个人的选择,您应该确定要使用的DNS服务器。
步骤2:使NetworkManager将信息推送到systemd-resolved
在/etc/NetworkManager/conf.d中创建一个名为10-dns-systemd-resolved.conf的文件:
$ cat /etc/NetworkManager/conf.d/10-dns-systemd-resolved.conf
[main]
dns=systemd-resolved
上面显示的设置(dns=systemd-resolved)使NetworkManager将从DHCP获得的DNS信息推送到systemd-resolved服务,这将覆盖在步骤1中配置的DNS设置,这在受信任的网络上很好,但是可以设置dns=none来使用/etc/systemd/resolved.conf中配置的DNS服务器。
第三步:启动和重启服务
要使前面步骤中配置的设置生效,请启动并启用systemd-resolved,然后重新启动NetworkManager。
注意:重新启动NetworkManager时,这将导致失去连接几秒钟:
$ sudo systemctl start systemd-resolved
$ sudo systemctl enable systemd-resolved
$ sudo systemctl restart NetworkManager
注意:当前,默认情况下禁用systemd解析的服务,并且该服务的使用是可选的,不过在Fedora 33中有计划默认启用systemd-resolved。
步骤4:检查一切是否正常
现在,您应该使用基于TLS的DNS,通过使用以下方法检查DNS解析状态来确认这一点:
$ resolvectl status
如下图所示:
/etc/resolv.conf应指向127.0.0.53:
$ cat /etc/resolv.conf
# Generated by NetworkManager
search lan
nameserver 127.0.0.53
要查看systemd-resolved正在发送和接收安全查询的地址和端口,请运行:
$ sudo ss -lntp | grep '\(State\|:53 \)'
要进行安全查询,请运行:
$ resolvectl query fedoraproject.org
步骤5:使用Wireshark验证配置
首先,安装并运行Wireshark:
$ sudo dnf install wireshark
$ sudo wireshark
它将询问您必须在哪个链接设备上开始捕获数据包,就我而言,因为我使用无线接口,所以我将继续使用wlp58s0,在Wireshark中设置一个过滤器,例如tcp.port == 853(853是TLS协议端口上的DNS),您需要先刷新本地DNS缓存,然后才能捕获DNS查询:
$ sudo resolvectl flush-caches
现在运行:
$ nslookup fedoramagazine.org
您应该在计算机和配置的DNS服务器之间看到经过TLS加密的交换,如下图:
相关主题
更多推荐
所有评论(0)