Mae angen llwybro polisi i dynnu un porth allan o'r VPN
Mae rheol NAT yn ailysgrifennu cyfeiriadau, nid yw'n dewis cyswllt allanfa. Dyma'r rheol, y tabl a'r marc sy'n cadw un porth TCP oddi ar y tiwnel mewn gwirionedd.
Mae'r cais bob amser yn amrywiaeth ar yr un frawddeg: cadw'r VPN ar gyfer pori, ond gadael i SSH neu swydd wrth gefn ddefnyddio'r cysylltiad arferol. Nid yw'r cyngor sy'n cylchredeg am hyn, sef anfon y porth ymlaen gyda rheolau NAT iptables, yn gwneud hynny. Mae rheol NAT yn ailysgrifennu cyfeiriadau a phorthladdoedd o fewn ffrwd; nid yw byth yn dewis pa ryngwyneb y bydd y pecyn yn gadael drwyddo. Mae'r penderfyniad hwnnw'n perthyn i'r chwiliad llwybro, ac mae ar y chwiliad llwybro angen help i weld porth.
Pam na all llwybr syml gyd-fynd â phorth
Mae Linux yn dewis llwybr drwy chwilio'r cyfeiriad cyrchfan mewn tabl, ar ôl hidlo tablau ymgeisiol drwy reolau polisi. Gall y rheolau hynny gyd-fynd â marc mur tân, cyfeiriad ffynhonnell, rhyngwyneb sy'n dod i mewn neu UID. Nid oes gan y cofnod llwybr ei hun faes porth, oherwydd dewisir y llwybr cyn i'r pennawd cludo fod yn berthnasol.
Mae iproute2 a kerneli cyfredol yn ehangu detholydd y rheol: ipproto, sport a dport yn cael eu derbyn, felly mae ip rule add ipproto tcp dport 22 table 100 yn mynegi'r bwriad mewn un llinell. Rhedegwch ip rule add help ar y gwesteiwr go iawn i weld a yw eich adeiladwaith yn rhestru dport. Os ydyw, rydych wedi gorffen mewn un gorchymyn; os nad ydyw, y llwybr marc isod yw'r cyfwerth.
Naill ffordd neu'r llall, dim ond pwyntydd yw'r rheol. Mae ar Dabl 100 angen llwybr o hyd, a dyna'r darn y mae pobl yn ei anghofio.
Tair rhan, neu un
Y ffurf fodern yw'r un rheol uchod ynghyd â llwybr yn y tabl arall. Mae'r ffurf glasurol yn ychwanegu netfilter yn y canol: marciwch y pecyn, yna cyfatebwch y marc mewn rheol. Mae'r ddau yn gorffen yn yr un chwiliad; maent yn wahanol yn y man lle darllenir y porth.
Mae'r dull marc yn bodoli oherwydd bod netfilter yn gweld y pennawd cludo ac nad oedd y cod llwybro yn ei weld yn hanesyddol. Dyna'r mecanwaith cyfan, ac mae'n esbonio pam mai tair rhan sy'n cydweithio yw'r dewis wrth gefn yn lle un gorchymyn clyfar.
Y tair rhan yn eu trefn
Yn gyntaf, marciwch y ffrydiau rydych am eu gwyro, mewn cadwyn sy'n rhedeg yn ddigon cynnar i'r marc fodoli cyn penderfyniad y llwybr:
nft add table inet vpnexempt
nft 'add chain inet vpnexempt out { type route hook output priority mangle; }'
nft add rule inet vpnexempt out tcp dport 22 meta mark set 0x1Yn ail, anfonwch becynnau wedi'u marcio i dabl ar wahân:
ip rule add fwmark 0x1/0x1 table 100Yn drydydd, rhowch lwybr diofyn i'r tabl hwnnw drwy'r cyswllt ffisegol. Mae'r cyfeiriadau'n enghreifftiol; rhodwch eich rhai eich hun:
ip route add default via 192.168.1.1 dev wlan0 table 100Hepgorwch y trydydd cam ac ni fydd y pecyn wedi'i farcio yn canfod llwybr yn Nhabl 100, felly bydd yn methu. Mae'r symptom yn edrych fel petai'r rheol wedi torri'r rhwydwaith, pan mae mewn gwirionedd wedi dileu'r unig lwybr oedd ar ôl i'r pecyn.
Beth sy'n ei gadw'n gweithio ar ôl y pecyn cyntaf
Mae marciau'n berthnasol i becynnau sy'n mynd allan. Daw'r ateb i mewn ar y rhyngwyneb ffisegol gyda'r cyfeiriad a neilltuwyd gan y cyswllt hwnnw, ac efallai y bydd y prif dabl yn dal i ffafrio'r tiwnel ar gyfer y gyrchfan honno. Mae dau fecanwaith yn cadw llwybr yr ateb yn gyson: rheol yn seiliedig ar ffynhonnell ar gyfer cyfeiriad y cyswllt, a thracin cysylltiadau sy'n cadw'r penderfyniad am oes y ffrwd. Cadw'r marc mewn conntrack a'i adfer ar yr ateb yw'r ffordd arferol o wneud eithriad â chyflwr yn sefydlog.
Hidlo llwybr gwrthdro yw'r llofrudd tawel arall. Os yw'r cnewyllyn yn dilysu'r llwybr dychwelyd yn llym ac mae'r ateb yn cyrraedd ar ryngwyneb na fyddai'r prif dabl yn ei ddewis, mae'r pecyn yn cael ei ollwng heb neges. rp_filter mae'r gwerthoedd diofyn yn amrywio yn ôl y dosbarthiad ac yn ôl a yw'r rhyngwyneb yn cael ei anfon ymlaen, felly darllenwch y gwerth effeithiol yn lle tybio ei fod i ffwrdd.
Peidiwch â marcio cludo'r tiwnel ei hun. Nid TCP 22 yw tiwnel WireGuard nac OpenVPN dros UDP, felly mae'r rysáit uchod yn ddiogel, ond gall eithriad a ysgrifennwyd fel popeth heblaw cyrchfan y tiwnel ddal y pecynnau wedi'u hamgryptio a thorri'r tiwnel mewn ffordd sy'n edrych fel dolen llwybro.
Profwch ef yn lle tybio
Gofynnwch i'r cnewyllyn pa lwybr y byddai'n ei gymryd, ar gyfer y gyrchfan ac ar gyfer y porth, yna rhedegwch y trosglwyddiad go iawn:
ip route get 203.0.113.10
ip rule show
nft list rulesetOs yw'r marc yn bodoli ond nad yw'r cyfrifwyr byth yn symud, nid yw'r rheol yn cyfateb. Y cyfrifwyr yw'r gwahaniaeth rhwng cyfluniad a ysgrifennwyd gennych a pholisi y mae'r cnewyllyn yn ei gymhwyso.
Pryd yw hwn y teclyn anghywir
Mae eithriadau'n seiliedig ar borth yn frau o ran natur. Mae gwasanaethau'n symud porthladdoedd, mae HTTP/3 yn cyrraedd fel UDP 443, a gall un cymhwysiad agor sawl ffrwd o wahanol fathau. Os mai'r gwir ofyniad yw bod y rhaglen hon yn defnyddio'r cyswllt arferol, y haen llwybro yw'r lle anghywir; mae gofod enwi rhwydwaith neu ddirprwy fesul cymhwysiad yn ffitio'n well.
Os mai'r gofyniad yw bod y subnet hwn yn defnyddio'r cyswllt arferol, hepgorwch y marciau'n llwyr ac ychwanegwch lwybr mwy penodol. Mae'n symlach, mae'n weladwy mewn un tabl, a gall y person nesaf ei archwilio heb ddarllen set o reolau.
Ysgrifennwch pa un o'r tri gofyniad sydd gennych mewn gwirionedd cyn cyffwrdd â'r mur tân. Mae'r mecanwaith uchod yn fanwl gywir, a dim ond ymestyniad hirach yw manylder a gymhwysir i'r haen anghywir.