Noudatit tarkistuslistaa: kiellä lähtevä, salli tunneli, ota ufw käyttöön. Sitten asiakas odottaa kättelyssä eikä koskaan yhdistä, tai se yhdistää eikä mikään sivu lataudu. Molemmat epäonnistumiset tulevat samasta aukosta. Sääntö, joka sallii tunnelin olla olemassa, puuttuu, koska tunneli ei ole liitäntä, josta pakettisi lähtevät.

Miksi tun0:n sallinta ei aluksi vastaa mitään

tun0:n luo asiakas, kun istunto on olemassa. Datagrammit, jotka rakentavat tuon istunnon, ovat tavallisia UDP-paketteja, jotka on osoitettu palveluntarjoajalle porttiin 1194, ja ne lähtevät wlan0:n tai eth0:n kautta fyysisellä lähdeosoitteella. allow out on tun0 vastaa vain liikennettä, jonka lähtevä liitäntä on tun0, joten kättelyn aikana se ei vastaa yhtään mitään.

Laita default deny outgoing sen päälle, ja ulommat paketit pudotetaan ennen kuin liitäntä edes ilmestyy. Asiakas yrittää uudelleen, aikakatkaisee ja raportoi TLS- tai kättelyvirheen, mikä lähettää ihmiset penkomaan varmenteita ja MTU:ta, kun palomuuri syö yhteyden hiljaa. Sääntö, jonka piti pitää liikenteesi kurissa, estää tämän liikenteen pitämisen kurissa.

Refleksikorjaus tekee vuodosta pysyvän. sudo ufw allow out on wlan0, tai oletuksen kääntäminen takaisin sallimiseen, nostaa tunnelin ja jättää koneen ilman hätäkatkaisinta: seuraavan kerran tunnelin pudotessa kaikki jatkuu fyysisen sovittimen kautta. Menetin iltapäivän juuri tuohon muutospariin ennen kuin selvitin, mitä pakettia oikeastaan suodatin.

Mitä kaksi pakettijoukkoa tarvitsevat

Liikenteesi ylittää palomuurin kahdesti, kahdessa muodossa. Sisempi paketti kulkee tunnelin osoitteesta ulos tun0:n kautta. Ulompi paketti kulkee fyysisestä osoitteesta vastapuolelle, ja se on ainoa johdolla näkyvä asia. Yksi sääntö muotoa kohden:

sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'

Korvaa osoite ja portti oman profiilisi vastaavilla. WireGuardin vastapuolet vastaavat yleensä osoitteessa 51820/udp; TCP 443:n yli kulkevat OpenVPN-profiilit tarvitsevat sen portin sen sijaan. Yksityiskohdat eroavat, muoto ei: molemmat säännöt ovat kapeita, ja yhdessä ne määrittelevät ainoat kohteet, joihin kone voi päästä tunnelin ollessa alhaalla.

Järjestys on toinen myytti. Raakaa iptablesia käyttäen luet ketjun ylhäältä alas ja järkeilet, mikä sääntö voittaa. ufw ei ole ohut kääre kirjoittamasi listan ympärillä; se kääntää sääntösi omiin ketjuihinsa ja valitsee lisäyspisteet. ufw status tulostaa ne ufw:n järjestyksessä, ei sinun. Kun sääntö näyttää jätetyltä huomiotta, vertaa ufw show added käännettyyn joukkoon iptables -S | grep ufw ennen kuin kirjoitat mitään uudelleen.

Poikkeuksen on pysyttävä yhden osoitteen levyisenä

Vastapuolen sääntö on oikea vain niin kauan kuin se nimeää osoitteen, jota asiakas valitsee. Palveluntarjoajat kierrättävät päätepisteitä, ja isäntänimen ratkaiseva profiili seuraa DNS-muutosta uuteen osoitteeseen, kun sääntö osoittaa edelleen vanhaan. Kun kuukausia toiminut tunneli lakkaa nousemasta, vertaa säännön osoitetta siihen, mitä asiakas tavoittelee, ennen kuin laajennat mitään.

Laajentaminen koko aliverkkoon tai jokaiseen kohteeseen portissa 1194 muuttaa käytännön takaisin palomuuriksi, jossa on reikä. Poikkeus on hätäkatkaisin; kun se on leveä, ei ole enää mitään katkaistavaa. Pidä se yhdessä osoitteessa ja jätä kommentti, joka nimeää profiilin ja palveluntarjoajan, johon se kuuluu, sillä kuuden kuukauden päästä osoite näyttää mielivaltaiselta.

Nimien ratkaisu ansaitsee oman rivinsä. Haku tapahtuu ennen kuin tunnelia on olemassa, fyysisen liitännän kautta, joten tiukka lähtevän kiellon käytäntö voi jättää asiakkaan kykenemättömäksi löytämään omaa palvelintaan. Salli portti 53 ratkaisijasi osoitteeseen, tai ratkaise kerran ja kiinnitä osoite profiiliin. DNS:n salliminen jokaisella liitännällä on päätös, ei oletus.

Rakenna käytäntö ennen kuin tunnelia tarvitaan

ufw enable soveltaa koko käytännön kerralla ja lataa ketjunsa uudelleen, ja oletuskäytännön muuttaminen käynnissä olevassa palomuurissa lataa ne myös uudelleen. ufw-käsikirja varoittaa, että tämä voi pudottaa olemassa olevia yhteyksiä, kuten SSH:n. Siksi komennot menevät tässä järjestyksessä, SSH-sääntö ennen käyttöönottoa ja konsoli-istunto avoinna:

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose

ufw reset on jätetty tarkoituksella tuon lohkon ulkopuolelle. Se poistaa jokaisen säännön ja poistaa palomuurin käytöstä, ja etähäkissä seuraava käyttöönotto on se, joka pudottaa istuntosi. Jos silti nollaat, lisää SSH-sääntö ja vahvista toinen reitti takaisin konsolin kautta ennen kuin jatkat.

Järjestys ei ole kosmeettinen. ufw:n ollessa käynnissä lisätyt säännöt eivät huuhtele mitään, mutta hetkellä, jolloin käännät oletuskäytännön, ketjut latautuvat uudelleen, ja istunto, jonka vanha käytäntö salli, menee niiden mukana. Tee oletukset, sallinnat ja käyttöönotto yhdellä kertaa, kun sinulla on vielä sisäänpääsy, joka ei riipu koneesta.

Testaa estetty tila ja pidä peruutus tallessa

Testaamaton hätäkatkaisin on arvaus. Katkaise asiakas tahallasi ja yritä ladata sivu: sen on epäonnistuttava. Yhdistä uudelleen, ja sen on palauduttava koskematta sääntöön. sudo ufw status verbose vahvistaa oletukset ja lokituksen tilan, ja ufw status numbered näyttää, mikä testisääntö poistaa, kun se elää tarkoituksensa ohi.

Pidä käänteinen skripti etenevän vieressä. Kone, jossa on lähtevän kielto ja kuollut tunneli, ei voi ladata omaa korjaustaan, joten peruutuksen on oltava levyllä ja konsolista luettavissa:

sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

Aja se, kun tunneli on jo alhaalla ja säännöt on otettava pois, ei rutiinivaiheena. Ennen kuin suljet päätteen, neljän asian on pidettävä: vastapuolen sääntö nimeää täsmälleen yhden osoitteen, DNS:llä on nimetty poikkeus, käyttöönotto tuli sallintojen jälkeen, ja tunnelin vetäminen tappaa tavallisen liikenteen tappamatta asiakasta lopullisesti.

Aiheeseen liittyvät artikkelit