VPN:n porttivaatimukset: kolme riviä, jotka kirjoitetaan ennen vertailua
Selvitä, mikä porttikysymys sinulla oikeastaan on: lähtevä kohde, saapuva julkaiseminen vai tunnelin oma kuljetus. Kysy sitten toimittajalta vain sitä.
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.
| Line | Who starts it | What can block it | Question for the provider |
|---|---|---|---|
| Outbound destination | Your application | Egress filter on the exit node | Is this protocol and port allowed to that destination? |
| Inbound publishing | A remote peer | No mapping, no public address, short lifetime | Which protocol, which external port, and how long does the mapping last? |
| Tunnel transport | Your client to the gateway | The access network drops that protocol | Does 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.
| Client | Outer transport | Default port | When it helps |
|---|---|---|---|
| OpenVPN | UDP | 1194 | Default mode; needs outbound UDP to pass |
| OpenVPN | TCP | 443 | UDP is dropped and TCP 443 is not |
| WireGuard | UDP | 51820 | Short handshake; there is no TCP mode |
| IKEv2/IPsec | UDP | 500 and 4500 | Mobile 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.