如何解决如何在 C# 中基于标记的 VLAN 建立 TCP 连接?
我将进行一个测试设置,我无法更改被测设备的 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。理论上这应该是可能的,因为设备在以太网级别上是分开的,并且虚拟网卡是在协调器设备上创建的,但是我怎么能告诉我的程序连接时应该使用哪个虚拟网卡?
一种选择是动态更改协调器设备上的路由表(调用外部脚本或 P/Invoke),但这似乎更像是一种解决方法。
另一个选项是动态启用/禁用虚拟网卡,但我不知道这是否容易实现。
顺便说一句,我正在使用 .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 或多个路由表之类的东西。
在您的本地路由器上,您可以将每个 vlan 添加到另一个 VRF(或路由表)。并通过策略路由标记某些 TCP 连接以使用特定的 VRF 或路由表。
您可以将 NAT 添加到组合中。例如您的子网的 1:1 nat。根据这些标记您的联系。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。