如题,网络底层基础不好
应用场景是目前 PC 上有一个 hyperV 虚拟机里面跑了一个 redis,应该是使用了桥接模式连接网络,我不是很确定。总之连接到同一个路由器,本机 IP 是 192.168.0.100 ,虚拟机是 192.168.0.101 这样,目前主机和虚拟机网络都可以互通,并且都能访问互联网。
一个好奇是这种模式构建的网络,如果从主机向虚拟机发东西,或者反过来,流量是否需要经过路由,还是说在本地某一种虚拟网卡层面就能解决?我不知道如何模拟一个测试,直接来问老哥们了。
=====
另外一个好奇是,redis 虚拟机的使用场景,大多数时候不太需要单独使用互联网,大多数时候能保证与主机双向正常通讯就可以,有没有一种虚拟网络结构可以做到这种效果?这样既提高了通讯效率,又提高了安全性。只需要装机的时候下载东西时连接到互联网,之后稳定运行切换到这种网络就可以了
1
cmostuor 2021-04-05 20:41:06 +08:00 2
流量会通过路由器, 子网内的设备必须通过网关去转发数据.
|
2
Tink 2021-04-05 20:42:16 +08:00 via Android
经过,流量怎么走,看网关
|
3
cmostuor 2021-04-05 20:43:17 +08:00
想知道经不经过你可以在路由器上用 tcpdump 抓包然后用 wireshark 分析
|
4
alect 2021-04-05 20:44:17 +08:00
NAT 模式可以保证最低延迟,
而且大多数不上外网的情况下不走路由器, 然后还可通过共享母机网络方式让你的小鸡上网。 |
5
noe132 2021-04-05 20:45:56 +08:00
hyperv 虚拟机 和 主机 在同一个虚拟交换机下面,理论上到了虚拟交换机,直接走第二层转发,就不会从实际物理网卡发出去了。
|
6
LeeReamond OP @alect nat 模式下母鸡没法访问小鸡吧?
|
7
jasonyang9 2021-04-05 20:52:40 +08:00
经不经过网关看是各自配的子网掩码,用自己的 IP 和子网掩码算的的网络号,比较对方的网络号(用对方的 IP 和自己的子网掩码计算),是否相同,相同就不经过网关,不同就查找本机路由表发送到对应的下一跳
|
8
noe132 2021-04-05 20:56:37 +08:00
我这是虚拟机在一个内部网络下面
vm: 192.168.3.58(vm bridge) host: 192.168.3.1(vm bridge), 192.168.1.9(host nic) 从 vm 往 192.168.1.9 发数据,192.168.3.1 所在的 nic 会有数据,192.168.1.9 的 nic 则没有动静。 不确定直接桥接是不是也是这样,不过我猜测应该是类似的。可以用 iperf 测一下虚拟机到主机的带宽就明白了。 |
9
just1 2021-04-05 21:00:55 +08:00
你可以设置两个网卡,一个是桥接,用来给虚拟机上网,一个是 host-only,用来与宿主机通信
|
11
ysc3839 2021-04-05 21:15:13 +08:00 via Android
理论上桥接模式是虚拟机和主机都接入一个交换机,这个交换机再接入上级网络设备。
但是我之前用 VMware 测试的时候似乎是类似集线器,虚拟机能抓到主机的包,且主机用 WiFi 时虚拟机跟主机通信的速度也会受 WiFi 速度影响。 |
12
ysc3839 2021-04-05 21:16:35 +08:00 via Android
不过用 VMware 的 NAT 模式就没这问题。
|
13
Osk 2021-04-05 21:49:02 +08:00 via Android
桥接网络, hv 中叫外部网络(?),guest 和 host 在同一子网内,相互通信是不用经过路由器转发的,除非像 dns 找对方等特殊的情况需要一丁点流量。
这个通讯的转发应该是由 hv 的虚拟交换机软件实现的。有一个缺点:拔了网线后,guest 和 host 之间的通讯也好像会断。 问题二:你可以创建 NAT 网络 + hv 的内部网络交换机,这样,guest 和 host 的通信全部走那张虚拟内部网卡,路由器的子网和它没任何关系了,而且速度是 10gbps 。 192.168.0.0/24 这个子网内的设备无法访问 guest,guest 倒可以访问它们(nat),给 guest 配上 192.168.0.1 的 dns 就能实现:上网走路由器,与 host 通信不出虚拟网卡。 顺便:手动创建的 nat 网络无 dns 与 dhcp 服务,guest 需要手动配置 ip 和 dns (不是 host 的 ip 哦)。Win 10 自动创建的 default switch 也是 nat ,且有 dns 和 fhcp 服务,server 上手动创建的好像就没有。。。 |
14
Zien 2021-04-05 22:34:47 +08:00 via iPhone
桥接可以的呀,就类似于虚拟机 guest 和 host 在同一子网下
|
15
ryd994 2021-04-05 23:57:58 +08:00 via Android 1
桥接模式下是可以的
hyper v 的 vmswitch 启用后,vmswitch bind 到网卡( pnic )上。然后创建一个 vnic 给宿主系统。虚拟机绑定的也是 vnic 。 所以无论是 host os 还是 guest os,流量都会经过 vmswitch 。 有这个前提,那么你的问题就很容易解答了。这两个 IP 都在同一网段,所以不需要经过路由器,直接 vmswitch 转发就行。 强制 vswitch 不本地转发而直接去 router 的,那叫 vepa mode 。vmswitch 是否支持 vepa mode 我不记得了。 |
16
ryd994 2021-04-06 00:04:21 +08:00 via Android 2
1 楼说的是错的。同一网段下不需要路由器。有 arp,有 switch 就行了。也不需要网关。这是计算机网络的基础吧?这也能说错?
如果你想要降低开销,internal switch 是个比较好的选择。还可以启用 jumbo frame 减少网络栈的开销。如果想要极致降低开销,https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/make-integration-service 这是直通,不走网络,自然也就没有网络栈的开销。内存直接传输数据。 |
18
deorth 2021-04-06 09:21:53 +08:00
此贴是程序员不一定都懂网络的证明,CS EE 还是要分家的
|
20
LeeReamond OP @cubecube 我点的赞,我又不明白,看一楼回复还说你可以抓包验证,就以为是正确答案了。不过现在说来,似乎抓发出的包也不能分析路由路线。。
|