Mae cleientiaid Wi-Fi ac Ethernet lleol yn cysylltu â hotspot y Pi, yn tynnu cyfeiriad o'i amrediad DHCP, ac yn llwytho tudalennau rhyngrwyd heb gwyn. Yna mae'r un cleientiaid yn rhewi pan fyddant yn agor rhannu ffeiliau neu ryngwyneb gwe ar y LAN cartref, tra bod y Pi ei hun yn cyrraedd y LAN honno drwy'r twmnel. Nid oes dim wedi torri yn y haen ddi-wifr. Yr hyn sydd ar goll yw contract wedi'i lwybreiddio: rhaid cludo rhagddodiad y hotspot i mewn i ryngwyneb TUN, a rhaid i rywbeth ar yr ochr gartref wybod sut i anfon atebion yn ôl iddo. Rhaid i'r ddwy hanner fodoli cyn y gall un pecyn orffen y daith gron.

Tri atodiad â thri swydd wahanol

Mae pont Ethernet Linux yn anfon fframiau yn ôl cyfeiriad MAC y gyrchfan. OpenVPN yn y modd TUN yn cario pecynnau IP ac nid oes ganddo haen MAC o gwbl, felly nid yw ychwanegu pont leol byth yn cofrestru'r twmnel fel porth. dogfennaeth cnewyllyn TUN/TAP yn egluro'r gwahaniad hwnnw: mae dyfais TAP yn edrych fel rhyngwyneb Ethernet, nid yw dyfais TUN felly. Mae dyluniad sy'n pontio dau borth lleol ac yna'n llwybreiddio yn llwybrydd, beth bynnag a ddywed enwau'r rhyngwynebau.

Mae'r gwahaniaeth hwnnw'n setlo perchnogaeth. Mae is-rwyd y cleientiaid, eu porth rhagosodedig ac awdurdod DHCP yr amrediad hwnnw yn perthyn i gynllun lleol y Pi. Nid yw darllediadau DHCP cartref yn croesi twmnel wedi'i lwybreiddio, ac nid yw unrhyw osodiad pont yn newid hynny; mae cyfeirio'r cleientiaid at weinydd DHCP cartref yn ddyluniad cyfnewidfa ar wahân a bwriadol sydd â'i foddau methu ei hun.

Cadwch y modem y tu allan i bont y cleientiaid hefyd. Nid yw atodiad PPP yn ddyfais Ethernet â label gwahanol, ac mae rhesymeg llwybr rhagosodedig ddogfennedig pppd yn rhedeg ar ôl trafodaeth IPCP ac yn tynnu ei lwybr pan fydd y cyswllt hwnnw'n cwympo. Nid yw copïo templed DHCP ac ailenwi pob usb0 yn ppp0 yn profi dim am borth, metrig na chylch bywyd.

Dewiswch y rhagddodiadau cyn i chi olygu unrhyw ffurfweddiad

Mae rhagddodiadau sy'n gorgyffwrdd yn gwastraffu mwy o nosweithiau na rheolau wal dân, oherwydd mae gorgyffwrdd yn anfon y chwiliad llwybr i'r rhyngwyneb anghywir hyd yn oed pan fo'r twmnel yn iach. Dechreuwch drwy restru'r hyn sydd eisoes yn bod ar y Pi, yna darllenwch y canlyniad fel pedwar pwll ar wahân.

ip -4 addr show scope global
ip -4 route show table main
ip -4 route get 192.168.77.10

Y pwll cyntaf yw'r cyfeiriad underlay a roddodd y cludwr i'r modem; rhaid iddo aros y tu allan i bob cynllun sy'n wynebu cleientiaid. Yr ail yw is-rwyd y twmnel a ddewisodd y gweinydd, yn aml /24 breifat ei hun. Y trydydd yw pont y hotspot, a'r pedwerydd yw'r rhagddodiad cartref rydych am ei gyrraedd. Yn y daith hon mae'r hotspot yn cael 172.28.90.0/24 gyda'r bont ar 172.28.90.1, ac mae LAN gwasanaeth y cartref yn cadw 192.168.77.0/24, sy'n osgoi'r rhagosodiadau 192.168.1.0/24 a 10.0.0.0/24 y mae llwybryddion defnyddwyr yn dod â nhw a'r amrediad cludwr 100.64.0.0/10.

Hysbysebwch gyfeiriad y bont fel porth yn amrediad DHCP y hotspot a dim byd arall. Peidiwch byth â rhoi cyfeiriad cartref i gleientiaid y hotspot fel porth; nid oes ganddynt lwybr ar lefel cyswllt i'r segment hwnnw.

Llwybreiddiwch bob cyfeiriad ar yr ochr sy'n berchen arno

Mae angen llwybr ar y Pi ar gyfer rhagddodiad y cartref drwy'r twmnel. Mae gweinyddion yn y modd gweinydd fel arfer yn gwthio'r llwybr hwnnw, felly cadarnhewch yn gyntaf fod anfon ymlaen ymlaen ac fod y cnewyllyn yn datrys cyfeiriad cartref o tun0.

sysctl net.ipv4.ip_forward
ip route add 192.168.77.0/24 dev tun0
ip -4 route get 192.168.77.10

Os yw ip route get yn dal i adrodd am ryngwyneb underlay, stopiwch yno; ni all dim ymhellach ar y llwybr atgyweirio chwiliad anghywir.

