VPN-palvelujen porttiluettelot kopioidaan vertailusivujen välillä ilman sitä yksityiskohtaa, joka ratkaisee, ovatko ne merkityksellisiä: kuka aloittaa yhteyden. Sääntö, joka sallii lähtevän TCP 443:n, ei kerro mitään siitä, voiko toinen isäntä tavoittaa koneessasi olevan kuuntelijan. Kirjoita kolme erillistä vaatimusta ennen kuin vertailet yhtäkään pakettia, ja merkitse, mitkä tehtäväsi todella tarvitsee. Useimmat vertailut tiivistyvät yhteen lyhyeen kysymykseen, kun sellainen arkki on olemassa.

Erottele vaatimus ennen kuin luet yhtäkään porttiluetteloa

Kolme riviä kattaa lähes kaikki tapaukset: tunnelin ulkopuolella olevan kohteen tavoittaminen, jonkin julkaiseminen, jotta muut voivat yhdistää sisään, ja tunnelin itsensä kantaminen. Jokainen rivi epäonnistuu eri syystä, ja toimittajan käytäntö, joka täyttää yhden, voi jättää kaksi muuta koskemattomiksi. Tehtävän lajittelu oikealle riville kestää viisi minuuttia ja säästää väittelyn myöhemmin.

LineWho starts itWhat can block itQuestion for the provider
Outbound destinationYour applicationEgress filter on the exit nodeIs this protocol and port allowed to that destination?
Inbound publishingA remote peerNo mapping, no public address, short lifetimeWhich protocol, which external port, and how long does the mapping last?
Tunnel transportYour client to the gatewayThe access network drops that protocolDoes the client offer a fallback the local network permits?

Markkinointiväitteet hämärtävät kolme riviä tarkoituksella. P2P-lupa kuvaa kohdekäytäntöä, oma osoite kuvaa osoitetta, ja väite siitä, ettei porttirajoituksia ole, tarkoittaa yleensä, ettei paketti luettele niitä. Mikään näistä lauseista ei vastaa toisiin.

Valitse yksi konkreettinen virta ja kirjoita se lauseena: aloittaja, kuljetus, portti, osoiteperhe, suunta. Yöllinen varmuuskopiointiasiakasohjelma, joka lataa etäisäntään, on vain lähtevä. Työpöydälläsi oleva pelipalvelin, johon ystävät liittyvät, on saapuva. Molempien kuljettaminen yhden tunnelin läpi tarkoittaa, että arkki tarvitsee molemmat rivit, ei kompromissia niiden välillä.

Lähtevä pääsy epäonnistuu kohdekäytännössä, ei tunnelissa

Lähtevä liikenne kääntävän yhdyskäytävän läpi luo tilaa. Ensimmäinen paketti sisäisestä osoitteesta ja portista rakentaa käännöksen ja vastaukset täsmäävät siihen, mikä on RFC 3022:ssa kuvattu osoituskäyttäytyminen. Tämä mekanismi on syy siihen, miksi selaimen välilehti yleensä toimii ilman mitään porttipyyntöä.

Kaksi asiaa rikkoo sen edelleen. Poistumissolmu voi suodattaa kohteita tai porttinumeroita, joita se pitää väärinkäytettävinä, ja sovellus voi kuunnella portissa, jota poistumiskäytäntö ei koskaan odottanut. Kysy kohdeparista äläkä saapuvista säännöistä, ja odota erilaisia vastauksia TCP:lle ja UDP:lle.

Mittaa ennen kuin väittelet. Aja nämä koneessa, joka tulee istumaan tunnelin takana, kerran tunneli alas kytkettynä ja kerran ylös kytkettynä:

ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://example.com

Samat komennot, sama kohde, kaksi tunnelin tilaa antavat operaattorille ennen ja jälkeen -vertailun, jonka pohjalta toimia. Korvaa dokumentaatio-osoite isännällä, jota todella tarvitset; tärkeää on, että vertailu toistuu, ei se, että jokin luku näyttää vaikuttavalta.

Saapuva julkaiseminen tarvitsee osoituksen, osoitteen ja elinajan

