Aangepaste ping-payloads op Linux

In Linux kunnen niet-bevoegde processen geen onbewerkte IP-pakketten verzenden. Ping Functionaliteit wordt geïmplementeerd door communicatie met het ping hulpprogramma. Dit hulpprogramma biedt echter geen ondersteuning voor het opgeven van een aangepaste nettolading voor de ICMP-pingpakketten (Internet Control Message Protocol). .NET 7 voegt een controle voor dergelijke gevallen toe en genereert een uitzondering als er een aangepaste nettolading is opgegeven.

Vorig gedrag

In eerdere versies werd de payload van het pingpakket op de achtergrond genegeerd (dat wil zeggen: het werd niet verzonden) bij niet-geprivilegieerde Linux-processen.

Nieuw gedrag

Vanaf .NET 7 wordt er een PlatformNotSupportedException gegenereerd als u probeert een aangepaste nettolading van pingpakketten te verzenden wanneer deze wordt uitgevoerd in een Linux-proces zonder bevoegdheden.

Geïntroduceerde versie

.NET 7

Type van brekende verandering

Deze wijziging kan van invloed zijn op binaire compatibiliteit.

Reden voor wijziging

Het is beter om de gebruiker te laten weten dat de bewerking niet kan worden uitgevoerd in plaats van de gegevens stilletjes te verwijderen.

Als een ping-lading nodig is, voert u de toepassing uit als root, of verleent u de cap_net_raw mogelijkheid met behulp van het setcap hulpprogramma.

Gebruik anders een overload van Ping.SendPingAsync die geen aangepaste payload accepteert of geef een lege array door.

Betreffende API's