Në të njëjtin bisedë shfaqen dy numra dhe asnjëri nuk është i gabuar. Regjistri i serverit tregon dëgjuesin që ofron shërbimin, laptopi tregon soketin që dërgoi datagramin, dhe një ruter në mes mund ta rishkruajë të dytin në dalje. Krahasimi i skajeve të bisedës është më i dobishëm se krahasimi i shifrave. Krahasimi më poshtë mban të ndara dëgjuesin, soketin e klientit dhe burimin e përkthyer, sepse përgjigjen për pyetje të ndryshme.

Dy numra që përshkruajnë skaje të kundërta

Porti i konfiguruar i serverit është destinacioni ku klienti telefonon. Fiksohet nga politika, shfaqet në profil dhe duhet të jetë i hapur në anën e serverit. Porti burim i klientit zgjidhet lokalisht, zakonisht nga diapazoni efemer, dhe ekziston që përgjigja të ketë ku të aterojë. Mund të ndryshojë në çdo rilidhje, dhe asgjë në dizajn nuk varet nga qëndrueshmëria e tij.

Një ruter në mes mund ta rishkruajë atë burim në hartëzimin e vet 'NAT'. Prandaj numri i vëzhguar në server shpesh nuk ka asnjë lidhje me atë që zgjodhi laptopi.

Ku ndryshon numri i burimit në dalje

Merrni një shembull IPv4 të trilluar: një klient pas një ruteri që përkthen, një server me një dëgjues 'UDP' dhe një datagram që kalon të dyja. Tabela emërton çdo skaj dhe çfarë i ndodh, në vend që ta riprodhojë paketën në tre pika vëzhgimi.

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

Destinacioni është konstant në çdo rresht, dhe ndryshon vetëm identiteti i burimit. Kërkesat e UDP NAT dallojnë një adresë dhe port të brendshëm nga hartëzimi i jashtëm, që është pikërisht dallimi mes rreshtit të dytë dhe të tretë. Një ruter mund ta ruajë portin burim të klientit ose të zgjedhë një tjetër; ruajtja nuk është diçka që një aplikacion duhet ta supozojë.

Lexoni tre skajet nga vetë hostet

Listat më poshtë vijnë nga tre makina të ndryshme dhe së bashku tregojnë të gjithë bisedën. Ekzekutoni të parën në server, të dytën në klient dhe të tretën kudo ku ekziston hartëzimi. Një rresht i vetëm regjistri nuk i tregon kurrë të tre.

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

Lista e parë provon se serveri është i lidhur me portin e shërbimit dhe tregon cili proces e zotëron. E dyta tregon soketin lokal të klientit dhe destinacionin ku telefonoi. E treta tregon hartëzimin e krijuar nga ruteri, dhe është i vetmi vend ku shfaqet burimi i përkthyer. Lexojini në atë rend dhe dy numrat nuk duken më kontradiktorë.

Çfarë ndryshon rilidhja dhe çfarë jo

Disa ruterë e ruajnë portin burim të klientit kur është i lirë, dhe të tjerë caktojnë një tjetër çdo herë. Të dyja sjelljet janë normale, dhe një aplikacion që kërkon të parën do të thyhet në të dytën. Ndryshimi i hartëzimit pas një rilidhjeje ose një ndryshimi rrjeti nuk është defekt i serverit: klienti hap një soket të ri, ruteri cakton atë që ka, dhe serveri sheh një burim të ri në të njëjtin dëgjues. Defekt do të ishte të pritej që serveri të pranonte trafik të adresuar drejt një porti arbitrar klienti.

Klientët OpenVPN e komunitetit e marrin këtë sjellje përmes nobind, i cili lejon sistemin operativ të zgjedhë portin lokal; porti i largët ende vjen nga profili. Lidhja e qartë është një zgjedhje e vetëdijshme, jo një kërkesë e protokollit. Serveri vazhdon të ofrojë një skaj ndërsa klientët zgjedhin identitetet e tyre lokale.

Etiketoni shtresat veçmas në regjistër

Brenda tunelit zhvillohet një bisedë e dytë me porte të vetat. Një kërkesë HTTPS e transportuar nga tuneli ka destinacion TCP 443, ndërsa lidhja e kriptuar e jashtme përdor UDP 1194, prandaj ndryshimi i portit burim të jashtëm nuk ndryshon asgjë në shërbimin e brendshëm.

Edhe në shtresën e jashtme protokolli ka rëndësi. UDP 1194 dhe TCP 1194 janë skaje të ndryshme, dhe një dëgjues 'TCP' nuk do të marrë kurrë një datagram UDP vetëm sepse numri përputhet. Kur dokumentoni një vendosje, etiketoni dëgjuesin e serverit, soketin e klientit dhe burimin e përkthyer si tre gjëra të ndryshme, dhe shtoni transportin për secilin.

Pastaj lëreni politikën të ndjekë rolet. Serveri hap transportin e synuar në dëgjuesin e vet dhe ende vërteton palën; muri i zjarrit i klientit lejon përgjigjet ndaj shkëmbimit të tij dalës pa publikuar një shërbim hyrës. Një filtër pa gjendje ka nevojë për drejtimin e kthimit të shkruar qartë, dhe ky është arsyeja praktike pse dallimi ka rëndësi përtej diagrameve të rregullta.

Artikuj të ngjashëm