我用最新的(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
.
进一步阅读
- 埃里克·奥尔德施泰特·桑德 (2006-03-28)。ifconfig:报告错误的 IP 地址。 Debian 错误 #359676。
- 爱德华多·费罗 (2009-04-16)。ifconfig:报告错误的 IP 地址/初始补丁。 Debian 错误 #359676。
- https://unix.stackexchange.com/a/504084/5132