Ugyanabban a beszélgetésben két szám jelenik meg, és egyik sem hibás. A szervernapló mutatja a szolgáltatást kínáló figyelőt, a laptop mutatja a datagramot küldő socketet, és egy köztes útválasztó kifelé menet átírhatja a másodikat. A beszélgetés két végpontjának összehasonlítása hasznosabb, mint a számjegyeké. Az alábbi összehasonlítás külön tartja a figyelőt, a kliens socketjét és a lefordított forrást, mert más-más kérdésre válaszolnak.

Két szám, amelyek ellentétes végpontokat írnak le

A szerver beállított portja az a cél, amelyre a kliens tárcsáz. Szabályzat rögzíti, megjelenik a profilban, és a szerver oldalán nyitva kell lennie. A kliens forrásportját helyben választják, általában az efemer tartományból, és azért létezik, hogy a válasznak legyen hova leszállnia. Minden újracsatlakozáskor változhat, és a tervezésben semmi nem függ attól, hogy stabil maradjon.

Egy köztes útválasztó átírhatja ezt a forrást a saját 'NAT'-leképezésébe. Ezért a szerveren megfigyelt számnak gyakran semmi köze ahhoz, amelyet a laptop választott.

Hol változik a forrásszám kifelé menet

Vegyünk egy kitalált IPv4-példát: egy kliens egy fordító útválasztó mögött, egy szerver egyetlen 'UDP'-figyelővel, és egyetlen datagram, amely mindkettőn átmegy. A táblázat megnevezi az egyes végpontokat és azt, ami velük történik, ahelyett hogy három megfigyelési ponton újrajátszaná a csomagot.

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

A cél minden sorban állandó, és csak a forrás azonossága változik. UDP NAT követelmények különböztetik meg a belső címet és portot a külső leképezéstől, ami pontosan a második és a harmadik sor közötti különbség. Az útválasztó megtarthatja a kliens forrásportját, vagy választhat másikat; a megtartás nem valami, amit egy alkalmazásnak feltételeznie kellene.

Olvassa ki a három végpontot magukból a gazdagépekből

Az alábbi listák három különböző gépről származnak, és együtt a teljes beszélgetést mutatják. Az elsőt a szerveren, a másodikat a kliensen, a harmadikat pedig ott futtassa, ahol a leképezés létezik. Egyetlen naplósor soha nem mutatja mindhármat.

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

Az első lista bizonyítja, hogy a szerver a szolgáltatáshoz kapcsolódó porton van, és megmutatja, melyik folyamat birtokolja. A második a kliens helyi socketjét és a tárcsázott célt mutatja. A harmadik az útválasztó által létrehozott leképezést mutatja, és ez az egyetlen hely, ahol a lefordított forrás megjelenik. Ebben a sorrendben olvassa őket, és a két szám többé nem tűnik ellentmondásosnak.

Mit változtat meg az újracsatlakozás, és mit nem

Egyes útválasztók megtartják a kliens forrásportját, ha szabad, mások minden alkalommal másikat osztanak ki. Mindkét viselkedés normális, és az elsőt megkövetelő alkalmazás a másodikon elromlik. A leképezés változása újracsatlakozás vagy hálózatváltás után nem szerverhiba: a kliens új socketet nyit, az útválasztó azt osztja ki, amije van, és a szerver új forrást lát ugyanazon a figyelőn. Hiba az lenne, ha elvárnánk, hogy a szerver egy tetszőleges kliensportra címzett forgalmat elfogadjon.

A közösség OpenVPN kliensei ezt a viselkedést a nobind révén kapják meg, amely az operációs rendszerre bízza a helyi port kiválasztását; a távoli port továbbra is a profilból jön. Az explicit kötés tudatos döntés, nem protokollkövetelmény. A szerver továbbra is egy végpontot kínál, míg a kliensek a saját helyi identitásukat választják.

Címkézze fel a rétegeket külön a rekordban

Az alagúton belül egy második beszélgetés folyik saját portokkal. Az alagút által szállított HTTPS-kérés célja TCP 443, míg a külső titkosított kapcsolat UDP 1194-et használ, ezért a külső forrásport megváltoztatása semmit nem változtat a belső szolgáltatáson.

Még a külső rétegen is számít a protokoll. Az UDP 1194 és a TCP 1194 különböző végpontok, és egy 'TCP'-figyelő soha nem kap UDP-datagramot csak azért, mert a szám egyezik. Amikor egy telepítést dokumentál, címkézze fel a szerverfigyelőt, a kliens socketjét és a lefordított forrást három különböző dologként, és mindegyikhez adja hozzá a szállítást.

Aztán hagyja, hogy a szabályzat kövesse a szerepeket. A szerver megnyitja a szándékolt szállítást a figyelőjén, és továbbra is hitelesíti a partnert; a kliens tűzfala engedi a saját kimenő cseréjére érkező válaszokat anélkül, hogy bejövő szolgáltatást tenne közzé. Az állapot nélküli szűrőnek ki kell írnia a visszirányt, és ez a gyakorlati oka annak, hogy a megkülönböztetés a rendezett ábrákon túl is számít.

Kapcsolódó cikkek