Lokale Wi-Fi- en Ethernet-klanten ferbine har mei de hotspot fan 'e Pi, helje in adres út syn DHCP-berik en lade ynternetsiden sûnder klacht. Deselde klanten krije dan in time-out as se in triemdiele of in webynterface op it thús-LAN iepenje, wylst de Pi sels dat LAN oer de tunnel berikt. Der is neat yn 'e draadleaze laach stikken. Wat ûntbrekt is in rûtearre kontrakt: it hotspot-foarheaksel moat yn 'e TUN-ynterface droegen wurde, en eat oan 'e thúskant moat witte hoe't antwurden der werom stjoerd wurde. Beide helten moatte bestean foardat ien pakket de rûnreis foltôgje kin.

Trije oanslutings mei trije ferskillende taken

In Linux Ethernet-brêge stjoert frames troch op doel-MAC-adres. OpenVPN yn TUN-modus draacht IP-pakketten en hat hielendal gjin MAC-laach, dus it tafoegjen fan in lokale brêge registrearret de tunnel nea as poarte. De TUN/TAP-dokumintaasje fan 'e kernel ferklearret dy skieding: in TAP-apparaat liket op in Ethernet-ynterface, in TUN-apparaat net. In ûntwerp dat twa lokale poarten oerbrêget en dan rûtearret is in rûter, wat de ynterfacenammen ek sizze.

Dy skieding beslút it eigendom. It subnet fan 'e klanten, har standertgateway en it DHCP-gesach foar dat berik hearre by it lokale plan fan 'e Pi. Thús-DHCP-útstjoerings geane net oer in rûtearre tunnel, en gjin brêge-ynstelling feroaret dat; de klanten nei in thús-DHCP-tsjinner wize is in apart, bewust relay-ûntwerp mei syn eigen flatermodi.

Hâld de modem ek bûten de klantbrêge. In PPP-oansluting is gjin Ethernet-apparaat mei in oar label, en de dokumintearre standertrûte-logika fan pppd rint nei IPCP-ûnderhanneling en lûkt syn rûte werom as dy keppeling falt. In DHCP-sjabloan kopiearje en elk usb0 nei ppp0 werneame bewiist neat oer gateway, metryk of libbenssyklus.

Kies de foarheaksels foardat jo any konfiguraasje bewurkje

Oerlaapjende foarheaksels ferspylje mear jûnen as firewall-regels, omdat in oerlaap de rûtesyktocht nei de ferkearde ynterface stjoert sels as de tunnel sûn is. Begjin mei it listjen fan wat al op 'e Pi bestiet, en lês it resultaat dan as fjouwer aparte puollen.

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

De earste puol is it underlay-adres dat de provider oan 'e modem joech; it moat bûten elk klantrjochte plan bliuwe. De twadde is it tunnelsubnet dat de tsjinner keas, faak in eigen privee /24-netwurk. De tredde is de hotspot-brêge, en de fjirde is it thúsfoarheaksel dat jo berikke wolle. Yn dizze trochrin kriget de hotspot 172.28.90.0/24 mei de brêge op 172.28.90.1, en it thústsjin-LAN hâldt 192.168.77.0/24, wat de standertwearden 192.168.1.0/24 en 10.0.0.0/24 dy't konsuminterûters meibringe en it providerberik 100.64.0.0/10 mijt.

Kundigje it brêge-adres as gateway oan yn it DHCP-berik fan 'e hotspot en neat oars. Jou hotspot-klanten nea in thúsadres as gateway; se hawwe gjin paad op keppelingslaach nei dat segmint.

Rûtearje elke rjochting oan 'e kant dy't it besit

De Pi hat in rûte nedich foar it thúsfoarheaksel troch de tunnel. Tsjinners yn tsjinnermodus triuwe dy rûte normaal, dus befêstigje earst dat trochstjoeren oan is en dat de kernel in thúsadres út tun0 oplost.

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

As ip route get noch hieltyd de underlay-ynterface rapportearret, stopje dêr; neat fierder op it paad kin in ferkearde syktocht reparearje.

