Paano bibigyan ang isang test LAN ng sarili nitong WireGuard exit
Limitahan ang isang LAN sa isang WireGuard exit gamit ang isang nakalaang routing table at isang hindi maabot na bantay, habang pinapanatili ng gateway ang dati nitong WAN default route.
Tatlong disenyo ang lumulutas sa parehong problema sa laboratoryo: isang maliit na LAN na dapat lumabas sa pamamagitan ng WireGuard peer habang pinapanatili ng gateway mismo ang dati nitong uplink. Ang nakakaakit na shortcut ay ilipat ang default route ng router sa loob ng tunnel, ngunit sinisira nito ang sariling daan ng pamamahala ng kahon at lahat ng iba pang ipinapasa nito. Ang kawili-wiling opsyon ay policy routing na limitado sa isang interface at isang prefix. Pumili sa pagitan nila sa pamamagitan ng pagsagot sa tatlong tanong tungkol sa makinang talagang mayroon ka.
Magpasya kung saan nakatira ang exit
Unang tanong: nagpapasa ba ang host na ito para sa iba pang bagay? Ang isang nakalaang gateway ng laboratoryo ay mabubuhay sa isang patakaran ng pagpapasa na itinatapon ang lahat bilang default. Ang isang router na may mga tungkulin sa produksyon ay hindi kaya, at ang paglalagay ng nakikipagkumpitensyang set ng mga patakaran sa ibabaw ng pinamamahalaang firewall ay eksaktong paraan kung paano naka-iskedyul ang mga outage. Pangalawa: maaari mo bang pagmamay-ari ang dalawang bagay ng patakaran at ang kanilang pagkakasunod-sunod sa mga reboot? Pangatlo: pinapahintulutan ba ng peer na mayroon ka ang source address ng iyong tunnel at nag-aalok ba ito ng exit sa internet? Ang peer na naglalantad lamang ng pribadong network ay ibang produkto, at walang lokal na pagbabago sa routing ang makakapagpatama niyan. Kung anumang sagot ay hindi, ilagay ang exit sa isang namespace o sa isang virtual machine na gagamitin nang isang beses.
Ang namespace o VM ay kumakain ng memory at nagbibigay sa iyo ng malinis na blast radius. Ang policy routing ay kumakain ng dalawang patakaran at nag-iiwan sa iyo ng isang kahon na i-debug.
Piliin ang exit na nagpapahintulot sa iyong source
Karamihan ng mga pagkabigo sa laboratoryo na ito ay nangyayari bago pa man umiral ang isang tuntunin ng firewall. Dapat tanggapin ng operator ng exit ang source address na dala ng iyong mga packet pagkatapos ng pagsasalin, at sa disenyong ito iyon ang address ng tunnel at hindi ang prefix ng LAN. Kaya ang masking ay bahagi ng disenyo mula sa simula at hindi huli na dagdag.
Kumpirmahin ang tatlong bagay sa operator: pinapahintulutan ng peer ang address ng iyong tunnel, nagpapasa ito ng IPv4 sa halip na magtapos sa sarili nito, at naglalapat ito ng egress NAT. Kung wala ang una, dumarating ang iyong mga packet at nawawala. Kung wala ang pangatlo, lumalabas sila na may pribadong source at namamatay sa susunod na hop. Pagkatapos suriin na hindi nag-i-install ang wg-quick ng sarili nitong default route, na pinipigilan ng Table = off; ang setting na iyon ay pinipigilan ang paggawa ng ruta, hindi ang mga pagsusuri ng AllowedIPs ng peer o ang paghawak nito sa DNS.
Dalawang bagay ng patakaran ang gumagawa ng pagpipiloto
Ang pagpipiloto ay nangangailangan ng talahanayan at isang patakaran. Ang talahanayan ay may dalawang ruta: ang prefix ng LAN palabas ng interface ng LAN at isang default palabas ng tunnel. Ang patakaran ay nagpapadala ng trapikong dumarating sa interface ng LAN at nagdadala ng prefix na iyon papasok sa talahanayan. Gamitin ang selector na iif kasama ang pagtutugma ng source, dahil ang sariling mga packet ng WireGuard ng gateway ay nagmumula nang lokal at hindi kailanman tumutugma sa papasok na interface.
Ang bantay ay dumarating bago ang paghahanap, hindi pagkatapos. Ang pagkakasunod-sunod na iyon ang buong katangian ng seguridad ng disenyo.
Ang bantay ay ikalawang patakaran sa parehong selector na ang hatol ay unreachable. Bigyan ito ng mas mataas na numerikong priyoridad upang manalo pa rin ang paghahanap habang nakataas ang tunnel. Kapag nawala ang ruta ng tunnel, walang ibinabalik ang paghahanap at pinipigilan ng bantay ang paghahanap sa halip na hayaang mahulog ito sa default ng WAN sa pangunahing talahanayan.
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
Isara ang agwat ng pag-urong bago mo ito buksan
I-install muna ang bantay at pagkatapos ang paghahanap. Ang paggawa nito nang baligtad ay nag-iiwan ng ilang segundong bintana kung saan maaaring maabot ng trapiko ng test client ang uplink.
Kinukumpleto ng filter ang larawan. Sa hook na forward tanggapin ang direksyon mula LAN patungong tunnel para sa prefix ng test at ang naitatag na direksyon ng pagbabalik, pagkatapos itapon ang lahat ng iba pa; ang NAT para sa prefix na iyon patungo sa interface ng tunnel ay napupunta sa postrouting. Ang pag-iwan ng policy drop sa forward chain ang siyang nagiging sanhi ng nawawalang ruta ay katahimikan sa halip na pagtagas. Ang reverse-path filtering ay nangangailangan ng loose mode sa interface ng tunnel, dahil ang pampublikong source na dumarating na decapsulated ay may pinakamahusay na reverse route sa panig ng WAN. Kinukuha ng Linux ang mas mataas sa all at per-interface na halaga, kaya ang pagtatakda ng interface ng tunnel ay hindi katulad ng pagpapahina ng validation sa lahat ng dako.
Patunayan ito sa kaso ng pagkabigo
Tanungin ang kernel ng tiyak na tanong sa pamamagitan ng pagbanggit sa source address ng client at sa interface kung saan ito dumarating. Ang paghahanap na wala ang pareho ay sumasagot sa ibang tanong at magmumukhang tama sa alinmang kaso. Pagkatapos tingnan ang mga counter ng firewall, ang estado ng paglilipat ng peer at ang serbisyo mismo ng client.
Subukan nang maayos ang pag-alis. Itigil ang tunnel habang iniiwan ang patakaran at filter sa kanilang lugar: dapat huminto ang client at dapat patuloy na gumana ang sariling trapiko ng gateway. Pagkatapos itigil ang peer nang hindi hinahawakan ang lokal na interface, at iyon ang kaso na humuhuli sa mga disenyong umaasa lamang sa pagkakaroon ng ruta. Sa huli, i-reboot at suriing muli ang pagkakasunod-sunod ng mga patakaran, dahil ang teardown hook na nag-aalis ng bantay ay nagbabalik ng buong disenyo sa pangunahing talahanayan. Itala ang numero ng talahanayan, mga priyoridad at mga pangalan ng interface sa ticket ng pagbabago, dahil ang susunod na taong magdadagdag ng patakaran ang siyang sisira nito.