tisdag, oktober 13, 2009

Varför Internet fortfarande är trasigt

Vad var det som hände med den svenska delen av Internet i går kväll egentligen?

Ponera att jag med min dator vill kontakta www.dn.se. Då måste min dator först av allt ta reda på vilken IP-adress som www.dn.se motsvarar. I normala fall skulle det fungera så här (överskådligt):
  1. Min dator frågar min internetoperatörs DNS-server om IP-adressen till www.dn.se.
  2. Internetoperatörens DNS-server kollar om det här är en adress som slagits upp nyligen, och svarar i så fall med det gamla, undansparade, svaret.
  3. I annat fall frågar den IIS' servrar om vilka DNS-servrar som har hand om domänen dn.se, och får tillbaka en lista av tre servrar, kristina.qbranch.se, maud.qbranch.se och grace.qbranch.se. (Det här svaret lägger den på minnet, för den händelse att vi vill prata med dem fler gånger.)
  4. Internetoperatörens DNS-server kontakter en godtycklig server bland dessa tre och frågar om IP-adressen till www.dn.se och får svaret 62.119.189.4. (Det här svaret lägger den också på minnet.)
  5. Och slutligen kommer svaret, 62.119.189.4, tillbaka till min dator.
Det som hände i går kväll var att steg 3 gick sönder. IIS' servrar lade under runt en halvtimme till ett extra ".se" på alla DNS-servernamn för domäner under .se, så den som exempelvis ville slå upp www.dn.se hänvisades till de icke-existerande servrarna kristina.qbranch.se.se, maud.qbranch.se.se och grace.qbranch.se.se.

Det som komplicerar saken är alla sparade svar. För stora sajter som www.dn.se gick det ganska bra, för sannolikheten är stor att en internetoperatörs DNS-server redan hade slagit upp www.dn.se nyligen, och alltså aldrig behövde göra ett nytt uppslag under tiden som avbrottet pågick.

Men för mer udda domäner, låt oss säga rebusrally.se, gör de sparade svaren saken tvärtom mycket värre. Ponera att någon försökte kontakta www.rebusrally.se under tiden avbrottet pågick. Dennes DNS-server hade förmodligen inget sparat svar, utan behövde göra en ny uppslagning, varvid den fick veta att den skulle kontakta ns1.loopia.se.se (vilket inte gick). Och det svaret lade den på minnet, så den kommer att fortsätta att tro att det är ns1.loopia.se.se som har hand om rebusrally.se, trots att felet i IIS' servrar är avhjälpt! Och det här drabbar alla kunder som använder den här DNS-servern.

Alla stora svenska internetoperatörer är medvetna om det här och har startat om sina DNS-servrar för att tömma dem på felaktiga sparade uppgifter, men det finns naturligtvis en oändlig mängd DNS-servrar runt hela världen som inte är omstartade och som fortfarande sitter med felaktigt data. Ett vanligt värde för hur länge man tillåter data att sparas är 86400 sekunder, det vill säga ett dygn, så inte förrän i kväll kommer det mesta återigen att fungera. Och det kan förekomma att vissa domäners data sparas ännu längre, kanske uppåt en vecka.

Att det här kunde hända är riktigt, riktigt illa. Jag förutspår att allehanda kroppsdelar, inte bara huvuden, kommer att rulla på IIS. Rimligen håller PTS just nu, even as we're speaking, på att kvittera ut tjänstebatongerna.

4 kommentarer:

Andreas Olsson sa...

En sådan helt förträfflig sammanfattning. Perfekt att peka folk på ju.

Måns sa...

Det finns ett kort meddelande om det hela nu http://www.iis.se/2009/10/13/felaktig-dns-information/
Men de fortsätter väl att utreda vem som råkat göra felet så risken att det händer igen minimeras. Det intressanta är väl att det här visar hur viktigt det är att köra dnssec och att dns är något som illvilliga krafter skulle kunna attackera.

Jonas Lejon sa...

Du glömde ett steg. Att en fråga går till rootnamnservrarna för att fråga var .SE finns

Leif Nixon sa...

Jonas: Jag skippade medvetet det steget för att inte bli för långrandig. (Jag skippade glue records också.)

 
MediaCreeper Creeper