是docker0
,lo
并且 virbr0
是虚拟网络接口?
为什么分配私有docker0
而virbr0
不是环回IP地址?
如果私有 IP 地址可以像环回地址一样工作,是否可以lo
分配一个私有 IP 地址而不是环回 IP 地址?
环回地址是127.*.*.*
. 它们是否总是形成一个网络,而不是像示例中那样被分成几个较小的网络?
192.168.*.*
是一系列私有 IP 地址。它们是否经常分成几个较小的网络,如示例 (wlx8
和virbr0
)?
谢谢。
$ 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
什么构成“网络”(一组无需路由器帮助即可到达的端点)由此处的网络掩码决定。因此
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 网络上(我会让你填写),它们都是独立的。loopback 网络的特殊之处在于,默认情况下,所有 127.xxx 地址都对应本地主机。是的,它们不对应于物理网络接口。
因为它们不是环回接口。此类接口通常用于与容器或 VM 通信,这些容器或 VM 与本地主机是分开的(从网络的角度来看,这正是我们所关心的)。
不,私有 IP 地址不像环回地址那样工作。(它们可以以任何你想要的方式工作,但那是为网络专家和设计系统的人设计的,比如带有 Envoy 的 Istio,它为多集群设置使用了一个有趣的环回技巧。)
请参阅我的第一点。
是的; 再次,请参阅我的第一点。
是的。
它们并不都是同一类型。这意味着它们不是由硬件设备提供的。虚拟设备在 中列出
/sys/devices/virtual/
。在net/
子目录中查找。我不知道你的意思
是的。对我来说很好,你自己试试。
ip addr add <ADDR> dev lo
.我真的不知道。但我怀疑任何依赖于拆分的软件
127.*.*.*
。在 IPv6 中,您只能获得一个环回地址::1
。因为作者没有找到任何好的理由来拥有一个完整的环回网络(更不用说 2^24 个这样的地址)。所以,很明显它并没有被太多使用。分割
192.168.*.*
成子网绝对是最常见的使用方式。您的家用路由器几乎可以肯定使用192.168.0.*
或192.168.1.*
默认使用。当您想要配置多个子网时,这会有所帮助 - 例如,用于访客 Wi-Fi 访问的第二个网络,它与您的主网络有防火墙。为什么他们不会呢?
更具体地说,IPv4 标准可以合理地解释为要求所有环回地址都表现为环回。这意味着使用它们是不合法的,例如在 docker 容器和 docker 主机之间进行通信。因为它们将不再用作环回地址。
也许标准要求意味着其他东西。即,如果您从不让它们接触物理网络,那么使用它们来构建更复杂的虚拟网络可能是合法的。该标准没有明确这一点。在支持环回网络的地方,它通常以与 Linux 相同的方式进行解释。所以人们已经习惯了这种实现,并且会因为看到不同的东西而感到困惑。