VPN-portkrav: tre liner som blir skrivne før du samanliknar
Finn ut kva portspørsmål du faktisk har: utgåande destinasjon, inngåande publisering eller transporten til sjølve tunnelen. Spør deretter leverandøren berre om det.
Portlister for VPN-tenester blir kopierte mellom samanlikningssider utan detaljen som avgjer om dei har noko å seie: kven som startar sambandet. Ei regel som tillèt utgåande TCP 443 seier ingenting om ein annan vert kan nå ein lyttar på maskina di. Skriv tre skilde krav før du samanliknar éin einaste plan, og merk kva oppgåva di faktisk treng. Dei fleste samanlikningar minkar til eitt kort spørsmål når det arket finst.
Del opp kravet før du les noka portliste
Tre liner dekkjer nesten kvart tilfelle: å nå ein destinasjon utanfor tunnelen, å publisere noko slik at andre kan kopla inn, og å bera sjølve tunnelen. Kvar line sviktar av ein annan grunn, og ein leverandørpolitikk som oppfyller éi, kan la dei to andre vere urørte. Å sortere oppgåva i rett line tek fem minutt og sparar ein diskusjon seinare.
| 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? |
Marknadsføringspåstandar gjer dei tre linene uklare med vilje. Ei P2P-løyve skildrar ein destinasjonspolitikk, ei dedikert adresse skildrar ei adresse, og påstanden om ingen portavgrensingar tyder vanlegvis at planen ikkje listar dei opp. Ingen av desse formuleringane svarar på dei andre.
Vel éin konkret flyt og skriv han som ei setning: initiator, transport, port, adressefamilie, retning. Ein nattleg tryggingskopiklient som lastar opp til ein ekstern vert, er berre utgåande. Ein speltenar på skrivebordet ditt som venner koplar til, er inngåande. Å køyre begge gjennom éin tunnel tyder at arket treng begge linene, ikkje eit kompromiss mellom dei.
Utgåande tilgang sviktar på destinasjonspolitikken, ikkje på tunnelen
Utgåande trafikk gjennom ein omsetjande gateway skapar tilstand. Den første pakken frå ei intern adresse og ein port byggjer ei omsetjingsoppføring, og svar samsvarar med henne, som er framferda skildra i RFC 3022. Den mekanismen er grunnen til at ei nettlesarfane vanlegvis fungerer heilt utan noka portførespurnad.
To ting bryt det framleis. Utgangsknuten kan filtrere destinasjonar eller portnummer han reknar som misbrukbare, og programmet kan lytte på ein port som utgangspolitikken aldri venta. Spør om destinasjonsparet i staden for om inngåande reglar, og vent ulike svar for TCP og UDP.
Mål før du diskuterer. Køyr desse på maskina som skal stå bak tunnelen, éin gong med tunnelen nede og éin gong med han oppe:
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
Dei same kommandoane, same destinasjon, to tunneltilstandar gjev ein operatør ei før-og-etter-samanlikning dei kan handle på. Bytt ut dokumentasjonsadressa med verten du faktisk treng; det viktige er at samanlikninga blir gjenteken, ikkje at noko tal ser imponerande ut.
Inngåande publisering treng ei kartlegging, ei adresse og ei levetid
Ingenting utanfrå kan starte ein samband til lyttaren din med mindre noko på den offentlege sida veit kvar det skal leverast. Ei statisk portreservering som operatøren held, ei kartlegging klienten ber om via UPnP, NAT-PMP eller PCP, og ei ruta offentleg adresse er tre ulike produkt med tre ulike grenser.
Still fem spørsmål til kven som helst av dei: kva protokoll, kva ekstern port, om den eksterne porten kan avvike frå den lokale, kva adressefamilie han dekkjer, og kor lenge kartlegginga overlever ei ny tilkopling. Ei reservering knytt til ein aktiv sesjon forsvinn når den sesjonen sluttar, kva plansida enn seier.
Stadfest den lokale halvdelen først, fordi ein død lyttar og ein blokkert inngåande veg ser like ut utanfrå:
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
Når den lokale førespurnaden returnerer 200 og ein førespurnad frå eit nettverk du ikkje kontrollerer framleis går ut på tid, sit gapet på den offentlege sida. Det er augneblinken for å oppgje protokoll og ekstern port til operatøren i staden for å skildre appen ved namn.
Transporten til sjølve tunnelen er eit eige spørsmål
Berarportane er den minste delen av problemet og den lettaste å slå opp. Standardverdiane varierer etter protokoll, og kva klienten kan forhandle om tel meir enn noka planbeskriving.
| 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 |
Eit nettverk som droppar utgåande UDP, godtek ein TCP 443-tunnel og avviser ein UDP-tunnel, så ein reserve-modus høyrer heime på kravarket. Å byte berar flyttar ikkje ein programport inne i tunnelen og utvidar ikkje ein destinasjonspolitikk; dei blir på sine eigne liner.
Fragmentering fortener éin test medan du er der, fordi ein tunnel som koplar til og deretter stoppar på store overføringar vanlegvis har feil MTU snarare enn ein lukka port:
ping -M do -s 1400 203.0.113.10 ping -M do -s 1372 203.0.113.10
På Windows er den same testen ping -f -l 1400 203.0.113.10. Set MTU-en til tunnelen under den største storleiken som passerer, og test deretter overføringa som feila på nytt.
Stadfest dei tre linene før du betaler for ein plan
Set dei tre linene på éi side og fyll kvar celle med eit målt resultat i staden for eit løfte. Desse kommandoane gjev den lokale halvdelen av den sida på om lag eitt minutt:
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
Les utdata som ei sjekkliste. Utgåande verkar når destinasjonen svarar med tunnelen oppe. Inngåande verkar berre når ein vert utanfor nettverket ditt når lyttaren på den eksterne porten. Beraren verkar når handtrykket blir fullført på ein protokoll som tilgangsnettverket ditt tillèt.
To vanar held arket ærleg. Noter datoen og klientversjonen ved sida av kvart resultat, fordi både leverandørpolitikkar og klientstandardar flyttar seg. Be deretter om den smalaste kartlegginga som tener flyten, fordi ein førespurnad om å opne alt vanlegvis gjev ei avvising eller eit mersal i staden for eit teknisk svar.