Pam na fydd eich rheol iptables byth yn gweld traffig VPN pontio
Gall fframiau pontio osgoi’r gadwyn IP rydych chi’n ei gwylio. Cymharwch y teulu bridge brodorol â’r br_netfilter hen ffasiwn cyn ychwanegu rheol arall.
Mae dwy beiriant rhithwir ar yr un gwesteiwr yn cyrraedd y LAN trwy bont, ac mae rheol a osodir yn y gadwyn ip forward yn dangos rhifydd nad yw byth yn symud. Mae’r fframiau’n real, mae’r traffig yn mynd heibio, ac nid yw’r rheol ar ei lwybr o gwbl. Mae cymharu’r ddwy ffordd y mae Linux yn datgelu traffig pontio yn egluro’r distawrwydd, ac mae hefyd yn egluro pam mae llwytho un modiwl hen ffasiwn yn ateb gwaeth nag y mae’n edrych.
Dwy lwybr trwy un gwesteiwr
Gall pecyn adael y gwesteiwr hwn mewn dwy ffordd hollol wahanol, ac mae’r gwahaniaeth yn penderfynu pa fachynnau sy’n ei weld. Os yw’r gyrchfan y tu hwnt i borth ffisegol ac mae’r ffrâm yn cael ei chyfnewid rhwng dau borth pont, mae’r gwesteiwr yn anfon ffrâm Ethernet ymlaen; ni ymgynghorir â’r cod llwybro, ac ni cheir naid llwybredig. Os mai’r gwesteiwr ei hun yw’r gyrchfan, neu rwydwaith a gyrhaeddir trwy ryngwyneb twnnel, mae’r pecyn yn cael ei lwybro ac mae bachynnau haen IP yn berthnasol. Cadwch y fforch hon mewn cof, oherwydd mae pob cwestiwn dilynol am gadwynau a theuluoedd yn deillio o ba un o’r ddau lwybr y mae ffrâm yn ei gymryd.
Y gwahaniaeth hwnnw yw’r stori gyfan y tu ôl i reol nad yw’n cyfrif dim. Mae ffrâm bontio o veth9a1 i enp3s0 yn croesi’r bont, nid y pentwr IP, felly nid yw cadwyn ip forward yn gweld dim i’w gyfateb. Nid yw enwau rhyngwyneb mewn enghraifft hŷn yn penderfynu pa lwybr sydd gennych, a dyna pam mai’r cam cyntaf yw edrych ar y topoleg yn hytrach nag ar y set rheolau.
Mae twnnel yn ychwanegu trydydd achos sy’n werth ei enwi. Mae dyfais TUN yn dosbarthu pecynnau IP i’r gwesteiwr, felly maent yn cael eu llwybro ac yn mynd trwy gadwynau IP, tra bod dyfais TAP sydd ynghlwm wrth bont yn dosbarthu fframiau ac yn ymddwyn fel yr achos pontio. Y math o ddyfais, nid enw’r cynnyrch, sy’n penderfynu.
Cymharwch y ddau deulu sy’n gallu gweld ffrâm bontio
Mae Linux yn cefnogi hidlo pont brodorol trwy deulu bridge nftables, ac nid oes angen unrhyw fodiwl hen ffasiwn arno i archwilio a gollwng fframiau wrth iddynt fynd. Mae dogfennaeth y bont y cnewyllyn ei hun yn gwneud y argymhelliad hwnnw’n uniongyrchol, sy’n werth ei wybod cyn i ganlyniad chwilio ddweud wrthych am lwytho modiwl.
| Observation point | What it sees | What it costs |
|---|---|---|
nftables bridge family chains | Ethernet frames forwarded between bridge ports, in both directions | Rules must be written in bridge syntax with link-layer matches |
Legacy br_netfilter plus an ip chain | Bridged IPv4 and IPv6 packets, re-exposed through IP-layer hooks | Existing host rules may begin matching traffic they never saw before |
inet chain for routed traffic | Packets the host routes, including traffic arriving from a TUN device | No visibility into purely switched frames |
Nid yw defnyddio’r gorchymyn nft yn lle iptables, ynddo’i hun, yn gosod rheol yn y teulu cywir. Mae cadwyn a ddatganir yn nheulu bridge yn gweld fframiau; nid yw cadwyn a ddatganir yn ip, ip6 neu inet yn gweld dim, ni waeth pa ffeil ddeuaidd a’i creodd. Mae’r teulu’n briodwedd o’r gadwyn, nid o’r offeryn a’i teipiodd.
Mae’r llwybr hen ffasiwn yn gweithio’n wahanol, a dyna’r rheswm dros gymharu yn hytrach na dewis ochr o arfer. Mae llwytho br_netfilter a galluogi gosodiadau bridge-nf-call yn ail-ddatgelu traffig IPv4 ac IPv6 pontio trwy fachynnau haen IP, fel y gall rheol iptables gyffredin gyfateb iddo o’r diwedd. Nid yw’r fframiau’n newid; mae’r set o fachynnau y maent yn eu croesi yn newid, sy’n golygu bod gan bob rheol gwesteiwr sy’n bodoli eisoes gynulleidfa newydd.
Darllenwch y llwybr effeithiol cyn ychwanegu rheol
Mae tair gorchymyn yn sefydlu lle rydych chi: wrth beth mae’r bont ynghlwm, a yw’r modiwl hen ffasiwn yn weithredol, a pha gadwynau sy’n bodoli eisoes yn nheulu bridge. Rhedwch nhw cyn ysgrifennu unrhyw beth, oherwydd mae’r ateb yn penderfynu pa un o’r ddau ddyluniad rydych chi’n ei ymestyn. Neidio’r cam hwn yw sut mae rheol gywir yn gorffen mewn cadwyn nad yw dim yn ei chroesi.
bridge link show
lsmod | grep br_netfilter
nft list ruleset | grep -A4 "chain forward"
Mae’r allbwn yn gwahanu’r achosion yn lân. Mae’r pyrth a restrir o dan y bont yn dweud wrthych pa ryngwynebau sy’n cael eu cyfnewid; mae canlyniad lsmod gwag yn golygu dim gwelededd haen IP o fframiau pontio o gwbl; mae cadwyn forward teulu bridge sy’n bodoli eisoes yn golygu bod perchennog polisi’n bodoli’n barod ac mai yno y mae eich rheol yn perthyn, yn hytrach nag mewn cadwyn newydd iddi hi ei hun.
Yna ychwanegwch un rheol sy’n hawdd ei darllen yn ôl, gyda rhifydd a heb newid y dyfarniad, a rhedwch un llif cynrychioliadol drwy’r bont. Mae rhifydd sy’n symud yn profi bod y ffrâm wedi cyrraedd y rheol. Dyna’r cyfan mae’n ei brofi, felly dilynwch hi gyda’r llwybr a wrthodwyd hefyd, gan fod polisi sy’n derbyn popeth hefyd yn cynhyrchu rhifydd sy’n symud.
nft add rule bridge filter forward iifname "veth9a1" oifname "enp3s0" counter acceptLle mae’r modiwl hen ffasiwn yn newid ymddygiad
Nid yw galluogi’r llwybr hen ffasiwn ar bont sy’n rhedeg yn weithred niwtral o ychwanegu gwelededd. Mae rheolau a oedd yn anghyrraeddadwy o’r blaen ar gyfer traffig pontio yn dod yn gyrraeddadwy, gan gynnwys rheolau gwesteiwr a ysgrifennwyd ar gyfer rhyngwyneb gwahanol, a gall polisi drop diofyn yn y gadwyn ip forward fod yn berthnasol yn sydyn i fframiau a arferai basio’n ddianaf. Ar westeiwr a reolir dros y bont honno, y canlyniad yw cloi allan heb gonsol. Nid yw hwn yn fodd methiant damcaniaethol; mae’n ganlyniad arferol i ehangu set o fachynnau ar beiriant y cyrhaeddwch ef trwy’r llwybr rydych newydd ei ehangu.
Y dilyniant mwy diogel yw penderfynu pa deulu sy’n berchen ar y polisi, ysgrifennu’r rheolau yno, a chadw llwybr adfer annibynnol cyn newid unrhyw sysctl. Os yw dau deulu’n dal rheolau, dogfennwch pa un sy’n awdurdodol; dau bolisi sy’n gorgyffwrdd yw sut mae pecyn yn cael ei dderbyn mewn un man a’i ollwng mewn man arall heb unrhyw ffeil sengl i’w darllen.
Mae arwahanu ei hun yn dal i fod angen dyluniad cyflawn. Nid yw caniatáu un ffynhonnell i un gyrchfan yn profi ond bod un llif yn gweithio, tra mai’r gofyniad fel arfer yw na all VM gyrraedd ei chymdogion na’r gwesteiwr. Mae rhifwyr ar y rheolau gwadu yn bwysicach na’r rhifydd ar y rheol dderbyn, oherwydd y rhifydd derbyn yw’r un yr oeddech eisoes yn disgwyl iddo symud.
Yn olaf, cadwch achos mewnbwn y gwesteiwr ar wahân. Mae traffig a gyfeirir at IP y bont ei hun yn cyrraedd input, nid forward, ac ni fydd rheol yn forward byth yn ei weld, ni waeth pa deulu a ddewiswch. Tri achos, dau deulu, un wers: y llwybr sy’n penderfynu’r bachyn, a’r bachyn sy’n penderfynu a yw eich rheol yn bodoli o gwbl.