Nätverk och protokoll

ICMP

Kontroll- och felrapporteringsmeddelanden som används av IP för diagnostik och feedback.

Var du ser detta: Syns i paketfångster, nätverksdiagram, brandväggsregler samt system- och nätverksloggar.

Vad det är

ICMP (Internet Control Message Protocol) är hur IP-enheter rapporterar fel och ger driftssignaler. När en router inte kan vidarebefordra ett paket, eller när en värd behöver berätta något för en avsändare om leverans, gör den det ofta med ett ICMP-meddelande.

Nyckelpunkter
  • ICMP är en del av IP, inte en separat transport som TCP eller UDP.
  • Används för fel (otillgänglig, fragmentering behövs) och för diagnostik (eko).
  • Att blockera alla ICMP kan bryta verklig trafik, särskilt Path MTU Discovery.

Hur det fungerar i stora drag

  1. En enhet bearbetar ett IP-paket. Om den kan vidarebefordra eller leverera den, behövs ingen ICMP.
  2. Om något går fel, till exempel ingen rutt, TTL har gått ut eller ett paket för stort, kan enheten generera ett ICMP-meddelande tillbaka till källan.
  3. ICMP-meddelandet innehåller en typ och kod som beskriver tillståndet och inkluderar vanligtvis en del av originalpaketet så att avsändaren kan identifiera flödet.
  4. Diagnostiska verktyg skickar ICMP Echo Requests, och destinationen svarar med Echo Replies, vilket är vad ping mäter.
  5. Traceroute manipulerar TTL värden så att routrar längs vägen skickar ICMP Tid överskriden, avslöjar hoppsekvensen.
  6. Brandväggar kan klassificera gränsen ICMP för att förhindra missbruk, så ICMP-beteende kan vara sprucket i riktiga nätverk.

Konkret exempel

En router tappar ett paket eftersom dess TTL nådde noll. Den skickar ICMP Time Exceeded tillbaka till källan. Ditt traceroute-verktyg samlar in dessa meddelanden för att kartlägga rutten ett hopp i taget.

Varför det är viktigt

IP är bästa försök. Utan feedback skulle avsändare inte ha någon aning om varför trafiken misslyckas. ICMP ger tillräckligt med information för felsökning och för viktiga mekanismer som Path MTU Discovery, samtidigt som IP är enkel.

Säkerhetsperspektiv

  • ICMP kan användas för skanning och för vissa reflektionsattacker, så nätverk filtrerar eller hastighetsbegränsar det ofta.
  • ICMP omdirigeringar och andra sällan använda typer kan vara riskabla om de aktiveras i opålitliga miljöer.
  • Det säkrare tillvägagångssättet är att tillåta nödvändiga ICMP för nätverkshälsa samtidigt som exponeringen från internetkanten begränsas.

Vanliga fallgropar

  • Blockerar alla ICMP. Vissa typer är viktiga för PMTU och för rent felbeteende.
  • Om du antar att ping-fel betyder att värden är nere. Många nätverk blockerar Echo men tillåter fortfarande TCP och UDP.
  • Ignorerar hastighetsbegränsning. Några få ICMP svar garanterar inte att varje paket får feedback.
  • Felläsning av traceroute-utgång när det finns asymmetriska rutter eller filtrerade ICMP.
  • Behandla ICMP som en säkerhetsrisk som standard snarare än att filtrera specifika typer på ett förnuftigt sätt.

FÖRDJUPNING

ICMP är inte en transport, det är feedback

ICMP meddelanden bärs inuti IP, men de är inte avsedda för applikationsnyttolaster. De finns så att värdar och routrar kan rapportera problem och tillhandahålla kontrollinformation. När en router inte kan vidarebefordra ditt paket kan den skicka ett ICMP-fel tillbaka till källan och förklara varför.

Du kan se det som nätverkets aviseringskanal. Utan det skulle många misslyckanden se identiska ut: din trafik skulle bara försvinna. Med ICMP kan du lära dig att en destination inte går att nå, att en tid att leva har gått ut eller att ett paket var för stort för en länk.

ICMP är därför nära kopplat till verklig verksamhet. Verktyg som ping och traceroute är inte magiska verktyg. De är praktiska omslag kring specifika ICMP meddelandetyper.

Ping: ekoförfrågan och ekosvar

Ping skickar en ICMP ekoförfrågan till ett mål och väntar på ett ekosvar. Begäran inkluderar en identifierare och sekvensnummer så att avsändaren kan matcha svar och mäta tur och retur tid. Om svar kommer tillbaka vet du att det finns grundläggande IP nåbarhet och att målet svarar.

Ping är användbart, men det är inte ett komplett test. Brandväggar kan blockera ekomeddelanden samtidigt som de tillåter verklig programtrafik, och vissa enheter begränsar ICMP svar. En misslyckad ping betyder inte alltid att en värd är nere, men en lyckad ping är ett starkt bevis på att vägen och målet lever.

I praktiken är ping också ett test av returvägen. Svaret måste komma tillbaka till dig. Det är därför asymmetriska routingproblem kan dyka upp som intermittenta ping-fel även när en riktning verkar bra.

Traceroute: lär dig vägen med TTL utgångsdatum

Traceroute fungerar genom att manipulera värdet IP Time To Live. Den skickar sonder med TTL inställd på 1, sedan 2, sedan 3, och så vidare. Varje router minskar TTL. När TTL når noll, tappar den routern paketet och skickar tillbaka ett ICMP Time Exceeded-meddelande, som avslöjar sig som ett hopp.

Så småningom når en sond destinationen. Beroende på traceroute-stilen kan destinationen svara med ett ICMP Port Unreachable, ett Echo Reply eller ett svar på applikationsnivå. Hur som helst, traceroute sys ihop hop för hop feedback från ICMP.

Eftersom routrar kan hastighetsgränsen ICMP, kan traceroute-utdata vara rörigt. Humle som saknas betyder inte alltid att en router saknas. De menar ofta att routern vidarebefordrade sonden men avböjde att skicka tillbaka ett ICMP-fel på grund av policy eller belastning.

Sökväg MTU-upptäckt beror på ICMP

Många system försöker undvika fragmentering av IP genom att upptäcka den maximala paketstorleken som kan korsa en väg. I IPv4 kan en avsändare ställa in Don't Fragment-biten. Om en router stöter på en länk som inte kan bära den storleken, tappar den paketet och skickar ett ICMP-meddelande som indikerar att fragmentering behövdes.

Avsändaren sänker sedan sin paketstorlek och försöker igen. Denna återkopplingsslinga är sökvägs-MTU-upptäckt. Det är avgörande för prestanda och korrekthet, särskilt när tunnlar är inblandade och effektiv MTU är mindre än du förväntar dig.

Om ICMP är blockerad kan sökvägen för MTU-upptäckt gå sönder och du får svarta håls beteende: små paket fungerar, stora stannar eller hänger sig. Det är därför att blockera alla ICMP är ett klassiskt självförvållat avintrång. Nätverket förlorar sin förmåga att förklara att paketen är för stora.