通过特定接口将流量路由到 IP/子网

通过特定接口将流量路由到 IP/子网

我设置了一台服务器,它托管虚拟机和 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。)

相关内容