scp を使用して ssh 接続でパケット損失をシミュレートする方法

scp を使用して ssh 接続でパケット損失をシミュレートする方法

macOS と Linux プラットフォームの両方で、あるノードから別のノードに大量のデータを転送するときに、不安定なネットワーク環境で wireGuard と呼ばれる新しい VPN トンネル プロトコルの耐久性を観察したいと思います。

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はわかりませんまったくpfctl. 私の調査では、 とともに遭遇しましたdnctl。 OSX では次のことがわかりました:パケットをランダムにドロップする方法dnctl回答で使用されているものが、最近のmacOSで使用できるかどうかはまったくわかりません。申し訳ありません。

「macOSの部分」を別の質問に移動します(これは、アップル) 、ここでは「Linux 部分」だけを残すのが良い戦略かもしれません。

関連情報