Nid oes gan ddyfeisiau cartref lwybr i 172.28.90.0/24, felly mae eu hatebion yn dilyn y porth rhagosodedig ac yn marw wrth y llwybrydd. Mae dau atgyweiriad a gefnogir. Naill ai ychwanegwch lwybr statig ar lwybrydd y cartref sy'n cyfeirio rhagddodiad y hotspot at gyfeiriad LAN y gweinydd VPN, neu, pan fo'r gweinydd ei hun yn borth, cofrestrwch ragbennod y cleient yn nhabl llwybreiddio'r gweinydd ei hun. Yn y modd aml-gleient OpenVPN mae'r cyfeiriadur sy'n benodol i'r cleient yn cario'r cysylltiad hwnnw: ffeil wedi'i henwi ar ôl enw cyffredin tystysgrif y cleient, yn dal iroute 172.28.90.0 255.255.255.0 ynghyd â'r llinell route gyfatebol sy'n ei osod yng nghnewyllyn y gweinydd. Nid yw llwybr cnewyllyn a ddyfalwyd ar y gweinydd yr un datganiad â dweud wrth y gweinydd pa gleient sy'n berchen ar y rhagddodiad.

Peidiwch â symud gwasanaeth DHCP y rhwydwaith cartref i'r gweinydd VPN i wneud hyn yn gweithio. Mae disodli'r porth rhagosodedig ar gyfer tŷ cyfan yn newid llawer mwy nag ychwanegu un llwybr dychwelyd preifat, ac mae'n llusgo DNS, archebion cyfeiriadau a phob dyfais sy'n anwybyddu'r les newydd i mewn i'r methiant.

Agorwch anfon ymlaen heb ddyfalu am y wal dân

Nid yw anfon ymlaen wedi'i alluogi yn golygu bod y pecyn yn cael mynd trwodd. Mae traffig o'r bont i'r twmnel yn dal i daro'r rheolau hidlo, ac mae polisi anfon ymlaen rhagosodedig drop yn gollwng traffig y hotspot tra bod traffig y Pi ei hun yn parhau i weithio, sy'n cynhyrchu'n union y symptom hollt uchod.

iptables -S FORWARD
iptables -t nat -S POSTROUTING
nft list ruleset

Chwiliwch am reol dderbyn o br0 i tun0 a'r cyfeiriad ateb cyfatebol, ac am reol postrouting a allai ailysgrifennu'r ffynhonnell. Os yw polisi'r gadwyn yn drop ac nad oes unrhyw reol yn cyfateb, ychwanegwch y derbyniadau cul a phrofi eto yn lle troi'r polisi i accept.

Mae cyfieithu yn ddewis polisi yn hytrach na gofyniad. Mae NAT ffynhonnell tuag at y LAN cartref yn gwneud i bob cleient hotspot edrych fel cyfeiriad twmnel y Pi, sy'n colli priodoliad fesul cleient yng nghofnodion y cartref ac yn torri gwasanaethau sy'n disgwyl y ffynhonnell wreiddiol. Mae llwybreiddio heb NAT yn cadw cyfeiriadau cleientiaid yn weladwy ond yn dibynnu ar y llwybr dychwelyd uchod. Dewiswch un a thriniwch DNS ac IPv6 yr un ffordd, oherwydd mae llwybr IPv4 sy'n gweithio wrth ochr llwybr IPv6 wedi torri yn dal i ddarllen fel hanner-torri mewn porwr.

Gwiriwch y daith gron, yna torrwch hi yn fwriadol

Profwch o gleient hotspot, byth o'r Pi, oherwydd mae traffig y Pi ei hun yn osgoi'r llwybr ymlaen a'r llwybr dychwelyd. Gwyliwch y ddau ryngwyneb tra bod un cleient yn ceisio cyrraedd gwasanaeth cartref.

tcpdump -ni br0 host 192.168.77.10
tcpdump -ni tun0 host 192.168.77.10
ping -c 3 192.168.77.10

Darllenwch y ddau gipiad gyda'i gilydd. Mae ceisiadau ar br0 nad ydynt byth yn ymddangos ar tun0 yn golygu nad yw'r Pi yn anfon ymlaen neu fod y llwybr yn pwyntio i rywle arall. Mae ceisiadau ar tun0 heb atebion yn golygu nad oes gan yr ochr gartref lwybr dychwelyd neu fod y gweinydd wedi hidlo'r pecyn. Mae atebion ar tun0 nad ydynt byth yn ailymddangos ar br0 yn golygu bod y rheol hidlo wrthdro ar goll, lle mae'r twmnel yn edrych yn berffaith ac mae'r cleient yn dal i weld dim.

Yna torrwch y llwybr yn fwriadol. Tynnwch gysylltiad y modem i lawr ac yn ôl i fyny a rhedeg y gwiriadau llwybr a chipio eto; mae llwybr sy'n goroesi'r twmnel ond yn diflannu ar ailgysylltu yn perthyn i broffil y cysylltiad, nid i orchymyn un-tro. Cadarnhewch fod cludiant y twmnel yn dal i adael drwy'r underlay ac nid drwyddo'i hun, y ddolen glasurol pan dderbynnir llwybr rhagosodedig wedi'i wthio heb lwybr gwesteiwr at y cymar.

Derbyniwch y dyluniad dim ond pan all cleient hotspot ddatrys enw cartref, agor gwasanaeth TCP, a chadw sesiwn yn fyw dros un ailgysylltiad modem. Os oes angen darganfod ar lefel Ethernet ar y segment cartref ar ryw gymhwysiad, dewiswch ddyluniad Layer 2 a gefnogir yn lle disgrifio'r bont leol fel un bontiedig a disgwyl i ddarllediad ymddangos.

Erthyglau cysylltiedig