Mikään ulkopuolella ei voi aloittaa yhteyttä kuuntelijaasi, ellei jokin julkisella puolella tiedä, minne se toimittaa. Operaattorin pitämä staattinen porttivaraus, asiakkaan pyytämä osoitus UPnP:n, NAT-PMP:n tai PCP:n kautta ja reititetty julkinen osoite ovat kolme eri tuotetta kolmella eri rajalla.

Esitä viisi kysymystä kenestä tahansa niistä: mikä protokolla, mikä ulkoinen portti, voiko ulkoinen portti poiketa paikallisesta, mitä osoiteperhettä se kattaa ja kuinka kauan osoitus kestää uudelleenyhdistämisen jälkeen. Aktiiviseen istuntoon sidottu varaus katoaa, kun istunto päättyy, mitä tahansa paketin sivu sanoo.

Varmista ensin paikallinen puoli, koska kuollut kuuntelija ja estetty saapuva reitti näyttävät ulkopuolelta samalta:

ss -lntup | grep -E ':(8080|51820)\b'
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080

Kun paikallinen pyyntö palauttaa 200 ja pyyntö verkosta, jota et hallitse, yhä aikakatkaistaan, aukko on julkisella puolella. Silloin kannattaa kertoa operaattorille protokolla ja ulkoinen portti sen sijaan, että kuvailisit sovelluksen nimeltä.

Tunnelin oma kuljetus on erillinen kysymys

Kantajan portit ovat ongelman pienin osa ja helpoimmin tarkistettava. Oletusarvot vaihtelevat protokollittain, ja se, mitä asiakas voi neuvotella, merkitsee enemmän kuin mikään paketin kuvaus.

ClientOuter transportDefault portWhen it helps
OpenVPNUDP1194Default mode; needs outbound UDP to pass
OpenVPNTCP443UDP is dropped and TCP 443 is not
WireGuardUDP51820Short handshake; there is no TCP mode
IKEv2/IPsecUDP500 and 4500Mobile clients; 4500 carries NAT traversal

Verkko, joka pudottaa lähtevän UDP:n, hyväksyy TCP 443 -tunnelin ja hylkää UDP:n, joten varatila kuuluu vaatimusarkille. Kantajan vaihtaminen ei siirrä sovellusporttia tunnelin sisällä eikä laajenna kohdekäytäntöä; ne pysyvät omilla riveillään.

Pirstoutuminen ansaitsee yhden kokeen, kun olet siellä, koska tunneli, joka yhdistyy ja sitten juuttuu suuriin siirtoihin, on yleensä väärällä MTU:lla eikä suljetulla portilla:

ping -M do -s 1400 203.0.113.10
ping -M do -s 1372 203.0.113.10

Windowsissa sama koe on ping -f -l 1400 203.0.113.10. Aseta tunnelin MTU alle suurimman läpimenevän koon, ja testaa sitten uudelleen siirto, joka epäonnistui.

Varmista kolme riviä ennen kuin maksat paketista

Laita kolme riviä yhdelle sivulle ja täytä jokainen solu mitatulla tuloksella lupauksen sijaan. Nämä komennot tuottavat sivun paikallisen puolen noin minuutissa:

ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
ping -M do -s 1400 203.0.113.10

Lue tuloste tarkistuslistana. Lähtevä toimii, kun kohde vastaa tunnelin ollessa päällä. Saapuva toimii vain, kun verkkosi ulkopuolinen isäntä tavoittaa kuuntelijan ulkoisessa portissa. Kantaja toimii, kun kättely valmistuu protokollalla, jonka käyttöverkkosi sallii.

Kaksi tapaa pitävät arkin rehellisenä. Kirjaa päivämäärä ja asiakasversio jokaisen tuloksen viereen, koska sekä toimittajien käytännöt että asiakkaan oletusarvot liikkuvat. Pyydä sitten kapeinta osoitusta, joka palvelee virtaa, koska pyyntö avata kaikki tuottaa yleensä kieltäytymisen tai lisämyynnin eikä teknistä vastausta.

Aiheeseen liittyvät artikkelit