Linux中的环回适配器名称

假设Linux系统上的环回networking适配器总是被称为“lo”是否安全 – 这只是一个命名约定,可能不被遵守,或者它一直是这种情况?

我不知道任何Linux系统有一个loopback接口除了lo之外的任何东西。 如果我编写一个系统特定的脚本,而不是编写便携式程序时,我会依赖这个命名约定。 例如OSX中的loopback是lo0

C中一个可靠的方法是在套接字上调用SIOCGIFCONF ioctl ,遍历接口,在每个接口上调用SIOCGIFFLAGS ioctl ,并检查哪些接口设置了IFF_LOOPBACK标志(请参阅/usr/include/linux/if.h )。

SIOCGIFCONF也会给你接口名称。

根据我的经验,这是一个普通的名字,虽然你不应该总是相信它是如此。 也许枚举接口,并寻找一个地址为127.0.0.1将是要走的路?

这是一个非常古老的约定,实际上我还没有看到一个Linux盒子/发行版,但并没有把它称为“LO”。

然而,在* nix系统中的设备名称是如此的多样化,可以认为它们会改变。 如果你想要可移植性,使用标准(在这种情况下,127.0.0.1)。

接口可以重命名为任何你想要的 – 但是任何人重命名的回环接口是非常愚蠢的,值得有一个非工作系统:)

是的,你可以枚举接口,并获得他们的名字。 但也许只是假设它将会是“lo”一样容易。

使用127.0.0.1可能是一种失败的方法。

RFC3330定义127.0.0.0/8始终是环回子网。

然而,使用localhost定义在c:\windows\system32\drivers\etc\hosts Windows和/etc/hosts Linux是纯粹的惯例。 此外,名称lo是Linux中localhost 接口的典型名称。

如果您必须绝对确定,请使用127.0.0.1