Port d'origen del client enfront del oient del servidor en un flux VPN
Compareu els dos números de port en un túnel: l'oient fix del servidor i l'origen efímer del client, i com la traducció del router se situa entremig.
En una mateixa conversa apareixen dos números i cap dels dos no és erroni. El registre del servidor mostra l'oient que ofereix el servei, l'ordinador portàtil mostra el sòcol que va enviar el datagrama, i un router entremig pot reescriure el segon a la sortida. Comparar els extrems de la conversa és més útil que comparar les xifres. La comparació de sota manté separats l'oient, el sòcol del client i l'origen traduït, perquè responen preguntes diferents.
Dos números que descriuen extrems oposats
El port configurat del servidor és la destinació on marca el client. El fixa la política, apareix al perfil i ha d'estar obert al costat del servidor. El port d'origen del client es tria localment, normalment del rang efímer, i existeix perquè la resposta tingui on arribar. Pot canviar a cada reconnexió, i res del disseny no depèn que sigui estable.
Un router entremig pot reescriure aquest origen en la seva pròpia assignació 'NAT'. Per això el número que s'observa al servidor sovint no té cap relació amb el que va triar l'ordinador portàtil.
On canvia el número d'origen a la sortida
Agafeu un exemple inventat d'IPv4: un client darrere d'un router que tradueix, un servidor amb un sol oient 'UDP' i un únic datagrama que travessa tots dos. La taula anomena cada extrem i què li passa, en lloc de reproduir el paquet en tres punts d'observació.
| 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 |
La destinació és constant a cada fila, i només canvia la identitat de l'origen. Requisits d'UDP NAT distingeixen una adreça i un port interns de l'assignació externa, que és exactament la diferència entre la segona i la tercera fila. Un router pot conservar el port d'origen del client o triar-ne un altre; conservar-lo no és una cosa que una aplicació hagi de suposar.
Llegiu els tres extrems des dels mateixos amfitrions
Els llistats de sota provenen de tres màquines diferents i, junts, mostren tota la conversa. Executeu el primer al servidor, el segon al client i el tercer allà on existeixi l'assignació. Una sola línia de registre no mostra mai els tres.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
El primer llistat demostra que el servidor està lligat al port del servei i mostra quin procés el posseeix. El segon mostra el sòcol local del client i la destinació on va marcar. El tercer mostra l'assignació que va crear el router, que és l'únic lloc on apareix l'origen traduït. Llegiu-los en aquest ordre i els dos números deixen de semblar contradictoris.
Què canvia una reconnexió i què no
Alguns routers conserven el port d'origen del client quan és lliure, i d'altres n'assignen un de diferent cada vegada. Tots dos comportaments són normals, i una aplicació que exigeixi el primer es trencarà amb el segon. Un canvi d'assignació després d'una reconnexió o d'un canvi de xarxa no és una fallada del servidor: el client obre un sòcol nou, el router assigna el que té i el servidor veu un origen nou al mateix oient. El que seria una fallada és esperar que el servidor accepti trànsit adreçat a un port de client arbitrari.
Els clients OpenVPN de la comunitat obtenen aquest comportament mitjançant nobind, que deixa que el sistema operatiu triï el port local; el port remot continua venint del perfil. Lligar-lo explícitament és una decisió deliberada, no un requisit del protocol. El servidor continua oferint un sol extrem mentre els clients trien les seves pròpies identitats locals.
Etiqueteu les capes per separat al registre
Dins del túnel hi ha una segona conversa amb ports propis. Una petició HTTPS portada pel túnel té destinació TCP 443, mentre que la connexió xifrada exterior fa servir UDP 1194, així que canviar el port d'origen exterior no canvia res del servei interior.
Fins i tot a la capa exterior, el protocol importa. UDP 1194 i TCP 1194 són extrems diferents, i un oient 'TCP' no rebrà mai un datagrama UDP pel fet que el número coincideixi. En documentar un desplegament, etiqueteu l'oient del servidor, el sòcol del client i l'origen traduït com tres coses diferents, i afegiu-hi el transport a cadascun.
Després deixeu que la política segueixi els rols. El servidor obre el transport previst al seu oient i encara autentica l'igual; el tallafoc del client admet les respostes al seu propi intercanvi de sortida sense publicar cap servei d'entrada. Un filtre sense estat necessita la direcció de retorn escrita explícitament, i aquesta és la raó pràctica per la qual la distinció importa més enllà dels diagrames endreçats.