OpenVPN sanoo yhdistetty ja liikenne ei liiku, lause joka kattaa ainakin viisi toisistaan riippumatonta vikaa. Palomuurisääntöjen muokkaaminen ennen kuin tiedät, mikä kerros pettää, kertoo tuntemattomat ja jättää seuraavalle insinöörille sotkun. Työskentele sen sijaan prosessista ulospäin, koska jokainen alla oleva askel joko selvittää yhden vaiheen tai kaventaa, missä paketti kuolee. Järjestys on tässä tärkeä: kaappaus, joka otetaan ennen kuin tiedät, mikä osoite on sidottu, todistaa jotain, vain ei sitä mitä tarvitset.

Pistoke on joko sidottu tai ei

Palvelu, joka ilmoittaa olevansa aktiivinen, voi silti olla sidottu osoitteeseen tai siirtoon, jota et koskaan tarkoittanut. Kysy pistokkeelta itseltään: ss -lunp luettelee UDP-kuuntelijat ja ss -ltnp TCP:t, ja sarake, jota kannattaa lukea, on paikallinen osoite, ei tila.

Tyhjä vastaus tarkoittaa yleensä yhtä kolmesta: prosessi poistui käynnistyksen jälkeen, se latasi toisen asetustiedoston, tai se kuuntelee eri osoitteessa kuin mihin soitetaan.

ss -lunp | grep 1194
ss -ltnp | grep 1194

Direktiivi local kiinnittää kuuntelijan yhteen osoitteeseen, joten samalla isännällä muualle tähtäävä asiakas hylätään, kun taas palvelu näyttää ulkoa edelleen terveeltä. Instanssin nimi voi myös osoittaa tiedostoon, jota et koskaan muokannut, mitä tapahtuu isännillä, joilla on kaksi profiilia rinnakkain.

Kaappaa ulompi paketti, ei tunnelia

Suodata fyysisellä rajapinnalla ja oikealla portilla, oma rajapinta korvattuna: tcpdump -ni eth0 udp port 1194. Lähtevät paketit, joille ei tule mitään takaisin, osoittavat siihen, mikä on ylempänä: palveluntarjoajan suodatus, NAT-laite tai etäosoite, joka ei ole se mitä luulet. Hiljaisuus molempiin suuntiin osoittaa asiakkaan reititykseen tai paikalliseen palomuuriin. Vastaukset, jotka saapuvat ilman tunnelin edistymistä, osoittavat ohjauskanavaan eli avaimen tai salauksen yhteensopimattomuuteen, eivät suodatukseen.

Kaappaa molemmat suunnat ja pidä tiedosto lyhyenä. Pitkä kaappaus hautaa kiinnostavat kolme sekuntia, ja vastaus on melkein aina ensimmäisessä vaihdossa.

Laskurit ensin, jäljitys vain kun ne valehtelevat

Aloita laskureista, koska ne eivät maksa mitään. Joko nft list ruleset tai iptables -L -n -v vastaa ainoaan kysymykseen, jolla on tässä merkitystä: osuiko sääntö? Järjestys ratkaisee tuloksen, koska ensimmäinen osuma voittaa, minkä vuoksi laaja DROP ennen myöhempää ACCEPT:iä jättää sen ACCEPT:in kuolleeksi ja minkä vuoksi säännön lisääminen niin harvoin korjaa mitään.

Omistajuus kompastuttaa myös. Ydin kohdistaa paikallisesti luodut paketit prosessille, joka avasi pistokkeen, ja OpenVPN toimii yleensä rootina, joten tavalliseen käyttäjätunnukseen sidottu sääntö ei näe koskaan tunnelin omaa liikennettä. Tarkista omistava UID ennen kuin päätät, että sääntö on väärä.

Vasta kun laskurit jäävät monitulkintaisiksi, loki on melun arvoinen, ja silloinkin vain kapealle siivulle: iptables-sääntö, joka rajoittaa nopeutta ja liittää etuliitteen lokiriveihinsä, tai nftables-sääntö, joka kantaa meta nftrace set 1:ää nft monitor trace:n käydessä. Jäljitys nimeää ketjun ja säännön, joka hyväksyi tai pudotti paketin. Poista molemmat jälkeenpäin ja pidä hyötykuorman kirjaus siitä erillään.

Tarkista myös siirto. TCP:hen rajattu palomuuripalvelu ei sano mitään UDP-kuuntelijasta sillä numerolla, joten oikein luettu sääntö voi silti pudottaa joka paketin.

Reititys ja paluutie

Hyväksytty paketti, joka silti katoaa, vaatii kohdepolkunsa tutkimista. ip route get raportoi yhdelle osoitteelle valitun reitin, ja käänteisen polun suodatus voi pudottaa vastauksen, joka saapuu rajapinnan kautta, jota päätaulu ei koskaan valitsisi. Oire näyttää täsmälleen palomuurin pudotukselta, minkä vuoksi tämä tarkistus tulee ennen seuraavaa NAT-sääntöä.

Yhdyskäytävällä tarkista välitys ja forward-ketju input-ketjun sijaan. Vahvista sitten, että kaukokanta tietää, miten lähdeosoitteeseen päästään, koska toimiva lähtöpolku ilman mitään paluuta on hiljaisuutta kummassakin tapauksessa.

Mitä muistiinpanon on sanottava

Kirjaa jokaisesta muutoksesta testattu vaihe, luettu todiste ja laskurin arvo sen molemmin puolin. Juuri se muistiinpano tekee "se toimii nyt" -lauseesta seuraavassa katselmoinnissa selviytyvän.

Kaksi oikotietä pitävät muistiinpanon rehellisenä. Paketti, joka ei koskaan poistunut isännältä, ei voinut tulla pudotetuksi säännöllä muualla, niin vakuuttavalta kaukokannan kokoonpano näyttäisikin. Paketti, joka lähti ja palasi, siirtää kysymyksen verkkokerroksen yläpuolelle, missä palomuurin laskureilla ei ole enää mitään sanottavaa.

Aiheeseen liittyvät artikkelit