首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ip a输出的inet/inet 6行

ip a输出的inet/inet 6行
EN

Unix & Linux用户
提问于 2022-01-11 15:38:09
回答 2查看 788关注 0票数 0

我试图理解ip a命令的输出。

例如,我们可以从它获得这个输出:

代码语言:javascript
复制
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
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 
     link/ether 00:15:5d:4c:26:18 brd ff:ff:ff:ff:ff:ff 
     inet 172.21.254.173/20 brd 172.21.255.255 scope global eth0 
         valid_lft forever preferred_lft forever 
     inet6 fe80::215:5dff:fe4c:2618/64 scope link 
        valid_lft forever preferred_lft forever

我想了解的是关于互联网和inet6的信息。

我研究过它们是IPv4和IPv6的信息,然后它说IP地址(和广播地址)和范围。

但是在范围信息之后我找不到内容的文档。例如,loinet 127.0.0.1/8 scope host之后。

我已经看到它可能有像dynamic这样的附加信息。

有人知道关于他们的文件吗?

(此外,我不知道为什么inet6的末尾写的是接口名,而inet6行则不是)

谢谢!

EN

回答 2

Unix & Linux用户

发布于 2022-01-11 15:49:56

man ip将为您提供一个关于ip命令的标题文档。最后,它给出了交叉引用(“也请参阅”),例如ip-address,以了解更多关于ip address命令的信息。

如果您使用man ip-address查看该文档,您将发现对该范围的引用,如以下所示:

IFADDR :=前缀IFADDR对等前缀广播ADDR 标签标签作用域-ID := 主机链接全域电话号码

在同一手册页下进一步搜索将定义SCOPE,如下所示

scope SCOPE_VALUE此地址有效的区域的范围。可用的作用域列在文件/etc/iproute2/rt_scopes中。预定义的范围值是:

  • global -地址是全局有效的。
  • site -(仅限IPv6,不推荐)该地址是站点本地的,即该地址在此站点内有效。
  • link -地址是本地链接,也就是说它只在这个设备上有效。
  • host -该地址仅在此主机内有效。

您问题的第二部分由link类型地址的定义来回答。

票数 2
EN

Unix & Linux用户

发布于 2022-01-15 16:45:01

我将试图回答你所提问题的一部分,即:

“我不知道为什么inet6的末尾写的是接口名,而inet6行却没有”

由于历史原因,inet (或ipv4)似乎列出了接口名称。这似乎与“别名”接口有关,当您希望一个接口上有多个地址时,就会使用别名接口。Linux现在可以在一个没有别名的单一接口上支持多个IP地址,但在过去并非如此。为了实现向后兼容性,接口别名仍然存在。

inet6 (或ipv6)不使用该(别名)信息。或者更准确地说,当查询接口IFA_LABEL地址信息时,接口不报告接口名称( inet6 )。

请注意,我使用与您的问题相关的标记来假设您使用的是来自Ubuntu发行版的Linux。命令ip address show (或您所说的ip a )来自iproute2包。该命令通过netlink特性从Linux内核获取网络接口和网络地址信息。

使用命令man 7 rtnetlink (或ref https://man7.org/linux/man-pages/man7/rtnetlink.7.html)将提供一些有关netlink接口的信息,以及IFA_LABEL适合的位置。

“理解Linux内部”一书对ifa_label做了如下介绍:“一个字符串主要用于向后兼容2.0.x内核,该内核允许别名接口,名称为eth0:1”。

下面的链接(https://www.kernel.org/doc/html/latest/networking/alias.html)还描述了Linux混叠特性具有历史意义,但为了向后兼容仍然存在。

如果您想更深入地了解细节(这可能更适合于StackOverflow而不是UnixLinux),您可以从"ip地址显示“(iproute2)的源代码中查找文件ip/ipaddress.c中有"if (rta_tbIFA_标签)”的行。您将看到,如果命令从内核接收到IFA_LABEL信息,那么它将将其打印为命令的输出。

正如其他人所指出的,ip和ip地址的手册页可以提供其他一些值的附加信息,这些信息可以在inet和inet6后面的输出中看到。

这是我对此如何工作的理解,其他人可能有更多/更好的信息。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/685922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档