为什么有些虚拟网络接口分配了私有IP地址,而有些则分配了环回IP地址?

为什么有些虚拟网络接口分配了私有IP地址,而有些则分配了环回IP地址?

docker0lovirbr0是虚拟网络接口吗?

为什么分配的是docker0私有virbr0IP地址而不是环回IP地址?

如果私有IP地址可以像环回地址一样工作,是否可以lo分配一个私有IP地址而不是环回IP地址?

环回地址是127.*.*.*.它们是否总是形成一个网络,而不是像示例中那样分成几个较小的网络?

192.168.*.*是私有IP地址的范围。它们是否经常分成几个较小的网络,如示例(wlx8virbr0)中所示?

谢谢。

$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:a6:79:a6:bc  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1552397  bytes 88437726 (88.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1552397  bytes 88437726 (88.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:b1:aa:1f  txqueuelen 1000  (Ethernet)
        RX packets 123  bytes 12102 (12.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 39  bytes 4300 (4.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlx8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.97  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::a0df:c436:afb1:8b45  prefixlen 64  scopeid 0x20<link>
        ether   txqueuelen 1000  (Ethernet)
        RX packets 991338  bytes 536052615 (536.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 618233  bytes 101520924 (101.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

答案1

“网络”(无需路由器即可到达的一组端点)的构成由此处的网络掩码决定。因此docker0位于 172.17.xx 网络上(并且可以与同一第 2 层网络中的任何 172.17.xx 端点通信)、lo位于 127.xxx 网络上、virbr0位于 192.168.122.x 网络上(并且可以与任何 192.168 .122.x 端点位于同一第 2 层网络中),并且wlx8位于 192.168.1.x 网络上(我会让您填写),并且它们都是独立的。环回网络的特殊之处在于,默认情况下,所有127.xxx地址都对应于本地主机。

docker0lovirbr0是虚拟网络接口吗?

是的,它们与物理网络接口不对应。

为什么分配的是docker0私有virbr0IP地址而不是环回IP地址?

因为它们不是环回接口。此类接口通常用于与容器或虚拟机进行通信,这些容器或虚拟机与本地主机是分开的(从网络角度来看,这正是我们这里关注的问题)。

如果私有IP地址可以像环回地址一样工作,是否可以lo分配一个私有IP地址而不是环回IP地址?

不,私有 IP 地址不像环回地址那样工作。 (它们可以按照您想要的任何方式工作,但这适用于网络专家和设计 Istio 等系统的人员,Envoy 使用有趣的环回技巧来进行多集群设置。)

环回地址是127.*.*.*.它们是否总是形成一个网络,而不是像示例中那样分成几个较小的网络?

请看我的第一点。

192.168.*.*是私有IP地址的范围。它们是否经常分成几个较小的网络,如示例(wlx8virbr0)中所示?

是的;再次,请参阅我的第一点。

答案2

docker0lovirbr0是虚拟网络接口吗?

是的。

它们并不都是同一类型。这意味着它们不是由硬件设备提供的。虚拟设备列在 中/sys/devices/virtual/。在子目录中查找net/

如果私有IP地址可以像环回地址一样工作,

我不知道你的意思

可以lo分配一个专用IP地址而不是环回IP地址吗?

是的。对我来说效果很好,你自己尝试一下。 ip addr add <ADDR> dev lo

环回地址是127.*.*.*.它们是否总是形成一个网络,而不是像示例中那样分成几个较小的网络?

我真的不知道。但我对任何依赖 split 的软件持怀疑态度127.*.*.*。在 IPv6 中,您只能获得一个环回地址::1。因为作者没有找到任何拥有整个环回网络的充分理由(更不用说 2^24 个这样的地址了)。所以,很明显它没有被太多使用。

192.168.*.*是私有IP地址的范围。它们是否经常分成几个较小的网络,如示例(wlx8virbr0)中所示?

分割192.168.*.*子网绝对是最常见的使用方式。您的家庭路由器几乎肯定会默认使用192.168.0.*或。192.168.1.*当您想要配置多个子网时,这会有所帮助 - 例如用于访客 Wi-Fi 访问的第二个网络,该网络与主网络隔离。

为什么分配的是docker0私有virbr0IP地址而不是环回IP地址?

为什么他们不会呢?

更具体地说,IPv4 标准可以合理地解释为要求所有环回地址都表现为环回。这意味着使用它们(例如在 docker 容器和 docker 主机之间进行通信)是不合法的。因为它们将不再用作环回地址。

也许标准要求还有其他含义。也就是说,如果你不让它们接触物理网络,那么使用它们构建更复杂的虚拟网络可能是合法的。标准并未明确这一点。在支持环回网络的地方,它通常以与 Linux 相同的方式解释。所以人们已经习惯了这种实现,并且会因为看到不同的东西而感到困惑。

相关内容