背景
尝试在我购买的一台小型 Optiplex 机器上配置无头 plex 服务器。一切都很顺利,直到我尝试认领我的 plex 服务器,结果发现服务器上存在 DNS 问题。我正在运行 Ubuntu 22.04.3
首先,我应该提到我有一个 PiHole,但路由器设置不会强制所有客户端流量到 PiHole 的 DNS 服务器(在运行 Merlin 的 ASUS 路由器中,“DNS Director”已禁用)。我已成功通过本地手动设置 DNS 绕过了我伴侣笔记本电脑上的 PiHole,多年来一直效果很好。我假设 Ubuntu 服务器上的 DNS 设置也可以绕过 PiHole,我可以暂时禁用 PiHole 来检查这一点。
在尝试启用静态 IP 的某个时候,我安装了 NetworkManager,虽然我知道这不是无头机器上的标准做法,但现在尝试禁用它可能会更危险。
问题
据我所知,DNS 无法正常工作。我可以 ping 一个 IP 地址
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=11.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=12.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=8.91 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=58 time=13.1 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=58 time=11.6 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=58 time=11.5 ms
^C
--- 8.8.8.8 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5008ms
rtt min/avg/max/mdev = 8.911/11.358/13.082/1.262 ms
但我无法 ping 通 URL
ping: https://www.plex.tv/: Name or service not known
或者
ping: https://www.google.com: Name or service not known
我尝试过的方法
我删除了,还删除了和/etc/resolv.conf
之间的符号链接。我进行了编辑以强制 NetworkManager 重新创建。以下是:/etc/resolv.conf
/run/resolvconf/resolv.conf
NetworkManager.conf
resolv.conf
NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=default
rc-manager=symlink
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
这是全新的resolv.conf
,它/etc
不再有符号链接:
# Generated by NetworkManager
nameserver 192.168.1.199
nameserver 1.1.1.1
nameserver 8.8.8.8
这是我的 netplan,我已经使用netplan try
和netplan apply
(当root
)重建了
network:
renderer: NetworkManager
ethernets:
enp0s31f6:
dhcp4: true
version: 2
其他(有用的?)信息
以下是输出nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet connected static-ip
lo loopback unmanaged --
以及输出sudo ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 18:66:da:43:cb:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.111/24 brd 192.168.1.255 scope global noprefixroute enp0s31f6
valid_lft forever preferred_lft forever
inet6 fe80::5159:dbb8:4452:adaa/64 scope link noprefixroute
valid_lft forever preferred_lft forever
使用 DiG 进行测试:
; <<>> DiG 9.18.12-0ubuntu0.22.04.2-Ubuntu <<>> @8.8.8.8 www.ubuntu.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48879
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.ubuntu.com. IN A
;; ANSWER SECTION:
www.ubuntu.com. 14 IN A 185.125.190.20
www.ubuntu.com. 14 IN A 185.125.190.21
www.ubuntu.com. 14 IN A 185.125.190.29
;; Query time: 8 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Wed Aug 23 14:30:08 UTC 2023
;; MSG SIZE rcvd: 91
下一步?
我接下来要研究的是,我是否应该在.yaml
以太网接口的配置中添加另一个配置,因为现在配置的只是静态 IP 接口。使用以下命令检查配置nmtui
显示以太网接口enp0s31f6
刚刚自动配置:
如果您完成了所有这些,谢谢!过去几天,我搜索了很多帖子,了解了很多有关 Linux 网络配置如何工作的信息,但几个小时后,我似乎陷入了困境。在我意外损坏某些东西之前,任何帮助都将不胜感激 :)
答案1
使用哪个命令来 ping DNS 名称?
你必须这样做:
$ ping google.com
PING google.com (142.250.74.78) 56(84) bytes of data.
64 bytes from arn09s23-in-f14.1e100.net (142.250.74.78): icmp_seq=1 ttl=58 time=15.3 ms
64 bytes from arn09s23-in-f14.1e100.net (142.250.74.78): icmp_seq=2 ttl=58 time=14.3 ms
64 bytes from arn09s23-in-f14.1e100.net (142.250.74.78): icmp_seq=3 ttl=58 time=16.5 ms
64 bytes from arn09s23-in-f14.1e100.net (142.250.74.78): icmp_seq=4 ttl=58 time=14.3 ms
而这会产生错误:
$ ping https://www.google.com
ping: https://www.google.com: Name or service not known
您无法 ping http/https URL,因为 ping 对 http/https 协议一无所知。
因此,根据您在问题中提出的内容,我认为您根本没有 DNS 问题。