Staðbundið forrit, VPN-regla: hvers vegna FORWARD-keðjan þín virkjast aldrei
Ferli á vélinni notar OUTPUT, ekki FORWARD. Veldu krókinn í rétta nafnrýminu og ákveddu síðan hvort merki eða venjuleg leið dugi.
Þú bætir reglu fyrir VPN-umferð í FORWARD-keðjuna, keyrir beiðnina frá sömu Linux-vélinni, og teljarinn stendur á núlli. Reglan er líklega rétt. Pakkinn fór aldrei þessa leið, því beiðni sem verður til á vélinni sjálfri er ekki send áfram af henni. Að fylgja lífi pakkans frá sökketinu að vírnum skýrir hvers vegna, og hvar reglan á að vera í staðinn.
Finndu hvar pakkinn fæddist
Krókaröð Netfilter skilur að þrjú tilvik, og aðeins eitt þeirra snertir FORWARD:
| Origin | Path | Hook that sees it |
|---|---|---|
| Local process | OUTPUT then POSTROUTING | OUTPUT, POSTROUTING |
| Addressed to a local service | PREROUTING then INPUT | PREROUTING, INPUT |
| Received for another host | PREROUTING, FORWARD, POSTROUTING | FORWARD |
Staðbundið forrit byrjar á OUTPUT-leiðinni, því kjarninn hefur þegar staðfest að pakkinn verði til hér og sé aldrei kandídat fyrir framsendingu. Að búa til göng breytir ekki þeirri flokkun; göngin eru tæki sem pakkinn getur farið út um, ekki stig sem gerir staðbundna úttak að gegnumferð.
Tveir pakkar, ein saga
Þegar göngin eru komin upp eru innri pakki forritsins og dulkóðaði ytri pakkinn ólíkir hlutir. Innri pakkinn ber áfangastaðinn og hleðsluna sem forritið valdi. Ytri pakkinn ber dulritaðan texta til ytri aðila með vistfang og port, og það er hann sem fer í raun yfir líkamlega viðmótið.
Stefna þín snertir annan þeirra, og að velja hinn rangt er algeng ástæða þess að regla virðist gera ekkert. Regla sem passar við ytra vistfang jafningjans sér hvern gangapakka jafnt, hvað sem forritið inni gerir. Regla sem passar við innri áfangastað sér umferðina sem þú hefur áhuga á, og hún virkjast aðeins ef sá pakki nær króknum sem þú settir regluna á.
Nafnrými færa mörkin
Gámur gerir þetta erfiðara án þess að breyta meginreglunni. Beiðni forritsins er staðbundið úttak inni í netnafnrými gámsins. Hýsillinn tekur við þeirri umferð á sýndar-Ethernet-viðmóti og getur sent hana áfram, svo FORWARD-regla á hýslinum getur verið merkingarbær þótt ferlið sem bjó til beiðnina hafi aldrei snert OUTPUT-keðju hýsilsins.
Áður en þú velur krók skaltu staðfesta hvar reglurnar og göngin eru í raun. Göng inni í gáminum, göng á hýslinum með gáminn leiðbeindan í gegnum þau, og göng í sérstöku nafnrými eru þrjár ólíkar staðfræði með þrjár ólíka staðsetningu reglna. Lestu reglurnar inni í nafnrýminu sem á tækið, ekki bara í sjálfgefna.
Spurðu hvort þú þurfir yfirhöfuð merki
Ef markmiðið er að senda eitt áfangastaðarforskeyti í gegnum göngin, gæti leið fyrir það forskytti dugað. Athugaðu virku leiðirnar fyrst, þar á meðal allt sem þjónninn ýtti: sjálfgefin leið sem vísað er annað sendir mun meiri umferð í gegnum VPN en þrönga stefnan sem þú hafðir í huga, og engin merking gerir niðurstöðuna í samræmi við áformið.
Flokkun er nauðsynleg þegar ákvörðunin fer eftir einhverju sem leið getur ekki lýst, svo sem upprunanum, notandanum eða ferlinu. Fyrir móttekið umferð virkar merking í PREROUTING. Fyrir staðbundna umferð verður merkingin að gerast í úttaksstigi sem getur hrundið af stað nýrri leiðarleit eftir að merkið er sett. Með nftables er það keðja af gerðinni route á úttakskróknum; venjuleg úttakssíukeðja setur gildið og lætur leiðina óbreytta.
Með iptables lifir hliðstæðan í mangle OUTPUT-fyrirkomulaginu, og sama krafa gildir: taka verður ákvörðun um leiðbeiningu til endurskoðunar eftir að merkið er komið. Síðan verður stefnuregla að eyða merkinu og benda á töflu sem inniheldur nothæfa leið. Að setja conntrack-merki er þriðja, aðskilin aðgerð; hún geymir gildi á flæðinu og setur það ekki sjálf á núverandi pakka svo leiðbeiningin geti lesið það.
Staðfestu leitina og teljarann saman
nft list ruleset
ip route get 198.51.100.25
ip route get 198.51.100.25 mark 0x1
Vistfangið og merkið eru til dæmis, og fyrirspurnirnar tvær um leið svara ólíkum spurningum. Sú seinni spyr hvað kjarninn myndi gera ef pakki bæri það merki; hún sýnir ekki að reglusafnið þitt úthluti einu. Líttu á hana sem tilgátuprófun, ekki sönnun þess að stefnan virki.
Keyrðu síðan saklausa beiðni og fylgstu með tvennu í einu: teljaranum á króknum sem þú valdir, og úttakinu sem pakkinn tók í raun. Ef teljarinn hreyfist og pakkinn fer út annars staðar eru merkið eða taflan röng. Ef hvorki hreyfist nær pakkinn alls ekki þeim krók, og næsta spurning er nafnrýmið eða leiðin.
Að lokum skaltu takmarka prófið við það sem gangverkið getur lýst. Ein leið fyrir eitt vistfang verður ekki varanleg stefna fyrir þjónustu þar sem vistföngin skiptast á. Ákveddu fyrst umfang pakkanna og athugaðu síðan hvort hönnun leiðbeiningar og merkingar standist það umfang eftir endurtengingu.