如何使用 scp 模拟 ssh 连接中的数据包丢失

如何使用 scp 模拟 ssh 连接中的数据包丢失

我想观察一种名为 wireGuard 的新 VPN 隧道协议在 macOS 和 Linux 平台中不稳定的网络环境中将大量数据从一个节点传输到另一个节点时的耐用性。

请注意,wireGuard 在 UDP 下工作,我想了解它在某种程度上是如何处理数据包丢失的。

是否有任何方法可以设置网络接口在此远程复制会话期间丢弃一定比例的数据包?

答案1

对于 Linux iptables,其内容如下:

iptables -A OUTPUT -m statistic --mode random --probability 0.02 -j DROP

或者

iptables -A INPUT -m statistic --mode random --probability 0.02 -j DROP

笔记:

  • 上述命令会影响由表的链OUTPUT(或INPUT各自)处理的所有数据包filter。您可能希望使用-p(协议)和--dport(例如,目标端口)来仅针对特定连接:

    iptables -A OUTPUT -p udp --dport 1234 -m …
    
  • 在测试不同变体时,请记住删除不需要的规则,而不是堆叠它们。要删除规则,请调用相同的iptables …命令,但使用-D代替-A


我不太清楚nftables。我发现了这一点:如何根据概率丢弃数据包nftables


我不知道 macOS根本。在我的调查中,我遇到了pfctldnctl我在 OSX 中发现了这一点:如何随机丢弃数据包。我完全不知道dnctl答案中使用的现在是否可以在 macOS 中使用。抱歉。

将“macOS 部分”移至单独的问题(我相信可能会在apple.stackexchange.com),而这里只保留“Linux部分”可能是个不错的策略。

相关内容