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