进一步阅读

进一步阅读

我用最新的(2015.06)Gentoo linux 最小 CD 启动了相当旧的 PC(HP d530)。我想要执行的下一步是在这台计算机上启用 SSH 服务器。

我跑去ifconfig看我机器的IP地址。对于接口 enp5s2(仅适用于“lo”除外),IP 地址为 169.254.xxx.xxx

我启动了 dhcp 客户端从路由器获取 IP 地址。它成功退出,ping 开始工作,但仍然ifconfig是相同的旧 IP 地址。

我的路由器分配了 192.168.0.xxx,可以通过该地址访问 PC,但我无法在ifconfig.

dmesg 中没有任何异常。

为什么ifconfig显示假IP地址?

答案1

好的,我找到了解决方案。

这是由于 dhcp 分配 ipv6 地址失败而创建的 ipv4ll 地址。

正确的 ipv4 地址可见于ip a

添加后

noipv6
noipv4ll

到 dhcpcd.conf 一切都很好。

答案2

长期以来,这一直是 GNU inetutilsifconfig和 NET-3 网络工具的已知缺陷。ifconfig如果您的接口有多个 IP 版本 4 地址(如果同时具有 DHCP 分配的地址和链路本地地址),则这两个ifconfigs地址将仅向您显示其中一个地址,在本例中为链路本地地址。此外, GNU inetutilsifconfig根本不会向您显示该接口的任何 IP 版本 6 地址。

这些工具十多年来都没有解决这个问题。人们确实为此制作了补丁,其中包括 2009 年针对 NET-3 网络工具的补丁。四年后,它传到了 Bernd Eckenfels 那里,谁从未接受过

除了 192.168.0.0/16 中的“可路由”地址之外,在 169.254.0.0/16 中拥有第二个链路本地 IP 版本 4 地址对于您的网络接口本身来说实际上并不是问题,而且您可以让你的系统以这种方式配置,(正如你所观察到的)几乎没有任何不良影响,只要不超过一个网络接口执行此操作。除了让您感到惊讶之外,您的系统该地址,并且它有一个伴随路由,并且在尝试连接时会将本地套接字绑定到该地址其他链接本地地址,确实如此仅有的一个重大问题这两个ifconfig工具

正如您所注意到的,ip将显示所有 IPv4 地址。

我的ifconfig.

进一步阅读

相关内容