今天出现了一个奇怪的问题。安装更新并重新启动我的 archlinux 系统后,我发现 postfix 尚未重新启动。它报告了一个错误:
postfix: fatal: parameter inet_interfaces: no local interface found for 192.168.178.61
经过一番调查后,发现错误的原因是我的 DNS 服务器(AVM fritz!box 路由器)似乎为 localhost 返回了两个地址:
[root@rubicon postfix]# nslookup
> server 192.168.178.1
Default server: 192.168.178.1
Address: 192.168.178.1#53
> fritz.box.
Server: 192.168.178.1
Address: 192.168.178.1#53
Name: fritz.box
Address: 192.168.178.1
>
> 192.168.178.1
1.178.168.192.in-addr.arpa name = fritz.box.
>
> localhost.
Server: 192.168.178.1
Address: 192.168.178.1#53
Name: localhost
Address: 192.168.178.61
Name: localhost
Address: 127.0.0.1
我在 Windows 客户端上的 nslookup 中看到了相同的结果。
有谁知道是什么原因造成的,或者如何进一步调试这个问题?我假设 fritz!box 本身不会创建第二个地址,但也许是网络上另一个系统的某些动态 DNS 操作/注册导致了它……但是谁,为什么呢?
有什么建议吗?我的理论合理吗?
它似乎不是主要的 archlinux 系统,journalctl 向我展示了来自 dhcpd 的这些日志条目:
...
Dec 14 18:38:15 rubicon dhcpcd[466]: enp2s0: IAID 18:30:bc:a4
Dec 14 18:38:15 rubicon dhcpcd[466]: enp2s0: adding address fe80::661c:3ea0:2501:46ad
Dec 14 18:38:16 rubicon dhcpcd[466]: enp2s0: soliciting an IPv6 router
Dec 14 18:38:16 rubicon dhcpcd[466]: enp2s0: rebinding lease of 192.168.178.54
Dec 14 18:38:16 rubicon dhcpcd[466]: enp2s0: probing address 192.168.178.54/24
Dec 14 18:38:21 rubicon dhcpcd[466]: enp2s0: leased 192.168.178.54 for 864000 seconds
Dec 14 18:38:21 rubicon dhcpcd[466]: enp2s0: adding route to 192.168.178.0/24
Dec 14 18:38:21 rubicon dhcpcd[466]: enp2s0: adding default route via 192.168.178.1
Dec 14 18:38:21 rubicon dhcpcd[466]: forked to background, child pid 557
Dec 14 18:38:30 rubicon dhcpcd[557]: enp2s0: no IPv6 Routers available
...
这一切看起来很正常(对我来说) - 没有提到.61 地址。
路由器是 fritz!box 7390,运行版本 6.83。Linux 系统刚刚更新到 4.14.5-1-ARCH。网络上还运行着各种其他系统,例如 Windows、BSD 和 Android。
目前似乎没有使用 .61 地址的主机,例如 ping 失败。Linux arp 缓存如下所示:
$ ip neighbour show
192.168.178.1 dev enp2s0 lladdr 08:96:d7:78:53:6a REACHABLE
192.168.178.61 dev enp2s0 FAILED
192.168.178.250 dev enp2s0 lladdr fc:f5:28:ed:05:e5 STALE
(仅供参考:Postfix 不正常的原因是我将配置选项“inet_interfaces”设置为“localhost”。Postfix 查找了这个名称并返回了一个 IP 地址,但不是在本地系统上配置的 IP 地址。)
编辑:来自 archlinux 系统的一些附加信息:
[root@rubicon etc]# ip addr sh
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: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:26:18:30:bc:a4 brd ff:ff:ff:ff:ff:ff
inet 192.168.178.54/24 brd 192.168.178.255 scope global enp2s0
valid_lft forever preferred_lft forever
inet6 fe80::661c:3ea0:2501:46ad/64 scope link
valid_lft forever preferred_lft forever
[root@rubicon etc]# ls -ltr /etc/hosts* /etc/resolv.conf* /etc/nsswitch.conf*
-rw-r--r-- 1 root root 234 Feb 15 2015 /etc/nsswitch.conf_dist
-rw-r--r-- 1 root root 766 Apr 11 2017 /etc/nsswitch.conf
-rw-r--r-- 1 root root 65 Oct 17 09:32 /etc/resolv.conf.pacnew
-rw-r--r-- 1 root root 334 Oct 17 09:32 /etc/nsswitch.conf.pacnew
-rw-r--r-- 1 root root 65 Oct 17 09:32 /etc/hosts
-rw-r--r-- 1 root root 68 Dec 14 10:20 /etc/resolv.conf
无论出于什么原因,hosts 文件是空的(仅包含注释),我不认为我曾经有必要编辑它:
[root@rubicon etc]# cat hosts
# Static table lookup for hostnames.
# See hosts(5) for details.
resolv.conf 包含:
# Generated by resolvconf
domain fritz.box
nameserver 192.168.178.1
如您所见,有一个新的 nsswitch.conf.pacnew,显然是来自 10 月份的软件包升级。它与现有的 nsswitch.conf 只有一点点不同,但我已将其替换为原始版本。以前我有:
hosts: files dns myhostname
我现在有:
hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
答案1
我没有“权威参考”,但到目前为止我只看到/etc/hosts
包含本地主机条目的系统。
原因是,即使网络中断,本地应用程序(可能需要localhost
查找)仍可运行。此外,故障的 DNS 服务器可能会劫持原本只应在本地运行的应用程序。
因此:插入类似
127.0.0.1 localhost
在您的/etc/hosts
文件中。
接下来,检查浏览器中是否打开了 Fritzbox GUI。查看WLAN
-> Funknetz
,列出Bekannte Geräte
。是否有名为 的设备localhost
?如果有,请单击铅笔 ( Bearbeiten
),然后更改名称。
如果这不起作用,请保存您的配置(System
-> Sicherung
-> Sichern
),记住密码,编辑您获得的文件,查看landevices
,看看是否有带有 的设备neighbour_name = "localhost"
。如果是,请更改名称,然后从 Fritzbox GUI 恢复配置(使用与保存时相同的密码)。