V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
fancy2020
V2EX  ›  Linux

被 Linux Bridge Networking 的工作原理困扰了

  •  
  •   fancy2020 ·
    fanchangyong · 2020-02-24 22:53:32 +08:00 · 4923 次点击
    这是一个创建于 1734 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当我们在 Linux 上创建一个 bridge 连接的虚拟机的时候,按照官方的文档,我们需要创建一个 bridge interface,然后给这个 bridge 分配 ip 地址。 我不理解的是为什么要给 bridge 分配 ip 地址。

    我理解的在 Linux 中创建一个 bridge interface 就相当于创建了一个虚拟的交换机,真实的物理交换机是不需要有 ip 地址的,为什么在虚拟交换机(bridge)上就需要给它分配 IP 地址呢?

    下面这个问题和我想问的东西一致,但答案并没有解决我的困扰: https://unix.stackexchange.com/questions/319979/why-assign-mac-and-ip-addresses-on-bridge-interface

    我想我需要深入研究一下 Linux 内核中 bridge 到底是如何工作的

    11 条回复    2020-03-03 16:53:26 +08:00
    Yien
        1
    Yien  
       2020-02-24 22:58:32 +08:00
    我这边在 Proxmox 下建立网桥,不分配 IP 也是可以的。
    就当作交换机用。
    hiplon
        2
    hiplon  
       2020-02-24 23:00:52 +08:00
    bridge 应该是相当于交换机+接口;类比一般交换机有 vlan 接口,有物理接口,给 bridge 分配地址想当于给交换机的接口分配地址。
    Buges
        3
    Buges  
       2020-02-24 23:10:05 +08:00 via Android
    你那篇回答讲的很清楚了:
    A bridge device is a software switch, and each of its slave devices and the bridge itself are ports of the switch.

    bridge 设备是一个虚拟的 interface,它是一个插到某个虚拟交换机上的接口,这个虚拟交换机上还插了其他你桥接到一起的设备。
    关于 Linux 虚拟网卡原理介绍推荐这篇文章
    https://fuckcloudnative.io/posts/netwnetwork-virtualization-macvlan/
    feather12315
        4
    feather12315  
       2020-02-24 23:37:04 +08:00
    把它当成三层交换机
    Enya
        5
    Enya  
       2020-02-24 23:43:13 +08:00
    官方建议这么做,因为网卡的接入模式,除了作为 bridge 桥接,你同时还可以选择使用 NAT(在 virt-manager 的界面有的选),这样就会涉及到 ip 层的问题了,所以需要 ip 地址。如果你确实只是需要做为 bridge,没有 ip 也可以的,就直接当作插到大交换的一个小交换(但是 mac 地址一定要有)。
    你提到的“真实的物理交换机是不需要有 ip 地址”,这个.。。。是有三层交换机这个概念啊,还有 7 层交换机呢。。。
    doumeki
        6
    doumeki  
       2020-02-25 00:09:44 +08:00
    lc7029
        7
    lc7029  
       2020-02-25 00:16:31 +08:00
    网桥是一种虚拟设备,相当于具备弱三层功能的二层交换机,似乎说三层交换机也没错。你说的交换机不需要配置 IP 地址,是因为交换机是存储转发原理,上网的话 IP 在路由器上,交换机只管转发。
    而网桥是不同的网段,这里就要引入广播域,通过三层设备连接不同的广播域,说白了是路由。
    izoabr
        8
    izoabr  
       2020-02-25 00:17:27 +08:00
    你也可以不分配 IP 的呀
    yingo
        9
    yingo  
       2020-02-25 12:31:46 +08:00
    并不需要 ip 地址,但是 linux bridge 会自动获取被桥接设备(一般是网卡设备,也被称为 uplink)的 ip 地址.
    julyclyde
        10
    julyclyde  
       2020-02-25 14:51:24 +08:00   ❤️ 1
    bridge 的成员,其二层处理过程,首先判断自己是不是成员,如果是成员,就转交给 bridge 处理,不再进行本设备自己的三层处理
    buddha
        11
    buddha  
       2020-03-03 16:53:26 +08:00
    @yingo 如果一个 bridge 下有多个网卡 (每个网卡一个地址)这 bridge ip 地址获取谁的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:06 · PVG 22:06 · LAX 06:06 · JFK 09:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.