VPN-tunneli ei koskaan yhdisty: mihin paketit todella pysähtyvät
Tunneli, joka ei koskaan muodostu, jättää molempiin päihin tyhjän lokin. Selvitä, hylätäänkö GRE, ESP vai UDP 4500, ja tunnista operaattorin NAT ennen palvelimen muokkaamista.
Asiakas yrittää yhä uudelleen, loki pysähtyy ennen kättelyn valmistumista, eikä palvelin tallenna lainkaan mitään. Kuvio vie huomion pois tunnistetiedoista ja reitille: jokin kahden pään välissä kieltäytyy kuljettamasta protokollaa, jota tunneli tarvitsee. Päätä, mihin paketit pysähtyvät, ennen kuin kosket kumpaakaan kokoonpanoa, sillä suodatettu protokolla ja väärä salasana tuottavat useimmissa asiakkaissa saman ystävällisen virheen. Testit on järjestetty kustannuksen mukaan, halvin ensin.
Todista, mihin liikenne pysähtyy
Kaappaa samanaikaisesti asiakkaan lähtevältä liitännältä ja palvelimelta. Vertaa lähtenyttä saapuneeseen ja kirjaa, kummassa suunnassa ero näkyy.
Ei mitään palvelimella tarkoittaa, että reitti tai ensimmäinen NAT pudottaa liikennettä, kun taas saapumiset ilman vastauksia viittaavat palvelimen palomuuriin tai olemattomaan paluureittiin. Reititin, joka usein päättää tunneleita, ei useinkaan pidä hyödyllistä lokia, joten kaappauksesta tulee kirjaus. Kirjoita muistiin kohdeportti ja protokollanumero, sillä molemmat viat näyttävät asiakkaan ikkunassa samalta.
PPTP kuolee ilman protokollaa 47
PPTP kuljettaa ohjausta TCP 1723:ssa ja tietojaan GRE:n sisällä, joka on IP-protokolla 47 eikä porttinumero. Pelkän 1723:n edelleenlähetys tuottaa klassisen tuloksen: yhteys todennetaan ja hiljenee sitten, koska hyötykuorman kuljettavalle protokollalle ei ole sääntöä. Asiakas ei voi erottaa sitä hylätystä salasanasta, siksi kaappauksen on tultava ennen kokoonpanomuutoksia.
Läpivienti toimii vastakkaiseen suuntaan kuin saapuva edelleenlähetys, ja laiteohjelmisto käyttää melko usein samaa tunnistetta molemmille, tarpeeksi hämmentääkseen kaikki. Linux-asiakkaassa paikallinen palomuuri voi pudottaa GRE:n kauan ennen kuin reititin on mukana, joten protokolla 47 tarvitsee oman sääntönsä ja conntrack-apuri on ladattava. Ubuntun ufw pitää nämä säännöt before-tiedostossa, koska tavalliset allow-säännöt eivät voi ilmaista protokollanumeroa. Lataa palomuuri sen jälkeen uudelleen sen sijaan, että käynnistäisit koneen uudelleen.
# /etc/ufw/before.rules, inside *filter
-A ufw-before-input -p gre -j ACCEPT
sudo ufw allow 1723/tcp
sudo modprobe nf_conntrack_pptp
sudo conntrack -L | grep greL2TP ja IPsec kahden NAT:n takana
L2TP IPsec:n sisällä tarvitsee UDP 500 avainten vaihtoon, UDP 4500 kun NAT havaitaan, ja ESP:n protokollana 50. Jokainen niistä suodatetaan erikseen, joten yhden salliva sääntö ei todista mitään kahdesta muusta. Kaksi reititintä sarjassa kääntää jokaisen paketin kahdesti, eivätkä päät enää sovi siitä, mitä neuvoteltiin.
Sillaa ulompi modeemi tai kytke NAT pois sisemmästä reitittimestä, jotta julkinen osoite saavuttaa laitteen, joka päättää tunnelin. Jos kumpikaan ei ole mahdollista, tunneli on aloitettava kaksois-NAT:n rajan sisältä, ei päätettävä siellä.
Operaattorien verkot ja osoitteiden jakaminen
WAN-osoite alueella 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 tai 100.64.0.0/10 tarkoittaa, että reitittimellä ei ole julkista osoitetta eikä mikään internetistä tuleva saapuva edelleenlähetys tavoita sitä. Operaattoritason NAT suodattaa lisäksi protokollia, joita se ei odota, ja GRE on mobiililinkeillä usein uhri. Vertaa WAN-osoitetta itse reitittimessä, älä osoitetta, jonka hakupalvelu ilmoittaa sen takana olevalle asiakkaalle.
Saman reitittimen ajaminen kaapelilinjalla erottaa operaattorihavainnon kokoonpanovirheestä yhdellä testillä. Kun operaattori kieltäytyy protokollasta, jäljelle jäävät vaihtoehdot ovat eri kuljetus portissa 443 tai sisältä aloitettu tunneli.
Lue kuuntelijoiden luettelo ennen porttien sulkemista
Hälyttävä porttiskannaus on usein vain se toimintojoukko, joka toimitetaan käytössä. Inventoi kuuntelijat, yhdistä jokainen socket toimintoon ja kytke sitten toiminto pois portin estämisen sijaan, jotta kaksi näkymää eivät erkaannu.
ss -lntup
systemctl list-units --type=service --state=running | grep -i vpn
nc -vz 203.0.113.10 1723
nc -vzu 203.0.113.10 4500SoftEtherin oletusarvot ovat hyvä esimerkki: TCP 443, 992 ja 5555, ja L2TP/IPsec- ja DNS-tunnelitoiminnot lisäävät omat socketinsa. Näiden toimintojen kytkeminen pois poistaa kuuntelijat sen sijaan, että ne piilotettaisiin, ja ulkoiselta isännältä tehty koe kertoo, päästääkö operaattori portin ylipäätään läpi. Paikallisesti vastaava kuuntelija voi silti olla suljettu ylempänä, joten vertaa reitittimen omaa WAN-osoitetta siihen, mitä ulkoinen palvelu ilmoittaa.