正在使用多少个 IP 堆栈?

正在使用多少个 IP 堆栈?

使用以下命令输出:

~$ 
~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether f0:ff:ff:f9:f1:06 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether ff:ff:ff:ff:ff:44 brd ff:ff:ff:ff:ff:ff
~$ 
~$ 
~$ 
~$ 
~$ 
~$ ip addr show
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
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether f0:ff:ff:f9:f1:06  brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ff:ff:ff:ff:ff:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.68.103/24 brd 192.168.68.255 scope global dynamic noprefixroute wlp2s0
       valid_lft 5181sec preferred_lft 5181sec
    inet6 fe80::6fff:7fff:7ddd:3ddf/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
~$ 
~$ 
~$ 
~$ 
~$ 
~$ route -nNvee
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface    MSS   Window irtt
0.0.0.0         192.168.68.1    0.0.0.0         UG    600    0        0 wlp2s0   0     0      0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlp2s0   0     0      0
192.168.68.0    0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0   0     0      0
~$ 
~$ 
~$ 

  1. 我可以说有两个 ipv4 堆栈(Linux 网络子系统)正在运行吗?一个用于eno1接口,另一个用于wlp2s0接口...

  2. 我的理解是,每个网络堆栈(ipv4 或 ip6 或其他)都有一个路由表和 eth 接口。是否lo也有 ipv4 堆栈(Linux 网络子系统)?是的,为什么路由表中route -nVee不显示接口?lo

答案1

每个网络命名空间都有一个操作系统网络数据结构实例。您可以将其算作一个“堆栈”。您还可以分别计算不同的网络协议堆栈(例如 IPv4 和 IPv6,甚至是 Linux 仍支持的旧协议堆栈),然后每个网络命名空间都有一个。

网络命名空间中的所有网络接口都属于同一个网络堆栈(如果算上不同的协议,则属于多个网络堆栈)。有各种表,它们要么引用特定接口(路由、防火墙),要么是每个接口(地址分配),但它们仍然属于同一个内核数据结构实例。

环回接口在这方面没有什么不同,尽管它在网络堆栈中扮演着特殊角色(每当涉及从本地地址到本地地址的传输时都会使用它,并且它还提供了一种分配专用本地 IP 地址的方法)。因此每个网络命名空间(以及网络堆栈)都有一个环回接口。

答案2

首先,你运行的命令显示有关关联- 物理接口(这就是您在这里看到 MAC 地址的原因) - 该命令show ip addr可能会更好。

您的示例中可能只运行了 2 个 IP 堆栈 - 1 个 IPv4 堆栈和 1 个 IPv6 堆栈。

一个方便的判断方法是根据iptables所见所闻ip6tables

可以这样说,在单个 IPv4 堆栈上运行的所有内容都可以通过 访问iptables,在单个 IPv6 堆栈上运行的所有内容都可以通过 访问ip6tables,这可能是一个不错的抽象概念。根据您提供的信息,这很可能是正确的。所有这些接口(包括 )lo都由同一堆栈提供服务。

可能唯一能得到多个独立协议栈运行的方法就是使用网络命名空间或虚拟化。

答案3

eno1接口没有 IPv4 地址,但是接口wlp2s0有。

lo接口还有一个 IPv4 地址。

总而言之,有两个 ipv4 堆栈正在运行。

相关内容