0

我正在研究在 Beaglebone 上运行的 Python 通信类,该类从我的可用服务器列表连接到/重新连接到远程主机。

为了测试重新连接,我一直在物理上从路由器上拔下我的局域网以模拟中断。我想在代码中执行此操作以进行扩展测试。本质上,我想创建一个名为kill_internet(timeout)的方法,它将把地毯拉出来,然后在超时结束时恢复连接。

要求:

  1. 必须中断已建立的套接字连接。
  2. 断开连接必须是残酷和丑陋的 - 套接字没有机会优雅地关闭。

最后——我更喜欢局域网连接不被中断,这样我就可以继续从我的电脑上通过 SSH 监控测试。这不是一个真正的要求,因为我以后总是可以重新连接并读取日志文件。

服务网络停止将满足#1,但不确定它有多残酷。我考虑过 UFW ( iptables) 出站规则,但这可能不会阻止已建立的连接以及对#2 的同样关注。

我想我可以构建一个硬件 2 端口设备来在硬件级别执行此操作,但这很好 - 很难。

任何想法如何进行?

谢谢比尔

4

2 回答 2

0

在您的设置中执行此操作的最佳方法是在您的远程服务器上创建和拆除防火墙规则,以尽可能多的不同方式拒绝/拒绝您的客户端。例如:

  1. 通过主动拒绝来拒绝连接请求(易于在客户端处理)。
  2. 使用重置数据包在流程中丢弃连接(同样,易于处理)。
  3. 突然停止响应来自客户端 IP、中间连接的数据包。这模拟了您不拥有的网络部分的电缆切断,这是在客户端上最难处理的,因为您必须考虑什么是合理的超时。

如果你在 Linux 上,iptables可以编写脚本来实现这些规则。

于 2018-11-02T15:58:49.150 回答
0

我偶然发现了一个简单的硬件解决方案,花了我 22 美元。亚马逊以 10 至 15 美元的价格出售这些 USB 控制继电器 - 寻找 UsbRelay2。有了这个,我可以很容易地从代码中触发继电器。要猛烈中断以太网,我所要做的就是切断以太网集线器或交换机的电源。我得到了一个 10 美元的 5 端口开关,它从墙上的疣上运行 5V。我切断了其中一根 5v 电源线并将其穿过继电器。触发继电器会切断开关的电源。由于都是 5V 接线,所以都是安全的,不需要外壳。整整花了 3 分钟。

于 2018-11-08T23:05:54.963 回答