Det saknas här lite information om hur IP, TCP, NAT och CGNAT i allmänhet fungerar. Så jag tänker att jag skriver lite för att informera. Ska försöka hålla det på så basic nivå det går och ändå täcka det viktiga som är relevant för denna artikel. (Någon enstaka lögn har jag skickat med bara för skojs skull, men det mesta jag skriver är sant.)
Varje dator på Internet har en IP-adress. Skrivs normalt som 4 tal mellan 0-255 med punkter mellan. T.ex. 192.0.2.123. Tyvärr, när man uppfann Internet för länge sedan så tog man inte höjd för att det skulle finnas flera miljarder datorer och enheter på Internet. Det finns i teorin maximalt 256^4 = cirka 4 miljarder unika IP-adresser. I praktiken, av olika anledningar som är för långtråkiga att gå in på just nu, är det betydligt färre som är användbara, eftersom många IP-adresser är reserverade för specifika syften.
4 miljarder är inte så mycket, när man tänker på att det är 10 miljarder på jorden, och många har fler än en aktiv enhet som behöver en IP-adress. Inom mitt synfält har jag t.ex. två datorer, en TV, två spelkonsoller, och en router. Det räcker inte till så att alla har en unik IP-adress.
Till en början så löste man detta genom en teknik som kallas för NAT. NAT står för Network Address Translation, och det är en teknik som innebär att man tilldelar "privata" IP-adresser på sitt lokala nätverk. Min dator hemma t.ex. kanske har IP-adressen 192.168.0.123, men det har även många andras privata datorer ute i världen. Den IP-adressen används bara i det interna nätverket. När datorn vill ut på "stora" Internet utanför ditt hem, så gör routern i ditt hem en habrovink. Den får in ett paket som ska från din lokala dators IP-adress, och skriver om paketet, så att den istället använder den enda publik IP-adress som routern har tilldelat till sig. På det sättet kan du ansluta många datorer till ditt hemmanät trots att du bara har en enda publik, "riktig" IP-adress.
För att detta ska funka så måste routern också veta vart den ska skicka sina svar. Om routern får tillbaka ett svar från en server måste ju routern veta vart svaret ska skickas. Det kan ju vara flera datorer på det lokala nätverket som pratar med samma server, därför räcker det inte bara med att kolla på IP-adresser. Där kollar man istället på portnummer.
Portnummer är ett 16-bitars heltal (tal mellan 0 och 65535) som identifierar en specifik anslutning. Det är egentligen tänkt för att en dator ska kunna ha flera parallella anslutningar igång mot en specifik server, och portnumren används då för att skilja på de olika anslutningarna. En NAT-router översätter inte bara IP-adresser utan översätter även portnummer som en del av sin funktion, och håller i sitt minne en tabell över vilka externa portnummer som går mot vilka interna portnummer. På det sättet kan trafiken flöda fritt.
Med andra ord, om någon gör en anslutning från ditt interna LAN så går det inte att veta vilken dator på LAN:et du faktiskt pratar med, utan att även titta på portnumren på anslutningen och slå upp dessa mot tabeller.
Numera räcker det dock inte med att varje hushåll får en enda IP-adress som de ska dela på, utan idag måste internetleverantörerna göra så att flera hushåll får dela på samma IP-adress. (Detta är som bekant en konsekvens av coronapandemin, som orsakat alla möjliga sorters brister.)
Det gör alltså att, om man bara har en enda IP-adress så kan man inte veta vilket hushåll som gjort förfrågan. Man måste även ha det portnummer förfrågan kommit från.
Till skillnad från hemmaroutrar, som tilldelar portnummer helt dynamiskt, brukar ofta operatörers CGNAT-burkar tilldela spann om 256 portar. Det gör att varje hushåll kan etablera max 256 anslutningar, vilket kan ställa till med problem för t.ex. peer to peer-anslutningar och annat (man får slut på portnummer), men detta underlättar även vid missbruk av nätet, genom att om man vet vilket portnummer frågan kommit från (loggas ofta men inte alltid), så kan man också identifiera ett specifikt hushåll.
Jag är inte helt säker på om det är så här Bahnhof implementerat sin CGNAT, men det hade inte förvånat mig eftersom detta är väldigt vanligt.
Om frågeställaren inte har information om vilket portnummer anslutningen kommit från kan Bahnhof inte identifiera abbonenten.
Nyheten från PTS ger skin av att Polisen begär ut information, men inte har med information om portnumret. Då kan inte operatören ta fram några abbonentuppgifter. I bästa fall kan de ta fram information om flera hundra hushåll som delat på denna adress.
Det är ju dock också möjligt att artikeln är luddigt skriven. En annan möjlig tolkning (enda välvilliga tolkningen där PTS inte framstår som totala idioter) är att Polisen faktiskt skickat med information om portnummer, men att Bahnhof i det läget inte haft några loggar över vem som haft vilka IP-adresser. Det är i så fall förmodligen ett brott mot lagstiftningen att lägga upp sin tjänst på det sättet. (Det kan man tycka vad man vill om, men så är det.) I så fall så måste Bahnhof börja logga vem som använder vilka portnummer i deras CGNAT-burkar. Jag tror dock att de redan gör det, eftersom de själva säger att det krävs ett portnummer för att ta fram informationen.
CGNAT gör det svårare att utreda brott om man i sina system inte loggar portnummer tillsammans med IP-adressen. Det är en konsekvens av teknikutvecklingen, och här måste nätoperatörer, tjänsteoperatörer, och polis hänga med. Jag kan säga att det finns gott om IT-system som ni säkert känner till och besöker som loggar information om IP-adresser, men inte portnummer. Det är allas ansvar att hänga med i denna teknikutveckling för att kunna bekämpa (riktiga) brott (inte fildelning) på nätet.