Samassa keskustelussa esiintyy kaksi numeroa, eikä kumpikaan ole väärä. Palvelimen loki näyttää kuuntelijan, joka tarjoaa palvelun, kannettava näyttää soketin, joka lähetti datagrammin, ja välissä oleva reititin voi kirjoittaa toisen uudelleen ulospäin mennessä. Keskustelun päiden vertaaminen on hyödyllisempää kuin numeroiden vertaaminen. Alla oleva vertailu pitää kuuntelijan, asiakkaan soketin ja käännetyn lähteen erillään, koska ne vastaavat eri kysymyksiin.

Kaksi numeroa, jotka kuvaavat vastakkaisia päitä

Palvelimen määritetty portti on kohde, johon asiakas soittaa. Käytäntö kiinnittää sen, se näkyy profiilissa ja sen on oltava avoin palvelimen puolella. Asiakkaan lähdeportti valitaan paikallisesti, yleensä efemeerisestä alueesta, ja se on olemassa, jotta vastauksella olisi paikka laskeutua. Se voi muuttua joka uudelleenyhdistämisellä, eikä mikään suunnittelussa riipu sen pysyvyydestä.

Välissä oleva reititin voi kirjoittaa tuon lähteen omaan 'NAT'-mappaukseensa. Siksi palvelimella havaittu numero ei useinkaan liity mitenkään siihen, jonka kannettava valitsi.

Missä lähdenumero muuttuu matkalla ulos

Ota keksitty IPv4-esimerkki: asiakas kääntävän reitittimen takana, palvelin, jossa on yksi 'UDP'-kuuntelija, ja yksi datagrammi, joka kulkee molempien läpi. Taulukko nimeää jokaisen päätepisteen ja mitä sille tapahtuu sen sijaan, että paketti toistettaisiin kolmessa havaintopisteessä.

EndpointWhat stays fixedWhat changes on reconnectWho owns it
Server listenerThe service port and the address the profile namesNothing; the listener does not follow the clientThe server operator
Client socketThe destination it dialsThe local source port, chosen per socketThe client, or its operating system
Translated sourceUsually the public address of the routerThe port, and sometimes the address after a network switchThe NAT device or the upstream carrier

Kohde on vakio jokaisella rivillä, ja vain lähteen identiteetti muuttuu. UDP NAT -vaatimukset erottavat sisäisen osoitteen ja portin ulkoisesta mappauksesta, mikä on täsmälleen toisen ja kolmannen rivin ero. Reititin voi säilyttää asiakkaan lähdeportin tai valita toisen; säilyttäminen ei ole jotain, mitä sovelluksen pitäisi olettaa.

Lue kolme päätepistettä isänniltä itseltään

Alla olevat listaukset tulevat kolmelta eri koneelta ja näyttävät yhdessä koko keskustelun. Aja ensimmäinen palvelimella, toinen asiakkaalla ja kolmas siellä, missä mappaus on olemassa. Yksi lokirivi ei koskaan näytä kaikkia kolmea.

ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194

Ensimmäinen listaus todistaa, että palvelin on sidottu palveluporttiin, ja näyttää, mikä prosessi sen omistaa. Toinen näyttää asiakkaan paikallisen soketin ja kohteen, johon se soitti. Kolmas näyttää reitittimen luoman mappauksen, ja se on ainoa paikka, jossa käännetty lähde esiintyy. Lue ne tässä järjestyksessä, niin kaksi numeroa lakkaa näyttämästä ristiriitaisilta.

Mitä uudelleenyhdistäminen muuttaa ja mitä ei

Jotkin reitittimet säilyttävät asiakkaan lähdeportin, kun se on vapaa, ja jotkut jakavat joka kerta eri portin. Molemmat käyttäytymiset ovat normaaleja, ja sovellus, joka vaatii ensimmäistä, hajoaa toisella. Mappauksen muutos uudelleenyhdistämisen tai verkonvaihdon jälkeen ei ole palvelinvika: asiakas avaa uuden soketin, reititin jakaa sen, mitä sillä on, ja palvelin näkee uuden lähteen samassa kuuntelijassa. Vika olisi odottaa, että palvelin hyväksyy liikennettä, joka on osoitettu mielivaltaiseen asiakasporttiin.

Yhteisön OpenVPN-asiakkaat saavat tämän käyttäytymisen nobind kautta, mikä antaa käyttöjärjestelmän valita paikallisen portin; etäportti tulee edelleen profiilista. Nimenomainen sitominen on tietoinen valinta, ei protokollan vaatimus. Palvelin tarjoaa edelleen yhtä päätepistettä, kun asiakkaat valitsevat omat paikalliset identiteettinsä.

Merkitse kerrokset erikseen tietueeseen

Tunnelin sisällä on toinen keskustelu omine portteineen. Tunnelin kantaman HTTPS-pyynnön kohde on TCP 443, kun taas ulompi salattu yhteys käyttää UDP 1194:ää, joten ulomman lähdeportin muuttaminen ei muuta sisäisessä palvelussa mitään.

Myös ulommassa kerroksessa protokolla on merkityksellinen. UDP 1194 ja TCP 1194 ovat eri päätepisteitä, eikä 'TCP'-kuuntelija koskaan saa UDP-datagrammia siksi, että numero täsmää. Kun dokumentoit käyttöönoton, merkitse palvelimen kuuntelija, asiakkaan soketti ja käännetty lähde kolmeksi eri asiaksi ja lisää kullekin kuljetuskerros.

Anna sitten käytännön seurata rooleja. Palvelin avaa aiotun kuljetuksen kuuntelijassaan ja todentaa edelleen vastapuolen; asiakkaan palomuuri sallii vastaukset omaan lähtevään vaihtoonsa julkaisematta saapuvaa palvelua. Tilaton suodatin tarvitsee paluusuunnan nimenomaisesti kirjattuna, ja se on käytännön syy siihen, miksi erottelu on tärkeää muutenkin kuin siisteissä kaavioissa.

Aiheeseen liittyvät artikkelit