Bronpoort van de client tegenover de listener van de server in een VPN-stroom
Vergelijk de twee poortnummers in één tunnel: de vaste listener van de server en de kortstondige bron van de client, en hoe de routervertaling daartussen zit.
In hetzelfde gesprek verschijnen twee nummers en geen van beide is fout. Het serverlog toont de listener die de dienst aanbiedt, de laptop toont de socket die het datagram heeft verzonden, en een router daartussen kan het tweede onderweg naar buiten herschrijven. De uiteinden van het gesprek vergelijken is nuttiger dan de cijfers vergelijken. De vergelijking hieronder houdt de listener, de clientsocket en de vertaalde bron apart, omdat ze verschillende vragen beantwoorden.
Twee nummers die tegenovergestelde uiteinden beschrijven
De geconfigureerde poort van de server is de bestemming die de client kiest. Die ligt vast door beleid, staat in het profiel en moet aan de serverkant open zijn. De bronpoort van de client wordt lokaal gekozen, meestal uit het efemere bereik, en bestaat zodat het antwoord ergens kan landen. Hij kan bij elke herverbinding veranderen, en niets in het ontwerp hangt ervan af dat hij stabiel blijft.
Een router daartussen kan die bron herschrijven in zijn eigen 'NAT'-mapping. Daarom heeft het nummer dat op de server wordt gezien vaak geen relatie met het nummer dat de laptop koos.
Waar het bronnummer onderweg naar buiten verandert
Neem een verzonnen IPv4-voorbeeld: een client achter een vertalende router, een server met één 'UDP'-listener en één datagram dat beide passeert. De tabel benoemt elk eindpunt en wat ermee gebeurt, in plaats van het pakket op drie observatiepunten opnieuw af te spelen.
| Endpoint | What stays fixed | What changes on reconnect | Who owns it |
|---|---|---|---|
| Server listener | The service port and the address the profile names | Nothing; the listener does not follow the client | The server operator |
| Client socket | The destination it dials | The local source port, chosen per socket | The client, or its operating system |
| Translated source | Usually the public address of the router | The port, and sometimes the address after a network switch | The NAT device or the upstream carrier |
De bestemming is in elke rij constant, en alleen de identiteit van de bron verandert. Eisen voor UDP NAT onderscheiden een intern adres en een interne poort van de externe mapping, en dat is precies het verschil tussen de tweede en de derde rij. Een router kan de bronpoort van de client behouden of een andere kiezen; behoud is niet iets wat een applicatie mag aannemen.
Lees de drie eindpunten op de hosts zelf
De lijsten hieronder komen van drie verschillende machines en tonen samen het hele gesprek. Voer de eerste uit op de server, de tweede op de client en de derde waar de mapping bestaat. Eén logregel toont nooit alle drie.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
De eerste lijst bewijst dat de server aan de dienstpoort is gebonden en toont welk proces hem bezit. De tweede toont de lokale socket van de client en de bestemming die hij koos. De derde toont de mapping die de router maakte, en dat is de enige plek waar de vertaalde bron verschijnt. Lees ze in die volgorde en de twee nummers zien er niet langer tegenstrijdig uit.
Wat een herverbinding verandert, en wat niet
Sommige routers behouden de bronpoort van de client als die vrij is, andere kennen elke keer een andere toe. Beide gedragingen zijn normaal, en een applicatie die het eerste eist, breekt op het tweede. Een wijziging van de mapping na een herverbinding of een netwerkwissel is geen serverfout: de client opent een nieuwe socket, de router kent toe wat hij heeft, en de server ziet een nieuwe bron op dezelfde listener. Een fout zou het zijn om te verwachten dat de server verkeer aanvaardt dat aan een willekeurige clientpoort is geadresseerd.
Community-OpenVPN-clients krijgen dit gedrag via nobind, waardoor het besturingssysteem de lokale poort mag kiezen; de externe poort komt nog steeds uit het profiel. Expliciet binden is een bewuste keuze, geen protocolvereiste. De server blijft één eindpunt aanbieden terwijl clients hun eigen lokale identiteiten kiezen.
Label de lagen afzonderlijk in het record
Binnen de tunnel is er een tweede gesprek met eigen poorten. Een HTTPS-verzoek dat door de tunnel wordt gedragen heeft bestemming TCP 443, terwijl de buitenste versleutelde verbinding UDP 1194 gebruikt, dus het wijzigen van de buitenste bronpoort verandert niets aan de binnenste dienst.
Zelfs op de buitenste laag is het protocol van belang. UDP 1194 en TCP 1194 zijn verschillende eindpunten, en een 'TCP'-listener zal nooit een UDP-datagram ontvangen omdat het nummer overeenkomt. Als je een uitrol documenteert, label dan de listener van de server, de socket van de client en de vertaalde bron als drie verschillende dingen, en voeg bij elk het transport toe.
Laat het beleid dan de rollen volgen. De server opent het bedoelde transport op zijn listener en authenticeert nog steeds de peer; de firewall van de client staat antwoorden op zijn eigen uitgaande uitwisseling toe zonder een inkomende dienst te publiceren. Een stateless filter heeft de retourrichting expliciet nodig, en dat is de praktische reden waarom het onderscheid ook buiten nette diagrammen telt.