Fullur göngutengill OpenVPN rýfur SSH-lotuna þína: lagaðu afturleiðina
Sjálfgefna leiðin sendir SSH-svör inn í gönguna. Festu peer, síaðu redirect-gateway eða beindu eftir uppruna áður en þú missir vélina.
Að kveikja á OpenVPN-biðlara með fullri göngu á vél sem þú nærð í gegnum SSH getur rofið lotuna innan sekúndu, og vélin gerir ekkert rangt. Göngin breyta ekki hvernig pakkar komast til netþjónsins; hún breytir hvernig svörin fara út. Um leið og sjálfgefna leiðin bendir á tun0 fer svar til SSH-biðlarans þíns inn í net þjónustuveitunnar, sem hefur enga leið til baka að vistfangi þínu. Tengingin hangir, næsta tilraun rennur út, og démoninn hlustar á port 22 allan tímann.
Lestu leiðartöfluna áður en þú lest VPN-logginn. Loggurinn segir að göngin hafi komist upp, og hann hefur rétt fyrir sér. Spurningin er hvaða tengi hvert svar er afhent, og það er leit fyrir hvern pakka í töflu sem göngin voru að endurskrifa.
Hvers vegna svarið fer út um ranga hurð
Innkomandi pakkar koma enn á líkamlega tengið, því VPN-biðlari getur ekki breytt hvernig internetið nær almennu vistfangi netþjónsins þíns. Svör eru sérstök ákvörðun: fyrir hvern pakka leitar kjarninn að áfangastað, og eftir --redirect-gateway segir sjálfgefna færslan göng. Útgangur veitunnar sér áfangastað sem hann þjónar ekki og hendir pakkanum.
Eigin vörn OpenVPN nær yfir nákvæmlega einn áfangastað. Handbókin fyrir 2.6 lýsir --redirect-gateway sem röð: hún bætir við hýsil-leið fyrir VPN-peer í gegnum gáttina sem var í notkun fyrir göngin, svo dulkóðuð umferð geti ekki snúið aftur inn í sjálfa sig, og skiptir síðan um sjálfgefnu leiðina. Þessi hýsil-leið er aðeins fyrir peerinn. SSH-biðlarinn þinn er bara annað internetvistfang og fær enga undantekningu.
Eitt forskeytismistak er þess virði að útiloka snemma. ip route add -net 0.0.0.0 gw 10.8.0.1 dev tun0 án lengdar passar við eitt vistfangið 0.0.0.0, ekki internetið; það verður að vera 0.0.0.0/0. Og ef að taka sjálfgefnu leiðina brýtur eigin flutning ganganna, bættu endapunktinum við sem hýsil-leið í gegnum líkamlega tengið, með raunverulegu vistfangi veitunnar.
Festu vistfang SSH-biðlarans þíns fyrir tafarlausa viðgerð
Fljótlegasta viðgerðin er hýsil-leið fyrir biðlaravistfang þitt í gegnum gáttina sem netþjónninn notaði áður en göngin voru til. Frá þinni hlið, finndu vistfangið sem netþjónninn mun sjá, lestu svo töflu netþjónsins til að þekkja gömlu gáttina:
curl -s https://ifconfig.co
ip route
Á netþjónnum, bættu undantekningunni við áður en biðlarinn byrjar. Vistföngin hér eru staðgenglar; formið skiptir máli:
sudo ip route add 80.128.240.55 via 192.168.178.1
Þetta er viðgerðin sem var notuð í tilkynnta tilvikinu, og hún virkar strax. Hún er líka brothætt á tvo fyrirsjáanlega vegu: leiðin hverfur við endurræsingu, og hún verður röng um leið og ISP-veitan gefur þér annað vistfang. Líttu á hana sem neyðarráðstöfun og gerðu hana varanlega viljandi, í gegnum neteiningu eða dispatcher-króka, eða samþykktu að hún sé tímabundin og skrifaðu niður endurheimtarleiðina.
Komdu í veg fyrir að biðlarinn taki sjálfgefnu leiðina
Hreinna valkosturinn er að koma í veg fyrir að göngin skipti um sjálfgefnu leiðina. route-nopull, notað með --client eða --pull, samþykkir ýttu valkostina nema leiðir, block-outside-dns og DHCP-stíla valkosti eins og DNS-netþjóna, svo þú bætir aðeins við forskeytunum sem þú þarft. Þrengra tól er dráttarsía, sem hendir einni vandamálalegri skipun og heldur restinni:
route-nopull
pull-filter ignore "redirect-gateway"
Notaðu annað hvort, ekki bæði, og vertu skýr um hvað breytist. Án sjálfgefinnar leiðar í gegnum göngin vafrar netþjónninn ekki lengur internetið í gegnum veituna; hann nær aðeins því sem þú beindir skýrt. Ef fulla göngin voru allur tilgangurinn með uppsetningunni, þá er þetta rangi rofinn og hýsil-leiðin hér að ofan er sú rétta.
Skiptu afturleiðinni eftir uppruna eða tengingu
Þegar innkomandi vistfang er stöðugt heldur upprunaregla svörunum staðbundnum án þess að snerta eigin leiðir ganganna. Gefðu vistfangi líkamlega tengisins eigin töflu sem inniheldur LAN-forskeytið og líkamlegu sjálfgefnu leiðina, veldu svo þá töflu fyrir umferð sem kemur þaðan:
ip rule add from 192.168.1.11 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1
Þetta virkar því svör við innkomandi SSH-tengingu koma frá vistfanginu sem biðlarinn tengdist. Tilkynnt tilvik þar sem hver innkomandi þjónusta varð að halda áfram að virka notaði nákvæmlega þetta form. Þegar innkomandi vistfang flýtur eða leiðin er kvik, merktu tenginguna í staðinn: settu conntrack-merki á fyrsta pakkann frá líkamlega tenginu, afritaðu það á svarpakka í OUTPUT, og beindu merktum pökkum í gegnum töflu sem bendir á líkamlegu gáttina.
iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234
iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321
ip route add default via 192.168.1.1 dev eth0 table 3412
ip rule add fwmark 4321 table 3412
Haltu tengimerkinu, eldveggsmerkinu og tölunni á töflunni aðskildum meðan þú prófar. Endurnotkun eins númers fyrir tvö hlutverk framleiðir reglu sem lítur rétt út og hittir röngu pakkana. Sjálfgefna færsla töflunnar þarf líka via með LAN-gáttinni á venjulegum Ethernet-tengil; bert dev eth0 virkar aðeins þegar tengið er punktur-punktur eða næsta stökk er leyst á annan hátt. Tilkynnti Jessie-hýsillinn var tilviljun á tengil þar sem bera formið virkaði, og það er ekki dreifingarregla til að afrita.
Sannreyndu án þess að læsa þig úti
Ekki prófa með því að aftengja. Haltu fyrstu lotunni opinni, komdu göngunum upp, og spurðu kjarnann hvaða leið eigið vistfang þitt tæki:
ip route get 80.128.240.55
Svarið ætti að nefna líkamlega tengið og gömlu gáttina, ekki göngin. Opnaðu svo aðra SSH-tengingu; það er raunverulega prófið, því gamla lotan getur lifað á stöðu sem ný tenging getur ekki endurgera. Ef önnur hangir meðan fyrsta svarar enn, hefur reglan aldrei passað við umferðina sem skiptir máli, og merkin eða upprunavistfangið er það sem þarf að skoða.
Haltu borði utan bandsins aðgengilegum allan æfingatímann. Netþjón sem eina aðgangsleiðin er göngin sem þú braust rétt í sundur er ekki hægt að laga í gegnum þau göng, og afturköllunin er auðveldari þegar þú hefur skrifað niður töflutölurnar og forskeytin sem þú bættir við.