如何在 C# 中基于标记的 VLAN 建立 TCP 连接?
How to set up a TCP connection based on a tagged VLAN in C#?
我要进行测试设置,我无法更改被测设备的 IP 地址,但需要一个特殊的协调器设备来访问所有具有相同 IP 地址但位于不同 VLAN 中的设备.
假设有以下设备连接到第 3 层交换机:
待测设备A,IP 192.168.1.1,VLAN10
待测设备B,IP 192.168.1.2,VLAN10
待测设备C,IP 192.168.1.1,VLAN20
待测设备D,IP 192.168.1.2,VLAN20
Orchestrator 设备,IP 192.168.1.3,VLAN10 + VLAN20(标记的 VLAN)
现在在 C# 中,我想建立一个 TCP 连接来假设设备 A。这在理论上应该是可能的,因为设备在以太网级别是分开的,并且虚拟 NIC 是在协调器设备上创建的,但我怎么知道我的程序在进行连接时应该使用哪个虚拟 NIC?
一个选项是动态更改协调器设备上的路由 table(调用外部脚本或 P/Invoke),但这似乎更像是一种解决方法。
另一种选择是动态启用/禁用虚拟 NIC,但我不知道这是否容易实现。
顺便说一句,我正在使用 .NET Core。
问题:
C# 正在根据您使用的网络选择 NIC,并且这些网络的子网相同您需要使用解决方法
解决方法:
使用 cmd netsh 命令禁用您未在 Orchestrator 设备中使用的 NIC:netsh interface set interface "Interface-Name" disable
使用System.Diagnostics.Process.Start("CMD.exe", strCmdLine);
命令将其发送到C#中的cmd。
这样就可以切换设备了!
对于重叠的 IP 范围,您可以使用诸如 VRF 或多重路由之类的东西 tables。
在您的本地路由器上,您可以将每个 vlan 添加到另一个 VRF(或路由 table)。并使用策略路由标记某些 TCP 连接以使用特定的 VRF 或路由 table.
您可以添加 NAT。例如1:1 nat 用于您的子网。根据这些标记您的连接。
我要进行测试设置,我无法更改被测设备的 IP 地址,但需要一个特殊的协调器设备来访问所有具有相同 IP 地址但位于不同 VLAN 中的设备.
假设有以下设备连接到第 3 层交换机:
待测设备A,IP 192.168.1.1,VLAN10 待测设备B,IP 192.168.1.2,VLAN10
待测设备C,IP 192.168.1.1,VLAN20 待测设备D,IP 192.168.1.2,VLAN20
Orchestrator 设备,IP 192.168.1.3,VLAN10 + VLAN20(标记的 VLAN)
现在在 C# 中,我想建立一个 TCP 连接来假设设备 A。这在理论上应该是可能的,因为设备在以太网级别是分开的,并且虚拟 NIC 是在协调器设备上创建的,但我怎么知道我的程序在进行连接时应该使用哪个虚拟 NIC?
一个选项是动态更改协调器设备上的路由 table(调用外部脚本或 P/Invoke),但这似乎更像是一种解决方法。
另一种选择是动态启用/禁用虚拟 NIC,但我不知道这是否容易实现。
顺便说一句,我正在使用 .NET Core。
问题:
C# 正在根据您使用的网络选择 NIC,并且这些网络的子网相同您需要使用解决方法
解决方法:
使用 cmd netsh 命令禁用您未在 Orchestrator 设备中使用的 NIC:
netsh interface set interface "Interface-Name" disable
使用
System.Diagnostics.Process.Start("CMD.exe", strCmdLine);
命令将其发送到C#中的cmd。
这样就可以切换设备了!
对于重叠的 IP 范围,您可以使用诸如 VRF 或多重路由之类的东西 tables。
在您的本地路由器上,您可以将每个 vlan 添加到另一个 VRF(或路由 table)。并使用策略路由标记某些 TCP 连接以使用特定的 VRF 或路由 table.
您可以添加 NAT。例如1:1 nat 用于您的子网。根据这些标记您的连接。