我设置了一台服务器,它托管虚拟机和 Samba 共享。其中一个虚拟机是 Windows 虚拟机。
该虚拟机有两个网络接口:
- 接口 A (10.216.xx):连接到允许访问 LAN 的网桥
- 接口 B (192.168.100.x):连接到隔离网络接口,仅允许连接到服务器。这是一个没有物理绑定的桥接接口。
由于接口 B 连接到主机 SMB 的速度比接口 B 快得多(多 GByte/秒 vs 1Gbit/秒),所以我想使用这个网络。为此,我将网络驱动器映射到 192.168.100.1。此 IP 只能通过接口 B 使用,因为它是一个虚拟且独立的网络。
尝试访问 Samba 共享时,由于某种原因,现在使用了接口 A。这将使服务器上的物理 1GBit 链路饱和,并严重限制性能。如果我删除接口 A,流量将按预期流经接口 B。但由于大多数任务都需要接口 A,因此我无法将其删除。
我现在尝试强制所有到 192.168.100.1 的流量通过路由流经接口 B。我为 192.168.100.0/24 和 192.168.100.1/36 添加了路由,度量值为 1,并为接口 B 添加了接口设置。这已通过标准路由和持久路由完成。但到 192.168.100.1 的流量只会流经接口 A。
以下是用于验证前面陈述的路由表。请注意,接口 A 的 IP 为 10.216.0.67,接口 B 的 IP 为 192.168.100.186,并且两个接口上的 IPv6 均已禁用。
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.216.0.1 10.216.0.67 15
0.0.0.0 0.0.0.0 192.168.100.1 192.168.100.186 271
10.216.0.0 255.255.0.0 On-link 10.216.0.67 271
10.216.0.67 255.255.255.255 On-link 10.216.0.67 271
10.216.255.255 255.255.255.255 On-link 10.216.0.67 271
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
192.168.100.0 255.255.255.0 On-link 192.168.100.186 271
192.168.100.1 255.255.255.255 192.168.100.1 192.168.100.186 16
192.168.100.186 255.255.255.255 On-link 192.168.100.186 271
192.168.100.255 255.255.255.255 On-link 192.168.100.186 271
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 10.216.0.67 271
224.0.0.0 240.0.0.0 On-link 192.168.100.186 271
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 10.216.0.67 271
255.255.255.255 255.255.255.255 On-link 192.168.100.186 271
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
192.168.100.1 255.255.255.255 192.168.100.1 1
0.0.0.0 0.0.0.0 192.168.100.1 Default
===========================================================================
我看不出任何 192.168.100.1 连接要通过接口 A 而不是 B 的理由。
在这种情况下,我如何强制与 192.168.100.1 的连接使用接口 B 而不是 A?
答案1
我猜测与 192.168.100.1 的连接确实使用了接口 B,但连接很快就会变成不再是“到 192.168.100.1”作为SMB 多通道开始。
(也许 SMB 客户端认为接口 A 的报告链接速率高于接口 B,尽管它的实际速度并不快?对于 VM 接口来说这并不奇怪,因为它们实际上无法报告任何有用的物理链接速率。)
使用Wireshark来验证这个理论。
尝试使用以下任一方法禁用多通道:
- 在服务器上,
Set-SmbServerConfiguration -EnableMultiChannel $false
; - 在客户端上,
Set-SmbClientConfiguration -EnableMultiChannel $false
。
(此外,停止禁用 IPv6。)