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

2020-03-21 17:06:38 +08:00
 black11black

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

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

本机连接在一个  TPLINK 无线路由下
路由名     TP-LINK_5G
本机地址   192.168.0.108
路由地址   192.168.0.1
本地配置文件显示该无线网卡使用 DHCP 连接路由
/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
## 修改 ifcfg-TP-LINK_5G
## 在底部新增一行

BRIDGE=br0

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

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
2431 次点击
所在节点    问与答
6 条回复
black11black
2020-03-21 17:26:55 +08:00
Append:

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

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

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

br0 上配置宿主机 IP
物理网卡上什么都不配,空置
虚拟机网卡配虚拟机 IP
br0 包含物理网卡做 slave

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654887

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX