Kas Linux VPN-i vastused kaovad? Kontrollige rp_filterit ja marsruuti
IPv4 allika valideerimine võib tagasi lükata paketi, mille pöördmarsruut ei sobi režiimiga. Enne selle väljalülitamist uurige marsruutimist ja tegelikku seadet.
Päringud lahkuvad masinast, VPN-partner vastab ja vastus ei jõua kunagi soklini. Tunnel on üleval, partneri logid näitavad, et pakett saadeti, ja miski rakenduses ei selgita vaikust. Linuxis on üks tavalisemaid kahtlusaluseid pöördtee filtreerimine: sissetulev IPv4 pakett võidakse tagasi lükata, kui allika valideerimine ei ühti marsruudiga, mida kernel selle allika jaoks eeldab. Järjest läbi käimine ütleb teile, kas see on põhjus või juhus. See hoiab teid ka sellest, et lülitate puuduva marsruudi parandamiseks välja turvakontrolli.
Mida allika valideerimine otsustab
Kernel kontrollib, kas paketi allikaaadress on usutav liidese jaoks, mille kaudu see saabus, konsulteerides marsruutimistabelit marsruudi kohta tagasi selle allika juurde. Kui pöördmarsruut osutab mujale, võidakse pakett ära visata enne, kui ükski tulemüürireegel või rakenduse sokkel seda näeb. See kontroll on olemas selleks, et muuta teatud võltsimismustrid raskemaks, ja seetõttu põrkavad asümmeetrilised ja poliitikapõhise marsruutimisega lahendused selle vastu, samas kui iga tavaline klient samas võrgus töötab korralikult. Tavalistel klientidel on sümmeetriline marsruutimine, mis on täpselt see, mida kontroll eeldab.
Oluline sõna on usutav. Pakett võib olla täiesti seaduslik ja ikkagi kontrolli läbi kukkuda, sest ei testita seaduslikkust.
Lugege tegelikku režiimi, mitte ühte välja
Režiime on kolm: välja lülitatud, range ja lõtv. Range seab teistsuguse marsruudieelduse kui lõtv, ja globaalne seade mõjutab koos liidesepõhistega, nii et ühe faili lugemine võib kirjeldada valesti seda, mis tegelikult kehtib. Lugege mõlemat ja lugege neid liidesel, mis vastuse vastu võtab, mitte vaikemarsruudi liidesel.
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.<iface>.rp_filter
ip route get <source-of-the-reply>Marsruudi otsing selles kolmandas reas on osa, mille inimesed vahele jätavad. See ütleb teile, mida kernel allikast arvab, ja see on täpselt kontrolli sisend.
Leidke lahknevus enne, kui kontrolli muudate
Selgitage välja, miks vastus sellele liidesele saabub ja kas selle pöördmarsruut peaks erinema. Poliitikareegel, mis saadab päringud ühte teed pidi välja, samal ajal kui vastused naasevad teist teed pidi, on seaduslik lahendus, ja just selle lahenduse lükkab range valideerimine tagasi. Poliitikapõhises marsruutimises kasutatavad märgised võivad siin samuti tähtsad olla, sest need muudavad seda, mida pöördotsing tagastab.
Kui pöördmarsruut lihtsalt puudub, parandab selle lisamine põhjuse, selle asemel et kontroll välja lülitada. Puuduv marsruut, tulemüüri keeldumine ja vale liikluse valija tekitavad kõik sama nähtava sümptomi ja ainult üks neist puudutab allika valideerimist.
Ärge lülitage allikakontrolle esimese reaktsioonina globaalselt välja. See vahetab konkreetse diagnoosi laia käitumismuutuse vastu, mida peate hiljem meeles pidama.
Valikuline kohandus, mida saate kaitsta
Kui kitsas kohandus on tõesti vajalik, piirake see liidesega, mis seda vajab, kirjutage üles, miks, ja pange see selle liidest omava konfiguratsiooni sisse, et see taaskäivituse üle elaks. Seejärel testige uuesti täpselt seda voogu, mis ebaõnnestus, samast allikast samasse sihtkohta, mitte pingi mõne mugava asja vastu.
Lisage juhtum, mis peaks endiselt tagasi lükatama. Kui see juhtum nüüd õnnestub, nõrgestas kohandus rohkem kui ühte rada, mida te parandada tahtsite.
Hoidke IPv4 ja IPv6 lahus
Tuttavana näiv sysctl ei ole poliitika iga aadressiperekonna jaoks. IPv6-l on oma käitumine ja oma seaded ning masin võib olla ühes perekonnas range ja teises järeleandlik, ilma et keegi seda märkaks, kuni teatud sihtkoht ebaõnnestub. Kontrollige mõlemat, kui töökoormus kasutab mõlemat.
Kirjutage režiim, liides, marsruudiotsingu väljund ja muudatuse põhjus ühte kohta. Järgmine inimene leiab seade ja mitte mingit selgitust ning kas eemaldab selle või kopeerib sinna, kuhu see ei kuulu.