以太网转 I2C 设备在 VPN 下停止工作

以太网转 I2C 设备在 VPN 下停止工作

我有一个以太网转 I2C 转换器盒(Promira,来自 Total Phase;用于微处理器开发板接口)。当 VPN 关闭时,它工作正常。但是,当我打开 VPN 时,该转换器盒要么立即停止工作,要么在短暂的时间后停止工作,通常是 1-2 分钟(总是 < 5 分钟)。我需要让 Promira 转换器盒在 VPN 开启时可靠地工作。

我的设置:

  • Promira盒子:固定IP,169.254.11.193,子网掩码255.255.0.0

  • USB-C_to_Ethernet 适配器,Realtek USB GbE 系列控制器;使用 DHCP,地址 169.254.225.170,子网 255.255.0.0。适配器直接连接到笔记本电脑,并且仅连接到 Promira 盒(例如没有其他交换机)

  • 带有 USB3.0 扩展坞的戴尔笔记本电脑。

  • 通过扩展坞将有线以太网连接到家用路由器。使用地址 172.27.35.x、子网 255.255.255.0

  • 为分割隧道设置的 VPN(右键单击 VPN 适配器,属性,网络选项卡,TCP/IPv4,属性 --> 高级… --> 取消选中“在远程网络上使用默认网关”框)

  • 需要 VPN 的公司项目根据需要设置直接路由('netsh interface ipv4 add route <IP_addr> "Company_VPN" ')

  • VPN 地址使用 10.xxx 公司 VPN 服务器位于 64.xxx 地址空间。

我希望由于互联网、VPN 和 Promira 盒的适配器都在单独的 IP 子网上,因此拆分隧道可以避免冲突。

使用 Wireshark 捕获

Total Phase 提供了一个示例脚本来检测盒子。它有一个 ping/应答协议,可以简单到 2 个 IPv4 数据包。我使用 Wireshark 捕获了 IPv4 流量,使用捕获过滤器:net 169.254.0.0/16。

我可以看到端口号的差异 - 0xE2_EC = 58092(检测到的端口)和 0xD5_6B = 54635(未检测到的端口)。这解释了部分差异,但不是全部。我确实检查过了 - 这个端口号的范围很广,仍然可以进行检测。我猜端口号的差异并不重要。

最后的有效载荷字节似乎是相同的。

1. When Detected:

C:>detect.py
Detecting the Promira platforms...
1 device(s) found:
    ip = 169.254.11.193   (in-use)  (2416-633846)
        
1 0.000000   169.254.225.170   169.254.255.255   UDP   46   58092 → wizard(2001) Len=4
0000   ff ff ff ff ff ff c8 f7 50 cd 94 ad 08 00 45 00   ........P.....E.
0010   00 20 7d 6b 00 00 80 11 00 00 a9 fe e1 aa a9 fe   . }k............
0020   ff ff e2 ec 07 d1 00 0c 00 a0 70 69 6e 67         ..........ping
      
