Linux でのカスタム ping ペイロード

Linux では、特権のないプロセスが生の IP パケットを送信することはできません。 Ping 機能は、ping ユーティリティとのやり取りによって実装されます。 ただし、このユーティリティでは、インターネット制御メッセージプロトコル (ICMP) ping パケットのカスタム ペイロードの指定はサポートされていません。 .NET 7 では、このような場合にチェックを追加し、カスタム ペイロードが指定されている場合は例外をスローします。

以前の動作

以前のバージョンでは、ping パケット ペイロードは、特権のない Linux プロセスで警告なしで無視されました (つまり、送信されませんでした)。

新しい動作

.NET 7 以降では、特権のない Linux プロセスで実行されているときに、カスタム ping パケット ペイロードを送信しようとすると、PlatformNotSupportedException がスローされます。

導入されたバージョン

.NET 7

破壊的変更の種類

この変更は、バイナリの互換性に影響を与える可能性があります。

変更理由

ペイロードを警告なしで削除するのではなく、操作を実行できないことをユーザーに通知することをお勧めします。

ping ペイロードが必要な場合は、アプリケーションを root として実行するか、setcap ユーティリティを使用して cap_net_raw 機能を付与します。

それ以外の場合は、カスタム ペイロードを受け入れない Ping.SendPingAsync のオーバーロードを使用するか、空の配列を渡します。

影響を受ける API