ICMP hålslagning

Maintaining Access with ICMP Hole Punching
Upprätthålla åtkomst med ICMP Hålslagning.

ICMP-hålslagning är en teknik som används i applikationer för nätverksadressöversättare (NAT) för att upprätthålla ICMP-paketströmmar ( Internet Control Message Protocol) som passerar NAT. NAT- traversaltekniker krävs vanligtvis för klient-till-klient-nätverkstillämpningar på Internet som involverar värdar som är anslutna i privata nätverk , särskilt i peer-to-peer och VoIP-installationer ( Voice over Internet Protocol) .

ICMP-hålslagning etablerar anslutning mellan två värdar som kommunicerar över en eller flera nätverksadressöversättare i antingen en peer-to-peer- eller klient-server-modell . Vanligtvis används tredjepartsvärdar på kollektivtrafiknätverket för att upprätta UDP- eller TCP-porttillstånd som kan användas för direkt kommunikation mellan de kommunicerande värdarna, men ICMP-hålslagning kräver ingen tredje parts inblandning för att skicka information mellan en eller flera NAT:er genom att utnyttja en NAT:s lösa acceptans av inkommande ICMP Time Exceeded -paket.

När ett ICMP Time Exceeded-paket når destinations-NAT, tillåter godtyckliga data i paketet som förväntas av NAT-paketet att nå destinationsservern, vilket gör att destinationsservern kan erhålla klientens offentliga IP-adress och annan data som lagras i paketet från klienten .

Översikt

För närvarande utvecklades den enda metoden för ICMP-hålslagning eller hålslagning utan tredje parts inblandning (autonom NAT-traversal) av Samy Kamkar den 22 januari 2010 och släpptes i programvaran pwnat med öppen källkod, och metoden publicerades senare i IEEE. Enligt tidningen:

Den föreslagna tekniken förutsätter att klienten på något sätt har lärt sig den aktuella externa (globalt routbara) IP-adressen för serverns NAT. Nyckelidén för att göra det möjligt för servern att lära sig klientens IP-adress är att servern regelbundet skickar ett meddelande till en fast, känd IP-adress. Den enklaste metoden använder ICMP ECHO REQUEST-meddelanden till en icke-allokerad IP-adress, såsom 1.2.3.4. Eftersom 1.2.3.4 inte tilldelas kommer ICMP REQUEST inte att dirigeras av routrar utan en standardrutt; ICMP DESTINATION UNREACHABLE-meddelanden som kan skapas av dessa routrar kan bara ignoreras av servern. Som ett resultat av meddelandena som skickas till 1.2.3.4 kommer NAT att möjliggöra dirigering av svar som svar på denna begäran. Den anslutande klienten förfalskar då ett sådant svar. Specifikt kommer klienten att sända ett ICMP-meddelande som indikerar TTL_EXPIRED. Ett sådant meddelande skulle med rätta kunna överföras av vilken Internetrouter som helst och avsändaradressen förväntas inte matcha serverns mål-IP. Servern lyssnar efter (falska) ICMP-svar och initierar vid mottagandet en anslutning till avsändarens IP-adress som anges i ICMP-svaret.

Se även