想要 ssh 到 VMware 虚拟机里,虚拟机设置为桥接或 NAT,有区别吗

2023-09-23 10:50:07 +08:00
 amiwrong123

主要目的是 ssh 到 Ubuntu16 虚拟机,练习 Linux 环境下的 C 语言编程,以及练习下 Linux 环境下的命令使用(用 vscode 的远程功能,结合 MobaXterm )。本机环境是 win10 环境。

PS:各位大佬,这个问题可能比较蠢。虽然我感觉桥接和 NAT ,对于我这个目的来说,应该没有本质区别。

4047 次点击
所在节点    程序员
50 条回复
ww2000e
2023-09-23 13:39:16 +08:00
桥接相当于多一个网卡直接连进局域网,nat 网上解释很多
amiwrong123
2023-09-23 13:42:50 +08:00
@yolee599
你这么说的话好像也有道理。
kujou
2023-09-23 14:00:03 +08:00
nat 时母鸡和虚拟机不需要映射,ip 也不会变化。
桥接时 ip 是否变化又路由器决定
studyrun
2023-09-23 14:03:19 +08:00
@yolee599 #20 不知道你说的性能指什么性能,如果单论网速的话,本机的 nat 还是能轻松超过 2.5G 网卡的路由器(或交换机)的,这个可以用 iperf3 测试下就知道了
GeruzoniAnsasu
2023-09-23 16:12:42 +08:00
@studyrun 链路上的同网段机器不需要经过路由器转发。所以桥接和 NAT 不应该会有区别。

我的 wsl 和宿主机就是桥接的:

sinotw
2023-09-23 16:21:45 +08:00
虚拟机和宿主机总是在一个子网里,如果从宿主机 ssh 虚拟机,那肯定是没问题的,如果是桥接,在子网的其他主机 ssh 虚拟机也没问题,但 nat 时,其他主机并不在宿主机和虚拟机组成的子网里,所以没有特殊设置的话是不能 ssh 到虚拟机的
Hopetree
2023-09-23 16:26:55 +08:00
强烈建议桥接模式,然后设置静态 IP ,这样你的虚拟机就跟主机一样的网络环境,其他同网络的也可以访问虚拟机,桥接网络和设置静态 IP 参考: https://tendcode.com/subject/article/vmware-bridged-network/
Admstor
2023-09-23 16:37:03 +08:00
如果用桥接模式

安装后本机出现的那 2 个虚拟网卡禁用也没啥影响

而且桥接模式会更像一个和你电脑平级的虚拟机
迁移后网络修改也更容易,甚至都不需要修改
akira
2023-09-23 16:46:54 +08:00
桥接破事情少一点。 不熟悉网络的话,无脑上桥接简单点。
fuis
2023-09-23 17:13:34 +08:00
我基本上都是桥接+tailscale ,比较方便
studyrun
2023-09-23 17:37:12 +08:00
@GeruzoniAnsasu #25 我用的 VMware ,笔记本用的 WiFi ,桥接模式两者只有百兆带宽(链接带宽 866Mbps )。

> 链路上的同网段机器不需要经过路由器转发。
这个前提应该是有交换机,wsl 我很久没用了,我记得它是有配虚拟交换机的,你这个速度很可能是走了虚拟交换机
ysc3839
2023-09-23 17:53:49 +08:00
@GeruzoniAnsasu @yolee599
Windows 版 VMware 的桥接功能是 VMware 实现的,不是操作系统实现的,Linux 版未知。
印象中 Windows 版 VMware 的桥接功能似乎更类似集线器,虚拟机和苏主机通信会绕到上层交换机,网速会受到限制,而且虚拟机内用 Wireshark 能抓到宿主机网卡收发的包,发现这种情况后我后面都不敢用桥接了。另外宿主机通过 WiFi 联网时,虚拟机桥接也获取不到 IP 地址,所以没特殊需求的话我还是不用桥接。
另外,Linux 下 libvirt 的桥接需要手动配置个 Linux 的网桥,把宿主机和虚拟机网卡添加进网桥,然后坑就来了,添加后宿主机要上网就只能在网桥这个设备(如 br0)上配置 IP 地址,原来的网卡是用不了的,也就是说如果你在很多地方写了网卡名称(如 eth0),那就必须全都改掉,非常麻烦。因此我没有特殊需求都不会使用桥接,VMware 和 libvirt 的 NAT 模式,虚拟机都可以访问宿主机,并没有什么大问题。
shijingshijing
2023-09-23 18:12:06 +08:00
桥接的话,Host 和 Guest 要通过路由器进行通信;如果只是 Host 和 Guest 之间 ssh ,scp ,没有上网的需要,选 Host-only 就可以了,Host 主机 192.168.2.1 ; Guest 虚拟机 192.168.2.33 这种配置,不管 Host 主机是否能连到外网或者路由器,Guest 都能通过这个 Host-only 的网卡与 Host 主机通信。
iceheart
2023-09-23 19:03:39 +08:00
nat 模式,你在宿主机上连虚拟机,就相当于在路由器上访问内网,当然可以直连。
别的机器上就没这待遇了。

桥接的意思,就是相当于把宿主机,虚拟机,外边的机器插在一个交换机上,相互访问无压力。
amiwrong123
2023-09-23 19:33:59 +08:00
@ysc3839 #32
另外宿主机通过 WiFi 联网时,虚拟机桥接也获取不到 IP 地址
----
是这样的吗,那还有点麻烦呢。我笔记本是直接用的网线连接,回头我试试用 wifi 看看。
amiwrong123
2023-09-23 19:37:21 +08:00
@shijingshijing #33
没有上网的需要,选 Host-only 就可以了
-----
还是有上网的需求的,vscode 的插件安装没有网的话,很不方便。还得离线安装。
amiwrong123
2023-09-23 19:39:54 +08:00
@Admstor #28
迁移后网络修改也更容易,甚至都不需要修改
----
这个怎么理解啊
amiwrong123
2023-09-23 19:52:07 +08:00
@Hopetree #27
看了这个文章,意思就是,就算路由器是开着 DHCP 服务的,我这个桥接的虚拟机 也可以强行设置一个 静态的 ip 地址呗
ysc3839
2023-09-23 19:55:04 +08:00
@amiwrong123 建议试试,原因是标准的 WiFi 协议不能实现下级交换机
https://v2ex.com/t/968325#r_13554569
yolee599
2023-09-23 20:01:58 +08:00
@studyrun #24 #32 嗯,我是参考 QEMU 的网络介绍得出的结论,估计 Windows 和 Linux 有差别。见下面链接的 User Networking (SLIRP) 章节:
https://wiki.qemu.org/Documentation/Networking

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

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

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

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

© 2021 V2EX