Dva dizajna, jedna HTTPS aplikacija, a paket u svakom ide drugim putem. Prosljeđivanje porta mijenja gdje se paket dostavlja i ostalo ostavlja na miru. VPN prvo nosi taj paket unutar drugog paketa, pa slušalac aplikacije vidi drugi izvor i manji najveći korisni teret. Enkripcija oko koje se ljudi svađaju prisutna je u oba slučaja, jer je aplikacija i dalje HTTPS; razlikuje se to ko može otvoriti vezu i šta mreža između može promatrati. Ta razlika rješava većinu praktičnih pitanja.

DNAT pravilo prepisuje odredište i tu staje

Na Linux gatewayu objavljivanje servisa znači pravilo u PREROUTING lancu nat tablice, ili ekvivalent u nftablesu. Pravilo poklapa javnu adresu i port, zatim prepisuje odredište na privatnu adresu aplikacije. Izvorna adresa, izvorni port i korisni teret ostaju netaknuti, a conntrack bilježi mapiranje kako bi se odgovori prepisali natrag na izlazu. Ponašanje je tradicionalni model prevođenja adresa opisan u RFC 3022.

sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 443 \
  -j DNAT --to-destination 10.20.30.40:443
sudo iptables -t nat -L PREROUTING -n -v
sudo conntrack -L -p tcp --dport 443

Slušalac aplikacije nikad ne sazna da je veza stigla kroz prevođenje. Vidi stvarnu izvornu adresu klijenta, što je korisno za pristupne zapise i ograničenja brzine, i odgovara na privatnu adresu jer conntrack obrće mapiranje. Ništa na tom putu ne dešifrira niti ponovo šifrira: TLS i dalje radi između klijenta i vlastitog certifikata aplikacije.

Pravilo također utvrđuje načine kvara na koje ćete kasnije naići. Ako gateway prosljeđuje, ali host aplikacije nema povratni put do klijenta, odgovori odlaze s pogrešnim izvorom i rukovanje se zaustavlja. Ako se drugo pravilo poklopi prvo, redoslijed odlučuje ishod, a iptables -t nat -L -n -v pokazuje brojače koji dokazuju koje je pravilo uzelo paket.

Tunel zamotava paket prije nego što ga slušalac vidi

VPN uopće ne objavljuje aplikaciju. Klijent gradi vanjski paket adresiran na javnu adresu gatewaya, šifrira unutarnji paket u njemu, a gateway dešifrira i usmjerava unutarnji paket na privatno odredište. Kod WireGuarda vanjski prijevoz je UDP, obično na visokom portu; kod OpenVPN preko TCP 443 vanjski paket izgleda kao TLS svemu što promatra put.

Unutar tunela unutarnji paket zadržava privatne adrese: klijentova adresa tunela, recimo 10.8.0.6, i aplikacija na 10.20.30.40. Slušalac zato vidi izvor iz bazena tunela, a svaki klijent dijeli taj gateway kao sljedeći skok. Pristupni zapisi iza VPN-a često pokazuju gateway umjesto korisnika upravo zato, osim ako gateway čuva izvorni izvor.

Zamotavanje košta prostor u zaglavlju i to je jedina razlika na razini mehanizma s posljedicom koju možete mjeriti. Vanjsko IP zaglavlje plus UDP plus WireGuardovo vlastito zaglavlje jedu MTU puta, pa se veliki paketi moraju fragmentirati ili unutarnji TCP stog mora ograničiti MSS. Prijenos koji radi preko proslijeđenog puta može se zaglaviti na tunelu kada međuuređaj odbaci ICMP koji bi signalizirao manji MTU.

ip route get 10.20.30.40
ping -M do -s 1400 10.20.30.40
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
  -j TCPMSS --clamp-mss-to-pmtu

Izloženost se odlučuje na ulazu, ne šifrom

Oba dizajna završavaju na istom TLS slušalcu, pa oba nasljeđuju isti certifikat, iste verzije protokola i istu prijavu aplikacije. Mijenja se to kome je dopušteno započeti rukovanje. Kod javnog prosljeđivanja svaki host koji dosegne 203.0.113.10:443 dobiva TCP rukovanje i TLS ClientHello prije nego što se autorizacija aplikacije uopće pogleda. Kod pristupa samo kroz tunel slušalac je dostupan samo s adresa koje gateway usmjerava u tunel, a SYN stranca umire na politici gatewaya.

Ta razlika tiče se dostupnosti, ne povjerljivosti. Proslijeđena HTTPS usluga nije običan tekst, a VPN ne uklanja potrebu za autentikacijom aplikacije: prijem u tunel odgovara smije li uređaj slati pakete u ovu mrežu, dok aplikacija za datoteke odgovara smije li korisnik čitati dokument. Miješanje to dvoje je način na koji timovi završe s VPN-om koji daje cijeli LAN i aplikacijom s jednom zajedničkom lozinkom.

Pregledajte slušalac i politiku odvojeno, jer bilo koje može biti šire nego što pretpostavljate:

sudo ss -ltnp 'sport = :443'
sudo nft list ruleset
openssl s_client -connect 203.0.113.10:443 -servername files.example.com </dev/null

Ako ss pokaže da je slušalac vezan na 0.0.0.0, aplikacija je dostupna odakle god usmjeravanje i vatrozidna politika dopuštaju, a prosljeđivanje je samo jedan od načina ulaska. Vezanje na privatnu adresu ili ograničavanje raspona izvora u vatrozidu odvojena je odluka od odabira VPN-a i ona zapravo sužava izloženost.

Mjerite put, ne oznaku

Kada netko tvrdi da je prosljeđivanje brže, poštena usporedba drži sve ostalo stalnim: isti klijent, ista pristupna mreža, ista datoteka, ista TLS konfiguracija, isti host aplikacije. Pokrenite prijenos dvaput po putu i zabilježite ukupno vrijeme, broj kvarova i responzivnost, a ne izlaz nepovezanog testa brzine.

curl -sS -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' \
  https://files.example.com/report.pdf
mtr -rwc 20 203.0.113.10
mtr -rwc 20 10.20.30.40

Ti brojevi razdvajaju uspostavljanje veze od vremena prijenosa, što je važno jer se dva puta obično razlikuju u povratnom kašnjenju i MTU-u, a ne u cijeni šifre. TLS rad se odvija na krajnjim točkama u oba dizajna, a tunel dodaje inkapsulaciju, drugu rutu i možda zaposleniji gateway. Ako je put tunela dulji ili je njegov gateway opterećen, razlika pripada putu, a ne riječi enkripcija.

Odaberite ulaznu politiku koja usluzi stvarno treba, zatim odlučite opravdava li izmjerena razlika njezinu promjenu. Javno prosljeđivanje odgovara usluzi namijenjenoj otvorenom internetu, uz ograničenja izvora, ažuriran TLS i nadzor ispred. Pristup samo kroz tunel odgovara internom alatu čiji su korisnici već upisani, pod uvjetom da su usmjeravanje gatewaya i dopuštenja aplikacije uži od cijelog LAN-a.

Prije nego dizajn proglasite završenim, potvrdite četiri stvari: na koju je adresu slušalac vezan, koje pravilo ili ruta propušta paket, radi li povratni put sa stvarne klijentove adrese i preživljavaju li veliki korisni tereti MTU. Za svako od toga postoji naredba gore i nijedno ne odgovara riječ sigurno ni grafikon propusnosti.

Povezani članci