2 0.001091   169.254.11.193   169.254.225.170   UDP   60   wizard(2001) → 58092 Len=5
0000   c8 f7 50 cd 94 ad 90 8c 09 02 0f c0 08 00 45 00   ..P...........E.
0010   00 21 00 00 40 00 40 11 f9 63 a9 fe 0b c1 a9 fe   .!..@[email protected]......
0020   e1 aa 07 d1 e2 ec 00 0d 5b ac 90 0a e7 f6 00 00   ........[.......
0030   00 00 00 00 00 00 00 00 00 00 00 00               ............

2. Not detected:

C:>detect.py
Detecting the Promira platforms...
     No devices found.
    
1 0.000000   169.254.225.170   169.254.255.255   UDP   46   54635 → wizard(2001) Len=4
0000   ff ff ff ff ff ff c8 f7 50 cd 94 ad 08 00 45 00   ........P.....E.
0010   00 20 7d 60 00 00 80 11 00 00 a9 fe e1 aa a9 fe   . }`............
0020   ff ff d5 6b 07 d1 00 0c 0e 21 70 69 6e 67         ...k.....!ping
    
2 0.000709   169.254.11.193   169.254.225.170   UDP   60   wizard(2001) → 54635 Len=5
0000   c8 f7 50 cd 94 ad 90 8c 09 02 0f c0 08 00 45 00   ..P...........E.
0010   00 21 00 00 40 00 40 11 f9 63 a9 fe 0b c1 a9 fe   .!..@[email protected]......
0020   e1 aa 07 d1 d5 6b 00 0d 69 2d 90 0a e7 f6 00 00   .....k..i-......
0030   00 00 00 00 00 00 00 00 00 00 00 00               ............

使用 DNS 更改进行重置

这是对我来说最神秘的部分。我发现,如果我在 USB-C_to_Ethernet 适配器中更改 DNS 设置,当 VPN 开启时,我可以再次开始检测 Promira 盒子。然而,这只会持续 1-2 分钟(并且总是少于 5 分钟),然后盒子会再次隐藏。

如果我在 USB-C_to_Ethernet 适配器中单击鼠标右键,选择 IPv4 设置,进行以下任何更改,该盒子将开始暂时工作:

  • 将“自动获取 DNS 服务器地址”改为“使用以下 DNS 服务器地址”(后一种情况下请输入合法的 DNS 服务器地址)
  • 改回,从使用以下 DNS 服务器地址”改为“自动获取 DNS 服务器地址”
  • 高级...--> DNS 选项卡;更改“在 DNS 中注册此连接的地址”复选框的状态(选中或取消选中)
  • 高级...--> DNS 选项卡;更改复选框“在 DNS 注册中使用此连接的 DNS 后缀”的状态(选中或取消选中)
  • 高级...--> DNS 选项卡;更改复选框“附加主 DNS 后缀的父后缀”的状态(选中或取消选中)

另外,有时(并非总是如此),我可以通过执行以下操作让 Promira 框暂时再次显示:

  • ipconfig /flushdns

IP Ping 始终有效

我发现的另一件事是,我始终可以从 CMD ping 169.254.11.193 处的 Promira 盒地址 - VPN 开启、VPN 关闭、响应或不响应。

C:>ping 169.254.11.193

Pinging 169.254.11.193 with 32 bytes of data:
Reply from 169.254.11.193: bytes=32 time=352ms TTL=64
Reply from 169.254.11.193: bytes=32 time=1ms TTL=64
Reply from 169.254.11.193: bytes=32 time=1ms TTL=64
Reply from 169.254.11.193: bytes=32 time=1ms TTL=64

Ping statistics for 169.254.11.193:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 352ms, Average = 88ms

USB-C_to_Ethernet 适配器上没有 DNS 流量

我使用 Wireshark 查看了适配器上的所有流量(捕获过滤器 169.254.0.0/16),然后使用显示过滤器 udp.port == 53 查找 DNS 流量。至少在这种设置下,我没有检测到任何 DNS 操作。这包括在进行上述 DNS 更改时监控流量。我看到的流量似乎与 DNS 更改后相关,但并不直接通过此适配器使用 DNS。

我的假设和问题

鉴于我看不到 USB-C_to_Ethernet 适配器上的 DNS 流量,似乎受 DNS 变化影响的任何事件都是在流量到达适配器之前发生的。

似乎还很明显,VPN 正在刷新某些设置、值或缓存(???);一旦刷新,盒子就会停止以所需的方式响应。

我想我的问题归结为 - 由于 VPN,后台发生了什么变化,哪些 DNS 更改“重置”或以某种方式清除;但随后似乎再次被 VPN 清除?

而且,如果我们知道这是什么,我该如何防止它被 VPN 消灭?

非常感谢您的帮助。

答案1

事实证明这是 Promira SW 的问题。Total Phase 工程师很快就解决了这个问题。

相关内容