Palomuurilomakkeet kysyvät TCP-porttia, ja ilmeinen vastaus on 50. Se vastaus ei salli mitään, koska ESP on IP-protokolla numero 50 eivätkä protokollanumerot ole portteja. Kaksi nimiavaruutta jakavat pienet kokonaisluvut eikä mitään muuta, ja virhe pysyy näkymättömänä, kunnes IKE päättyy eikä suojattu liikenne koskaan saavu.

Kaksi nimiavaruutta, jotka jakavat pienet luvut

IP-otsake kuljettaa protokollakenttää, joka nimeää seuraavan: 6 TCP:lle, 17 UDP:lle, 1 ICMP:lle, 50 ESP:lle, 51 AH:lle. TCP- tai UDP-otsake kuljettaa porttinumeroita, jotka valitsevat prosessin kohdeisännässä. Protokolla 50 ja TCP-portti 50 ovat toisistaan riippumattomia arvoja, mutta dialogi voi saada ne näyttämään vaihdettavilta.

Siksi portin edelleenlähetyssääntö ei voi ilmaista natiivia ESP:tä. Ei ole ESP-kohdeporttia, jota voisi edelleenlähettää, eikä laite, joka ymmärtää vain porttisääntöjä, omaa lainkaan sanastoa sille paketille. Oikea sääntö nimeää IP-protokollan. Mikä tahansa porttidialogi on väärä työkalu sille paketille.

Sekavuudella on toinenkin puoli. Kun paketti on salattu, kaikki sen sisällä on läpinäkymätöntä, mukaan lukien alkuperäisen yhteyden TCP-otsake. Palomuuri, joka tutkii portteja siitä paketista, katsoo ulompaa otsaketta, jossa natiivissa tapauksessa ei ole portteja tutkittavaksi.

Natiivi ESP, sitten kapseloitu vaihtoehto

Natiivi ESP kuljetetaan suoraan IP-protokollana, mikä on yhtä aikaa tehokasta ja hankalaa. Tehokasta siksi, ettei ole ylimääräistä otsaketta, ja hankalaa siksi, että mikään osoitteita ja portteja kääntävä laite ei voi seurata sitä. NAT-läpäisy on olemassa juuri tätä varten: se käärii ESP-paketin UDP:n sisään, jotta kääntäjällä on portit uudelleenkirjoitettavaksi.

Form on the wireHow it is identifiedWhat the firewall must permit
IKE negotiationUDP with a destination portUDP 500, and 4500 once traversal is detected
Native ESPIP protocol 50 in the outer headerThe protocol itself, with no port to name
ESP inside UDPUDP 4500 carrying an ESP payloadThe UDP port pair, which translation devices can track

Kaksi muotoa ovat saman datakanavan vaihtoehtoisia käyttöönottoja, eivät yhden kerroksia. Natiivin ESP:n salliminen ei salli kapseloitua muotoa, eikä UDP 4500:n salliminen salli natiivia liikennettä, joten sääntöjoukon on vastattava käyttöönottoa eikä katettava molempia vahingossa.

Havaitseminen on tässä myös tärkeää. Päätepisteet päättävät muotojen välillä neuvottelun aikana, ja vaihto tapahtuu yleensä silloin, kun niiden väliltä havaitaan NAT. Siksi reitti, joka muuttuu tunnelin pystyttämisen jälkeen, voi siirtää liikenteen nimiavaruuteen, jota sääntösi eivät koskaan kattaneet.

Lue, mitä muotoa yhteys todella käyttää

Kysy päätepisteeltä sen sijaan, että arvaisit palomuurista. Linuxissa tilarivi kertoo, käyttääkö yhdistys UDP-kapselointia ja mitkä portit ovat mukana. Kaappaus vastaa samaan kysymykseen johdosta, ja molemmat ovat nopeampia kuin sääntöjoukon lukeminen ja toivominen.

ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'

Ensimmäinen komento näyttää kapselointityypin, kun NAT-läpäisy on käytössä, ja ei mitään, kun se ei ole. Toinen näyttää, kumpi kahdesta muodosta todella ylittää rajapinnan, ja se lopettaa väittelyt kokoonpanosta, joka näyttää paperilla oikealta.

Vastanäyttö kuuluu samaan vaiheeseen. Sääntö, joka ilmoittaa nollasta osumasta, kertoo sinulle, ettei paketti koskaan saavuttanut sitä, ja se on reititys- tai valitsinkysymys, ei palomuurikysymys.

Vahvista sitten ohjauskanava erikseen. IKE:llä on omat porttinsa ja omat lokinsa, ja valmis neuvottelu ilman dataa on juuri se jako, josta tämä artikkeli kertoo.

Kirjoita sääntö oikeaan nimiavaruuteen

Protokollasääntö ja porttisääntö ovat eri ohjeita, joten työkalun on ilmaistava se, jota tarkoitat. Nftablesissa protokollavastaavuus on eksplisiittinen, ja kapseloitu vaihtoehto saa oman UDP-sääntönsä. Pidä kaksi sääntöä vierekkäin, jotta pari näkyy katselmoinnissa.

nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept

Vastusta kiusausta laajentaa kumpaakaan sääntöä väärän diagnoosin kompensoimiseksi. Kaiken salliminen ESP-protokollalle jokaisella rajapinnalla tai UDP-lupa mistä tahansa mihin tahansa korjaa oireen ja poistaa sen hallinnan, jota yritit määrittää. Kapea tuettu virtaus riittää lähes aina, kun muoto on tiedossa.

Lopuksi, pidä kerrokset oikein, kun tunneli toimii eikä sovellus toimi. Yhdyskäytävälle saapuvat paketit tarvitsevat edelleen edelleenlähetyksen, paluureitin ja politiikan, joka hyväksyy ne, eikä mitään näistä ilmaista ESP-säännöllä. Puuttuva portti selittää tietyn vian, ei jokaista IPsec-vikaa. Pidä säännön korjaus ja reitityksen tarkistus kahtena erillisenä johtopäätöksenä.

Kirjaa havaitsemasi muoto, lisäämäsi protokollasääntö ja laskuri, jonka näit jälkeenpäin. Kolme riviä, ja seuraava henkilö erottaa nimiavaruusvirheen reititysvirheestä minuutissa iltapäivän sijaan.

Aiheeseen liittyvät artikkelit