Żewġ siti, subnet wieħed, hub WireGuard wieħed: agħmel li jaħdem
Iż-żewġ LAN jinsabu fuq 10.10.7.0/24, għalhekk il-hub ma jistax jagħżel sit skont id-destinazzjoni. Agħti lil kull servizz alias u ttraduċi fil-gateway tiegħu.
Iż-żewġ siti jużaw l-istess firxa LAN, u l-koinċidenza mhix dik li verament tkisser id-disinn. L-hub irid jagħżel sit bl-indirizz tad-destinazzjoni biss, u żewġ destinazzjonijiet identiċi ma jagħtuh xejn biex jagħżel bih. Li terġa' tnumera uffiċċju li jaħdem biex tissodisfa tunell normalment hija skambju agħar milli tagħti lil kull servizz ippubblikat indirizz distint li t-tunell jista' jġorr. Id-disinn hawn taħt jippubblika servizz HTTPS wieħed għal kull sit u xejn aktar.
Għalfejn il-koinċidenza mhix il-problema vera
WireGuard jgħaddi skont id-destinazzjoni: l-AllowedIPs ta' peer jiddeċiedu liema peer jirċievi pakkett. Żewġ peer ma jistgħux it-tnejn jħabbru 10.10.7.0/24 mingħajr ma wieħed minnhom jirbaħ kull tfittxija. Din hija proprjetà tat-tabella tal-peer u mhux tat-tunell, għalhekk is-soluzzjoni hawn hija pjan ta' indirizzi u mhux trick ta' routing.
Il-pjan huwa li tieqaf tħabbar il-LAN għal kollox. Minflok ħabbar alias għal kull servizz, indirizz wieħed għal kull sit, u ħalli l-gateway ta' kull sit jittraduċi dak l-alias fl-applikazzjoni vera tiegħu.
L-utent jirrotta żewġ indirizzi uniċi, qatt ma jara l-prefiss ambiguwu, u xejn ma jinbidel f'ebda wieħed miż-żewġ uffiċċji. Dan jgħid ukoll il-konfini b'onestà: inti qed tippubblika servizz HTTPS wieħed minn kull sit, mhux tgħaqqad żewġ netwerks. Ir-regoli li ġejjin jibqgħu żgħar għax id-dikjarazzjoni hija dejqa. Dikjarazzjoni usa' teħtieġ regoli usa', u hekk dawn id-disinni jsiru kkumplikati.
Agħti lil kull sit alias li l-utent jista' jirrotta
Agħżel indirizzi minn firxa li ma tikkonfliġġix ma' xejn fuq il-magna tal-utent, il-hub jew xi waħda miż-żewġ LAN. Hawn il-hub huwa 10.66.0.1, l-utent huwa 10.66.0.10, il-gateways huma 10.66.0.21 u 10.66.0.22, u ż-żewġ alias huma 10.77.1.20 u 10.77.2.20. Il-hub jippubblika kull alias permezz tal-peer li jippossjedih, għalhekk pakkett ħiereġ indirizzat lil alias wieħed jista' joħroġ biss mis-sit korrispondenti:
[Interface]
Address = 10.66.0.1/32
ListenPort = 51820
PrivateKey = HUB_KEY
[Peer]
PublicKey = USER_PUBLIC_KEY
AllowedIPs = 10.66.0.10/32
[Peer]
PublicKey = SITE_A_PUBLIC_KEY
AllowedIPs = 10.66.0.21/32, 10.77.1.20/32
[Peer]
PublicKey = SITE_B_PUBLIC_KEY
AllowedIPs = 10.66.0.22/32, 10.77.2.20/32
In-naħa tal-utent għandha bżonn biss iż-żewġ alias, li jżomm il-konfigurazzjoni tal-klijent ħielsa miż-żewġ prefissi LAN. Xejn f'dik il-konfigurazzjoni ma jsemmi xi LAN vera:
[Interface]
Address = 10.66.0.10/32
PrivateKey = USER_KEY
[Peer]
PublicKey = HUB_PUBLIC_KEY
Endpoint = hub.example.net:51820
AllowedIPs = 10.77.1.20/32, 10.77.2.20/32
PersistentKeepalive = 25
Kull gateway iħabbar il-hub u s-sors tal-utent, xejn aktar, għalhekk sit qatt ma jitgħallem il-LAN tas-sit l-ieħor. Keepalive iżomm immappjar NAT fuq l-uplink tas-sit; ma jawtorizzax traffiku, u l-firewall xorta jiddeċiedi x'inhu ammess. L-ikkupjar il-konfigurazzjoni ta' gateway wieħed għall-ieħor huwa tajjeb sakemm il-kjavi privata, l-indirizz tal-interface u l-alias kollha jinbidlu.
X'għandu l-hub jippermetti bejn tnejn mill-peer tiegħu
Il-hub jgħaddi pakketti bejn tnejn mill-peer tiegħu stess, li hija deċiżjoni fil-katina forward u mhux deċiżjoni tal-input. Attiva l-forwarding IPv4 permezz tal-mekkaniżmu normali tal-pjattaforma, imbagħad ippermetti eżattament il-pari li d-disinn jeħtieġ.
Ir-regola hawn taħt tippermetti lill-utent alias wieħed u port wieħed, u tippermetti traffiku lura permezz tal-intraċċar tal-konnessjonijiet. Hija twarrab kull ħaġa oħra fil-mogħdija forward, u dan huwa l-punt:
nft add table inet hub_transit
nft add chain inet hub_transit forward '{ type filter hook forward priority 0 ; policy drop ; }'
nft add rule inet hub_transit forward ct state established,related accept
nft add rule inet hub_transit forward iifname wg0 oifname wg0 tcp dport 443 ip saddr 10.66.0.10 ip daddr 10.77.1.20 accept
Żewġ dettalji jixirqilhom jissemmew għax jikkawżaw fallimenti siekta. Accept f'katina bażi waħda ma jegħlebx drop f'oħra, għalhekk ħallat dan mal-politika eżistenti minflok ma tgħabbih maġenbu. U l-indirizz tas-sors jidentifika l-apparat, mhux il-persuna; żomm l-awtentikazzjoni tal-applikazzjoni separata mill-ammissjoni fin-netwerk.
Fejn alias isir indirizz veru
Is-sit A jirċievi talba għal 10.77.1.20, jerġa' jikteb id-destinazzjoni għall-applikazzjoni vera, u jerġa' jikteb is-sors għall-indirizz LAN tiegħu stess biex it-tweġiba tkun tista' tirritorna mingħajr rotta għat-tunell. Li tagħmel iż-żewġ traduzzjonijiet f'post wieħed iżomm il-bqija tan-netwerk injoranti dwar l-alias. Ir-regoli hawn taħt huma l-mekkaniżmu kollu:
nft add table ip site_a_nat
nft add chain ip site_a_nat pre '{ type nat hook prerouting priority -100 ; policy accept ; }'
nft add chain ip site_a_nat post '{ type nat hook postrouting priority 100 ; policy accept ; }'
nft add rule ip site_a_nat pre iifname wg0 tcp dport 443 ip saddr 10.66.0.10 ip daddr 10.77.1.20 dnat to 10.10.7.20:443
nft add rule ip site_a_nat post iifname wg0 oifname lan0 tcp dport 443 ip saddr 10.66.0.10 ip daddr 10.10.7.20 snat to 10.10.7.2
Il-politika forward tas-sit A mbagħad trid tammetti l-fluss tradott mill-interface tat-tunell għall-interface LAN, flimkien mad-direzzjoni lura. Il-hook forward jara d-destinazzjoni wara t-traduzzjoni tad-destinazzjoni u qabel il-kitba mill-ġdid tas-sors, għalhekk ir-regola ssemmi l-indirizz tal-applikazzjoni vera. Aqra dawn iż-żewġ hooks f'dik l-ordni kull meta regola tidher li ma taqbel ma' xejn. Regola forward miktuba kontra l-alias qatt ma tista' taqbel, għax l-alias ma għadux jeżisti f'dak il-hook.
Is-sit B jirrepeti dan bl-alias tiegħu u bil-kjavi tiegħu. M'għandux jerġa' juża l-kjavi privata tas-sit A, għax żewġ peer li jaqsmu identità waħda huma żball ta' konfigurazzjoni li huwa diffiċli biex jidher u faċli biex jinħoloq billi tikkupja fajl. Żomm iż-żewġ dokumenti tal-gateway identiċi ħlief għall-valuri li jridu jkunu differenti, biex id-differenza tidher fir-reviżjoni. Fajl ikkupjat huwa l-oriġini tas-soltu ta' dak id-difett.
Il-kitba mill-ġdid tas-sors għandha prezz. L-applikazzjoni tara l-gateway bħala l-klijent tagħha, għalhekk il-logs tagħha ma jurux aktar liema utent ikkonnetta. Żomm it-traċċa tal-awditjar tal-gateway, u tiddgħajjifx id-dħul tal-applikazzjoni biex tikkumpensa għal identità tan-netwerk li t-traduzzjoni neħħiet.
Kif tipprova li ż-żewġ ismijiet ippubblikati jwieġbu
Agħti lil kull alias isem DNS u kkonfigura l-applikazzjoni u ċ-ċertifikat għal dak l-isem, għax it-traduzzjoni ma terġax tikteb ridirezzjonijiet jew URLs assoluti inkorporati. Uża isem wieħed għal kull sit biex diskrepanza fiċ-ċertifikat qatt ma tista' tiġi mifhuma ħażin bħala ħsara fir-routing.
Ittestja mill-klijent veru, ikkonferma liema sit wieġeb, u ittestja wkoll port mhux awtorizzat. Uża konnessjonijiet ġodda wara kull bidla fin-NAT, għax l-istat stabbilit iżomm l-immappjar il-qadim:
wg show wg0 allowed-ips
sudo nft list ruleset
curl -sS -o /dev/null -w "%{http_code}\n" https://site-a.example.net/
Alias vojt jew mhux mistenni fl-ewwel kmand ifisser li l-għażla tal-peer hija ħażina qabel ma tkun importanti xi regola tal-firewall. Jekk l-alias huwa tajjeb u l-isem xorta jonqos, il-problema mxiet għal DNS u ċertifikati. Ladarba ż-żewġ ismijiet iwieġbu u t-tielet port jibqa' magħluq, id-disinn jagħmel dak li jiddikjara: żewġ servizzi ppubblikati b'mod dejjaq, mhux żewġ LAN magħquda.