localhost 已获取第二个 IP 地址?

localhost 已获取第二个 IP 地址?

今天出现了一个奇怪的问题。安装更新并重新启动我的 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 恢复配置(使用与保存时相同的密码)。

相关内容