Drie ontwerpe los dieselfde laboratoriumprobleem op: 'n klein LAN wat deur 'n WireGuard-eweknie moet uitgaan terwyl die gateway self sy gewone opstuurverbinding behou. Die verleidelike kortpad is om die router se standaardroete in die tonnel te skuif, wat die boks se eie bestuurspad en alles anders wat dit deurstuur, breek. Die interessante opsie is beleidsroetering wat tot een koppelvlak en een voorvoegsel beperk is. Kies tussen hulle deur drie vrae oor die masjien wat jy werklik het, te beantwoord.

Bepaal waar die uitgang woon

Eerste vraag: stuur hierdie gasheer vir iets anders deur? 'n Toegewyde laboratorium-gateway kan met 'n standaard-verwerp-deurstuurbeleid leef. 'n Router met produksiepligte kan dit nie, en om 'n mededingende reëlstel oor 'n bestuurde vuurmuur te lê, is hoe onderbrekings geskeduleer word. Tweede: kan jy twee beleidsobjekte en hul ordening oor herlaai heen besit? Derde: magtig die eweknie wat jy het jou tonnelbronadres en bied dit internet-uitgang? 'n Eweknie wat net 'n private netwerk blootlê, is 'n ander produk, en geen plaaslike roeteringsverandering maak dit reg nie. As enige antwoord nee is, sit die uitgang eerder in 'n naamruimte of 'n weggooibare virtuele masjien.

Naamruimte of 'n VM kos geheue en gee jou 'n skoon ontploffingsradius. Beleidsroetering kos twee reëls en laat jou met een boks om te ontfout.

Kies die uitgang wat jou bron magtig

Die meeste mislukkings in hierdie laboratorium gebeur voordat 'n enkele vuurmuurreël bestaan. Die uitgangsoperateur moet die bronadres aanvaar wat jou pakkette na vertaling dra, wat in hierdie ontwerp die tonneladres is eerder as die LAN-voorvoegsel. Dit is waarom maskering van die begin af in die ontwerp hoort, eerder as om dit later by te voeg.

Bevestig drie dinge by die operateur: die eweknie magtig jou tonneladres, dit stuur IPv4 deur in plaas daarvan om by homself te eindig, en dit pas uitgaande NAT toe. Sonder die eerste kom jou pakkette aan en verdwyn. Sonder die derde vertrek hulle met 'n private bron en sterf op die volgende sprong. Kyk dan of wg-quick nie sy eie standaardroete installeer nie, wat Table = off verhoed; daardie instelling onderdruk roeteskepping, nie die eweknie se AllowedIPs-kontroles of sy DNS-hantering nie.

Twee beleidsobjekte doen die stuur

Stuur vereis 'n tabel en 'n reël. Die tabel hou twee roetes: die LAN-voorvoegsel uit die LAN-koppelvlak en 'n standaard uit die tonnel. Die reël stuur verkeer wat op die LAN-koppelvlak aankom en daardie voorvoegsel dra, in die tabel in. Gebruik die iif-keurder saam met die bronpassing, want die gateway se eie WireGuard-pakkette ontstaan plaaslik en pas nooit by 'n inkomende koppelvlak nie.

Die wag kom voor die soektog, nie daarna nie. Daardie ordening is die hele veiligheidseienskap van die ontwerp.

Die wag is 'n tweede reël op dieselfde keurder wie se uitspraak unreachable is. Gee dit 'n hoër numeriese prioriteit sodat die soektog steeds wen terwyl die tonnel op is. Wanneer die tonnelroete verdwyn, gee die soektog niks terug nie en die wag stop die soektog, eerder as om dit deur te laat val na die WAN-standaard in die hooftabel.

ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0

Sluit die terugvalgaping voordat jy dit oopmaak

Installeer die wag eerste en die soektog tweede. Om dit andersom te doen, laat 'n venster van sekondes waarin 'n toetskliënt se verkeer die opstuurverbinding kan bereik.

Die filter voltooi die prentjie. In die forward-haak, aanvaar die LAN-tot-tonnel-rigting vir die toetsvoorvoegsel en die gevestigde terugrigting, en verwerp dan alles anders; NAT vir daardie voorvoegsel op die tonnelkoppelvlak gaan in postrouting. Om policy drop op die deurstuurketting te laat, is wat 'n ontbrekende roete in stilte verander eerder as in 'n lek. Omgekeerde-pad-filtrering benodig los modus op die tonnelkoppelvlak, want 'n publieke bron wat gedekapsuleer aankom, het sy beste omgekeerde roete aan die WAN-kant. Linux neem die hoogste van die all- en per-koppelvlak-waardes, so om die tonnelkoppelvlak te stel is nie dieselfde as om validering oral te verswak nie.

Bewys dit met die mislukkingsgeval

Vra die kern 'n presiese vraag deur die kliënt se bronadres en die koppelvlak waarop dit aankom, te noem. 'n Soektog sonder albei beantwoord 'n ander vraag en sal in elk geval korrek lyk. Kyk dan na die vuurmuurtellers, die eweknie se oordragtoestand en die kliënt se eie diens.

Toets verwydering behoorlik. Stop die tonnel terwyl die reël en die filter in plek bly: die kliënt behoort te stagneer en die gateway se eie verkeer behoort aan te hou werk. Stop dan die eweknie sonder om aan die plaaslike koppelvlak te raak, want dit is die geval wat ontwerpe vang wat net op die bestaan van 'n roete staatmaak. Herlaai uiteindelik en herkontroleer reëlordening, want 'n afbreekhaak wat die wag verwyder, gee die hele ontwerp aan die hooftabel terug. Teken die tabelnommer, prioriteite en koppelvlakname op die veranderingsticket aan, want die volgende persoon wat 'n reël byvoeg, is die een wat dit sal breek.

Verwante artikels