V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
black11black
V2EX  ›  问与答

Linux 下如何配置桥接网卡,可以实现主机与虚拟机互通?

  •  
  •   black11black · 2020-03-21 17:06:38 +08:00 · 2405 次点击
    这是一个创建于 1469 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,系统 centos,在配置桥接网卡时出现问题。想实现的需求是主机与虚拟机双向互通,同时都能访问互联网,单向的 nat 不行,最后还是桥接网卡了。但是设置桥接网卡之后上不去网,很神秘,请各位帮忙。

    我的具体配置步骤是这样:

    • 0 、确保网络环境
    本机连接在一个  TPLINK 无线路由下
    路由名     TP-LINK_5G
    本机地址   192.168.0.108
    路由地址   192.168.0.1
    本地配置文件显示该无线网卡使用 DHCP 连接路由
    
    • 1 、新建一个配置虚拟桥接配置文件,内容如下
    /etc/sysconfig/network-scripts
    vim ifcfg-br0
    
    ## ifcfg-br0 内容
    DEVICE=br0
    TYPE=Bridge
    BOOTPROTO=static
    IPADDR=192.168.0.108
    NETMASK=255.255.255.0
    ONBOOT=yes
    GATEWAY=192.168.0.1
    
    • 2 、修改主文件,添加桥
    ## 修改 ifcfg-TP-LINK_5G
    ## 在底部新增一行
    
    BRIDGE=br0
    
    • 3 、重启网络服务

    但是这么配置以后发现就上不去网了,怪的很。

    ifconfig 显示确实成功创建了一个 virbr0 网卡 , 同时 wlp10s0 (本机无线网卡) 和 br0 (桥) 的 ipv4 地址都显示是 192.168.0.108

    ping 路由器地址 192.168.0.1 会提示 Destination Host Unreachable,似乎本机和路由不处在同一网络中了。

    第一次配桥接,不太懂发生了什么,求救。

    ======================================== 上不去网的状态下的 ifconfig 内容

    [root@localhost network-scripts]# ifconfig
    br0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.0.108  netmask 255.255.255.0  broadcast 192.168.0.255
            ether 2a:54:07:cc:61:7c  txqueuelen 1000  (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
    
    enp6s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether 70:85:c2:5e:82:2c  txqueuelen 1000  (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
            device memory 0xfd600000-fd61ffff  
    
    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 6036  bytes 711608 (694.9 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 6036  bytes 711608 (694.9 KiB)
            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:10:08:07  txqueuelen 1000  (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
    
    wlp10s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.0.108  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 fe80::2ef7:d9d3:a984:846d  prefixlen 64  scopeid 0x20<link>
            ether 30:b4:9e:a3:29:cb  txqueuelen 1000  (Ethernet)
            RX packets 304348  bytes 432376721 (412.3 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 185730  bytes 17967617 (17.1 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    6 条回复    2020-03-22 12:31:14 +08:00
    black11black
        1
    black11black  
    OP
       2020-03-21 17:26:55 +08:00
    Append:

    桥接网卡设置为 DHCP 后可以正常上网。

    不太明白为什么固定 IP 模式不行。宿主网卡用同样设置改为 static 后可以联网,brige 更换一个与宿主不冲突的 IP (比如 192.168.0.109 )也一样无法上网
    qinghon
        2
    qinghon  
       2020-03-21 18:47:31 +08:00 via Android   ❤️ 1
    你需要查看路由表信息 ip r
    通常情况下 br0 配置了 ip 就不需要再在网卡上配置,会影响路由选择,其次桥接无线网卡是有诸多问题的,因为涉及到 mac 地址
    可以参考这篇文章
    https://segmentfault.com/a/1190000009491002?utm_medium=referral&utm_source=tuicool
    jinsongzhao
        3
    jinsongzhao  
       2020-03-21 22:18:30 +08:00
    主网卡是无线网卡,而且是 DHCP 模式吗?那你桥接网卡里设置的精态地址哪里来的?
    都要配置为一样的精态地址吧?

    你用的 Xen 开源虚机系统搭建的吗?为何要配置桥接网卡。如果换 VMWare Exsi 免费版本呢?
    jinsongzhao
        4
    jinsongzhao  
       2020-03-21 22:20:57 +08:00
    我觉得桥接网卡就是个附加在主卡上的虚拟网卡,配置应该完全一样才规范,就不用管那么多原因了。如果你用的是开源的 Xen 做虚机主机,管理起来会不会太不方便哦。
    lechain
        5
    lechain  
       2020-03-22 11:33:25 +08:00 via Android
    当你将虚拟机网卡在宿主端将其与无线网卡桥接后,整个机器对外展示的 ip 网卡就变成了桥接产生的网卡而不是无线网卡了,无线网卡只用于无线连接了,你要把无线网卡的 ip 地址去掉,不然会产生 ip 冲突,我映像中以前配 linux 虚拟网桥的时候有碰到过这个问题
    msg7086
        6
    msg7086  
       2020-03-22 12:31:14 +08:00
    桥接网卡

    br0 上配置宿主机 IP
    物理网卡上什么都不配,空置
    虚拟机网卡配虚拟机 IP
    br0 包含物理网卡做 slave
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2939 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:03 · PVG 22:03 · LAX 07:03 · JFK 10:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.