虚拟机之间如何跨主通讯

2019-07-17 09:23:37 +08:00
 snappyone

现在有 2 台宿主机,都是 ubuntu 的,每个上面都开了几台 vm,大概的网络拓扑如下,如何让 vm1 和 vm2 能够直接通讯呢:

宿主机 A:

vm1(192.168.122.21)

宿主机 B:

vm2(192.168.122.24)

2156 次点击
所在节点    程序员
19 条回复
zjsxwc
2019-07-17 09:25:36 +08:00
给你两个虚拟机加 host only 虚拟网卡呗,
如果一定要用默认的 nat 网卡就配置下端口映射也可以的
Tink
2019-07-17 09:26:19 +08:00
你的两个主机都在一个网段了,直接桥接不行?
snappyone
2019-07-17 09:28:29 +08:00
@Tink 两个宿主机不在一个网段
snappyone
2019-07-17 09:29:08 +08:00
@zjsxwc 需求有点像把所有虚拟机加入一个 vpn 中一样
zjsxwc
2019-07-17 09:29:31 +08:00
@zjsxwc #1 是桥接网卡 bridged,不是 host only
zjsxwc
2019-07-17 09:30:15 +08:00
@snappyone #4

你的需求用 zerotier 这种吧
hoyixi
2019-07-17 09:32:55 +08:00
网卡桥接的话,虚拟机和宿主机在同一网段,好似一台物理机接入宿主机的局域网一样。

这情况下,你 2 台宿主机怎么通讯,你的 2 台虚拟机就怎么通讯
iceheart
2019-07-17 09:34:49 +08:00
flannel ?
snappyone
2019-07-17 09:34:49 +08:00
@zjsxwc 我去看看 zerotier,谢谢
snappyone
2019-07-17 09:35:14 +08:00
@iceheart 这两天有在看 k8s 跟 flannel,但是还不知道怎么部署
snappyone
2019-07-17 09:35:39 +08:00
@hoyixi 这个需要虚拟机有独立的外网 ip 吧
hoyixi
2019-07-17 09:41:03 +08:00
那看你具体情况了

上面说了,虚拟机网卡如果是桥接模式,虚拟机就像一台实际的电脑,接入你宿主机所在网络。

你 2 台宿主机怎么通讯?如果是都在同一个局域网内,那虚拟机之间也一样;如果跨网络,那虚拟机也一样。
defunct9
2019-07-17 09:53:14 +08:00
vxlan
cadmuxe
2019-07-17 10:09:06 +08:00
不知道你的需求是什么。
大概提供一个思路,希望有专门做网络的人看一看。
因为你虚拟机和 host 是桥接,通过一个虚拟网卡,他们是在一个网段的(只限于那个虚拟网卡和虚拟桥)。同时 host 还有真实的网卡连到外部。
Host1 92.168.122.1 [92.168.122.0/24]
Vm1 192.168.122.2

Host1 92.168.123.1 [92.168.123.0/24]
Vm1 192.168.123.2

host1 92.168.122.1 当作第一个网段的 gateway, 在 host1 上设置 ip_forwarding=1, 并且设置 ip rule 把这个网段的包从 eth0 push 出去。
在 host2 上做同样的操作。

在 host1,host2 的 router 上设置 route 把俩个网段 push 到正确的机器上应该就行了。

---
如果只是想要通信,envoyproxy.io
openbsd
2019-07-17 10:25:13 +08:00
你可以把桥接模式认为,哪有什么虚拟机 ?都是物理主机
nnnToTnnn
2019-07-17 10:28:29 +08:00
teamview ,或者 openvpn ,pptp 等等,组建一个虚拟隧道不就可以了?
snappyone
2019-07-17 10:33:16 +08:00
@nnnToTnnn openvpn 应该可以
CallMeReznov
2019-07-17 10:33:46 +08:00
无脑桥接即可
onice
2019-07-17 15:51:52 +08:00
全部桥接。不过宿主机必须要连接外部网络才行。

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

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

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

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

© 2021 V2EX