Thúsapparaten hawwe gjin rûte nei 172.28.90.0/24, dus har antwurden folgje de standertgateway en stjerre by de rûter. Twa stipe reparaasjes besteane. Of foegje in statyske rûte ta op 'e thúsrûter dy't it hotspot-foarheaksel nei it LAN-adres fan 'e VPN-tsjinner wiist, of, as de tsjinner sels de gateway is, registrearje it klantfoarheaksel yn 'e eigen rûtetabel fan 'e tsjinner. Yn 'e multy-klantmodus fan OpenVPN draacht de klientspesifike map dy assosjaasje: in triem neamd nei de mienskiplike namme fan it kliintsertifikaat, mei iroute 172.28.90.0 255.255.255.0 plus de byhearrende route-rigel dy't it yn 'e tsjinnerkernel ynstallearret. In rieden kernelrûte op 'e tsjinner is net deselde útspraak as de tsjinner fertelle hokker klant it foarheaksel besit.

Ferpleats de DHCP-tsjinst fan it thúsnetwurk net nei de VPN-tsjinner om dit wurkje te litten. De standertgateway foar in hiel hûs ferfange is in folle gruttere feroaring as ien privee weromrûte tafoegje, en it sleept DNS, adresreservaasjes en elk apparaat dat de nije lease negearret yn 'e flater.

Iepenje trochstjoeren sûnder te rieden oan 'e firewall

Dat trochstjoeren oan is betsjut net dat it pakket trochlitten wurdt. Ferkeer fan 'e brêge nei de tunnel rekket noch hieltyd de filterregels, en in standert-drop-trochstjoerbelied smyt hotspot-ferkear fuort wylst it eigen ferkear fan 'e Pi trochgiet, wat krekt it spjalte symptoom hjirboppe opleveret.

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

Sykje nei in akseptregel fan br0 nei tun0 en de byhearrende antwurdrichtung, en nei in postrouting-regel dy't de boarne oanskriuwe kin. As it ketenbelied drop is en gjin regel past, foegje de smelle aksepten ta en test opnij, ynstee fan it belied nei accept te draaien.

Oersetting is in beliedskeuze, gjin eask. Boarne-NAT nei it thús-LAN lit elke hotspot-klant lykje op it tunneladres fan 'e Pi, wat de taskriuwing per klant yn thúslogboeken ferliest en tsjinsten brekt dy't de oarspronklike boarne ferwachtsje. Rûtearjen sûnder NAT hâldt klantadressen sichtber mar is ôfhinklik fan 'e weromrûte hjirboppe. Kies ien en behannelje DNS en IPv6 itselde, want in wurkjend IPv4-paad njonken in stikken IPv6-paad lêst noch hieltyd as heal stikken yn in browser.

Ferifiearje de rûnreis en brek it dan mei opset

Test fan in hotspot-klant, nea fan 'e Pi, want it eigen ferkear fan 'e Pi giet sawol it hinne- as it werompaad foarby. Besjoch beide ynterfaces wylst ien klant in thústsjinst berikke wol.

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

Lês de beide opnamen tegearre. Oanfragen op br0 dy't nea op tun0 ferskine betsjutte dat de Pi net trochstjoert of de rûte earne oars hinne wiist. Oanfragen op tun0 sûnder antwurden betsjutte dat de thúskant gjin weromrûte hat of de tsjinner it pakket filtere. Antwurden op tun0 dy't nea wer op br0 ferskine betsjutte dat de omkearde filterregel ûntbrekt, wêrby't de tunnel perfekt liket en de klant dochs neat sjocht.

Brek dan it paad mei opset. Set de modemferbining del en wer omheech en rin de rûte- en opnamekontrôles opnij; in rûte dy't de tunnel oerlibbet mar by werferbining ferdwynt heart yn it ferbiningsprofyl, net yn in ienmalige opdracht. Befêstigje dat it ferfier fan 'e tunnel noch hieltyd troch de underlay giet en net troch himsels, de klassike lus as in triuwde standertrûte akseptearre wurdt sûnder in hostrûte nei de peer.

Akseptearje it ûntwerp pas as in hotspot-klant in thúsnamme oplosse kin, in TCP-tsjinst iepenje kin en in sesje oer ien modemwerferbining libben hâlde kin. As in applikaasje echt Ethernet-nivo-ûntdekking op it thússegmint fereasket, kies dan in stipe Layer 2-ûntwerp ynstee fan de lokale brêge as oerbrêge te beskriuwen en te wachtsjen oant útstjoering ferskynt.

Relatearre artikelen