Linux中的Loopback适配器名称

5

可以认为在Linux系统上,环回网络适配器总是被称为“lo”吗?这只是一种可能不被遵循的命名约定,还是必须始终如此?


这是大多数Linux发行版遵循的命名约定。一些人称其为lo0,尤其是MacOS。 - rkuris
6个回答

11

我不知道任何一种Linux系统使用的环回接口名称不是lo。如果我编写一个针对特定系统的脚本,我会依赖这个命名约定,但是当编写可移植程序时就不会了。例如,在OSX中,环回接口的名称是lo0

在C语言中,一种可靠的方法是通过套接字调用SIOCGIFCONFioctl,迭代每个接口,并调用SIOCGIFFLAGSioctl检查哪些接口设置了IFF_LOOPBACK标志(请参见/usr/include/linux/if.h)。

SIOCGIFCONF还会给您提供接口名称。


1
这似乎有一个优点,即不需要在系统上配置任何IPv4(“127.0.0.1”)地址。 - ndim

1
在我的经验中,这是一个常见的名称,尽管您不应总是相信它是这样的。也许枚举接口并查找地址为127.0.0.1的接口是一个好方法?

1
127.0.0.1 是几个可能的环回地址之一。假设这是唯一的一个是常见错误。任何看起来像 127.x.x.x 的地址也是环回地址。 - rkuris

1

这其实是一个相当古老的惯例,事实上我还没有见过一个Linux系统/发行版不叫它“lo”的。

然而,在*nix系统中设备名称如此多样化,可以假定它们会发生变化。如果想要可移植性,请使用标准(在本例中为127.0.0.1)。


1

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

是的,你可以枚举接口并获取它们的名称。但也许假设它将是“lo”同样容易。


-1

使用 127.0.0.1 可能是一种保险的做法。


-2

RFC3330 定义 127.0.0.0/8 作为回环子网。

然而,在 Windows 中定义为 c:\windows\system32\drivers\etc\hosts,在 Linux 中定义为 /etc/hostslocalhost 的使用纯粹是惯例。此外,在 Linux 中,lo 是通常赋予本地主机 接口 的名称。

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


2
RFC3330将127.0.0.0/8定义为环回地址子网。它只是说127.0.0.1通常用作环回地址。如果需要,可以使用127.0.1.1作为环回地址。如果您没有阅读您提供的RFC并给出错误的建议,则会被扣-1分。 - camh
lo不等同于127.0.0.1。这只是IPv4地址中的一个。更糟糕的是,这并不能涵盖所有其他环回地址——从127.0.0.2到127.255.255.255,它们都是环回地址。 - rkuris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接