Ojú-ọ̀nà méjì, subnet kan, gbọ̀ngàn WireGuard kan: jẹ́ kí ó ṣiṣẹ́
Àwọn LAN méjèèjì wà lórí 10.10.7.0/24, nítorí náà gbọ̀ngàn kò lè yan ojú-ọ̀nà nípasẹ̀ ibi-ìlọ̀. Fún iṣẹ́ kọ̀ọ̀kan ní alias kí o sì túmọ̀ ní ẹnubodè rẹ̀.
Àwọn ojú-ọ̀nà méjèèjì ń lo ìwọ̀n LAN kan náà, ìdàpọ̀ kì í sì ni ohun tí ó ń fọ̀ àpẹẹrẹ náà ní ti gidi. Gbọ̀ngàn gbọ́dọ̀ yan ojú-ọ̀nà nípasẹ̀ àdírẹ́sì ibi-ìlọ̀ nìkan, àwọn ibi-ìlọ̀ méjì tí ó jọra kò sì fún un ní ohun láti fi yan. Yíyan nọ́mbà ilé-iṣẹ́ tí ń ṣiṣẹ́ lẹ́ẹ̀kan sí i láti tẹ́ ẹ̀rọ-abẹ́ẹ̀rẹ́ kan lẹ́rù jẹ́ pàṣípààrọ̀ tí ó burú ju fífún gbogbo iṣẹ́ tí a tẹ̀jáde ní àdírẹ́sì ọ̀tọ̀ọ̀tọ̀ tí ẹ̀rọ-abẹ́ẹ̀rẹ́ náà lè gbé. Àpẹẹrẹ tí ó wà nísàlẹ̀ yìí tẹ̀jáde iṣẹ́ HTTPS kan fún ojú-ọ̀nà kọ̀ọ̀kan, kò sì sí ohun mìíràn.
Kí ni ìdí tí ìdàpọ̀ kì í ṣe ìṣòro gidi
WireGuard ń fi kọjá nípasẹ̀ ibi-ìlọ̀: AllowedIPs ti peer kan ń pinnu irú peer tí yóò gba pákẹ́ẹ̀tì. Peer méjì kò lè kéde 10.10.7.0/24 papọ̀ láìjẹ́ pé ọ̀kan nínú wọn borí gbogbo ìwádìí. Ìyẹn jẹ́ ànímọ́ tábìlì peer, kì í ṣe ti ẹ̀rọ-abẹ́ẹ̀rẹ́, ìdí nìyẹn tí ojútùú níbí fi jẹ́ ètò àdírẹ́sì, kì í ṣe ọ̀nà àrékérekè ìtọ́sọ́nà.
Ètò náà ni láti dá kéde LAN dúró pátápátá. Dípò bẹ́ẹ̀, kéde alias fún iṣẹ́ kọ̀ọ̀kan, àdírẹ́sì kan fún ojú-ọ̀nà kọ̀ọ̀kan, kí ẹnubodè ojú-ọ̀nà kọ̀ọ̀kan sì túmọ̀ alias yẹn sí ohun-èlò gidi rẹ̀.
Olùlò náà ń tọ́sọ́nà àdírẹ́sì méjì tí ó yàtọ̀, kò sì rí àkọ́sọ́nà àìdánilójú náà rí, kò sì sí ohun tí ó yí padà ní ilé-iṣẹ́ méjèèjì. Èyí tún sọ ààlà náà ní òtítọ́: ìwọ ń tẹ̀jáde iṣẹ́ HTTPS kan láti ojú-ọ̀nà kọ̀ọ̀kan, ìwọ kì í so nẹ́tíwọ́kì méjì pọ̀. Àwọn òfin tí ó tẹ̀lé ń dúró kéré nítorí pé gbólóhùn náà há. Gbólóhùn tí ó gbòòrò ju yẹn yóò nílò àwọn òfin tí ó gbòòrò, ìyẹn sì ni bí àwọn àpẹẹrẹ yìí ṣe ń di dídíjú.
Fún ojú-ọ̀nà kọ̀ọ̀kan ní alias tí olùlò lè tọ́sọ́nà
Yan àwọn àdírẹ́sì láti ìwọ̀n tí kò bá ohunkóhun lórí ẹ̀rọ olùlò, gbọ̀ngàn tàbí èyíkéyìí nínú LAN méjèèjì fà. Níbí gbọ̀ngàn ni 10.66.0.1, olùlò ni 10.66.0.10, àwọn ẹnubodè ni 10.66.0.21 àti 10.66.0.22, àwọn alias méjì sì ni 10.77.1.20 àti 10.77.2.20. Gbọ̀ngàn ń tẹ̀jáde alias kọ̀ọ̀kan nípasẹ̀ peer tí ó ni í, nítorí náà pákẹ́ẹ̀tì tí ó ń jáde tí a fi ránṣẹ́ sí alias kan lè jáde nípasẹ̀ ojú-ọ̀nà tí ó bára mu nìkan:
[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
Ẹ̀gbẹ́ olùlò nílò àwọn alias méjì nìkan, èyí tí ó ń pa ìṣètò ẹ̀rọ oníbàárà mọ́ kúrò nínú àkọ́sọ́nà LAN méjèèjì. Kò sí ohunkóhun nínú ìṣètò yẹn tí ó dárúkọ èyíkéyìí LAN gidi:
[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
Ẹnubodè kọ̀ọ̀kan ń kéde gbọ̀ngàn àti orísun olùlò, kò sí ohun mìíràn, nítorí náà ojú-ọ̀nà kì í kọ́ LAN ojú-ọ̀nà mìíràn rí. Keepalive ń pa ìfọwọ́sí NAT mọ́ lórí ìsopọ̀ òkè ojú-ọ̀nà; kò fún ìrìnàjò ní àṣẹ, ogiri-iná sì ṣì ń pinnu ohun tí a gbà. Dída ìṣètò ẹnubodè kan kọ sí èkejì dára nígbà tí kọ́kọ́rọ́ àṣírí, àdírẹ́sì ibi-ìsopọ̀ àti alias gbogbo bá yí padà.
Kí ni gbọ̀ngàn gbọ́dọ̀ gbà láàrín àwọn peer rẹ̀ méjì
Gbọ̀ngàn ń fi pákẹ́ẹ̀tì kọjá láàrín àwọn peer rẹ̀ méjì, èyí jẹ́ ìpinnu nínú ẹ̀wọ̀n forward kì í ṣe ìpinnu àbáwọlé. Mú ìfiránṣẹ́ IPv4 ṣiṣẹ́ nípasẹ̀ ọ̀nà déédéé ti pílátífọ́ọ̀mù, lẹ́yìn náà gba àwọn tọkọtaya tí àpẹẹrẹ náà nílò ní ti gidi.
Òfin tí ó wà nísàlẹ̀ yìí ń gba olùlò láàyè sí alias kan àti ibùdókọ̀ kan, ó sì ń gba ìrìnàjò ìpadàbọ̀ láàyè nípasẹ̀ títọpinpin ìsopọ̀. Ó ń ju ohun mìíràn gbogbo nù lórí ọ̀nà forward, ìyẹn sì ni kókó náà:
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
Àwọn kúlẹ̀kúlẹ̀ méjì yẹ kí a dárúkọ nítorí wọ́n ń mú àwọn ìkùnà ìdákẹ́jẹ́ wá. Accept nínú ẹ̀wọ̀n ìpìlẹ̀ kan kò fagilé drop nínú òmíràn, nítorí náà so èyí pọ̀ mọ́ ìlànà tí ó wà tẹ́lẹ̀ dípò kí o gbé e lẹ́gbẹ̀ẹ́. Àti pé àdírẹ́sì orísun ń dán ẹ̀rọ mọ̀, kì í ṣe ènìyàn; pa ìjẹ́rìí ohun-èlò mọ́ kúrò nínú gbígba nẹ́tíwọ́kì.
Ibi tí alias ti di àdírẹ́sì gidi
Ojú-ọ̀nà A ń gba ìbéèrè fún 10.77.1.20, ó ń tún ibi-ìlọ̀ kọ sí ohun-èlò gidi, ó sì ń tún orísun kọ sí àdírẹ́sì LAN tirẹ̀ kí ìdáhùn lè padà láìsí ọ̀nà sí ẹ̀rọ-abẹ́ẹ̀rẹ́. Ṣíṣe àwọn ìtúmọ̀ méjèèjì ní ibi kan ń pa ìyókù nẹ́tíwọ́kì mọ́ aláìnímọ̀ nípa alias. Àwọn òfin tí ó wà nísàlẹ̀ ni gbogbo ẹ̀rọ náà:
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
Lẹ́yìn náà ìlànà forward ojú-ọ̀nà A gbọ́dọ̀ gba ìṣàn tí a túmọ̀ láti ibi-ìsopọ̀ ẹ̀rọ-abẹ́ẹ̀rẹ́ sí ibi-ìsopọ̀ LAN, pẹ̀lú ọ̀nà ìpadàbọ̀. forward hook ń rí ibi-ìlọ̀ lẹ́yìn ìtúmọ̀ ibi-ìlọ̀ àti kí ó tó tún orísun kọ, ìdí nìyẹn tí òfin náà fi dárúkọ àdírẹ́sì ohun-èlò gidi. Ka àwọn hook méjèèjì yẹn ní ọ̀nà yẹn nígbàkigbà tí òfin kan bá dàbí ẹni pé kò bá ohunkóhun mu. Òfin forward tí a kọ lòdì sí alias kò lè bá a mu láé, nítorí alias kò sí mọ́ ní hook yẹn.
Ojú-ọ̀nà B ń tún èyí ṣe pẹ̀lú alias tirẹ̀ àti kọ́kọ́rọ́ tirẹ̀. Kò gbọ́dọ̀ tún kọ́kọ́rọ́ àṣírí ojú-ọ̀nà A lò, nítorí àwọn peer méjì tí ń pín ìdánimọ̀ kan jẹ́ àṣìṣe ìṣètò tí ó ṣòro láti rí tí ó sì rọrùn láti dá nípasẹ̀ dída fáìlì. Pa àwọn ìwé ẹnubodè méjèèjì mọ́ bíi kanna àyàfi àwọn iye tí ó gbọ́dọ̀ yàtọ̀, kí ìyàtọ̀ náà fara hàn nígbà àyẹ̀wò. Fáìlì tí a dà ni orísun déédéé ti àbùkù yẹn.
Dída orísun kọ ní iye kan. Ohun-èlò náà ń rí ẹnubodè gẹ́gẹ́ bí ẹ̀rọ oníbàárà rẹ̀, nítorí náà àwọn àkọsílẹ̀ rẹ̀ kò tún fi hàn irú olùlò tí ó so pọ̀. Pa ipasẹ̀ àyẹ̀wò ẹnubodè mọ́, kí o má sì sọ ìwọlé ohun-èlò di aláìlera láti èsan ìdánimọ̀ nẹ́tíwọ́kì tí ìtúmọ̀ yọ kúrò.
Bí a ṣe lè fi hàn pé àwọn orúkọ méjèèjì tí a tẹ̀jáde ń dáhùn
Fún alias kọ̀ọ̀kan ní orúkọ DNS kí o sì ṣètò ohun-èlò àti ìwé-ẹ̀rí fún orúkọ yẹn, nítorí ìtúmọ̀ kì í tún àwọn ìtúnjúwe tàbí URL pípé tí a fi sínú kọ. Lo orúkọ kan fún ojú-ọ̀nà kọ̀ọ̀kan kí àìbáraẹnisọ̀rọ̀ ìwé-ẹ̀rí má baà di àṣìṣe ìtọ́sọ́nà rí.
Dán wò láti ẹ̀rọ oníbàárà gidi, jẹ́rìí ojú-ọ̀nà tí ó dáhùn, kí o sì dán ibùdókọ̀ tí a kò gbà wò pẹ̀lú. Lo àwọn ìsopọ̀ tuntun lẹ́yìn ìyípadà NAT èyíkéyìí, nítorí ipò tí a ti fi idi múlẹ̀ ń pa ìfọwọ́sí àtijọ́ mọ́:
wg show wg0 allowed-ips
sudo nft list ruleset
curl -sS -o /dev/null -w "%{http_code}\n" https://site-a.example.net/
Alias tí ó ṣófo tàbí tí a kò retí nínú àṣẹ àkọ́kọ́ túmọ̀ sí pé yíyan peer kò tọ́ kí òfin ogiri-iná èyíkéyìí tó di pàtàkì. Bí alias bá tọ́ tí orúkọ náà sì ṣì kùnà, ìṣòro náà ti lọ sí DNS àti àwọn ìwé-ẹ̀rí. Nígbà tí àwọn orúkọ méjèèjì bá dáhùn tí ibùdókọ̀ kẹta sì wà ní títì, àpẹẹrẹ náà ń ṣe ohun tí ó sọ: iṣẹ́ méjì tí a tẹ̀jáde ní háhámọ́ra, kì í ṣe LAN méjì tí a so pọ̀.