Lílọ DNS ìbéèrè ti oníbàárà WireGuard sí resolver mìíràn dà bí ìlànà kan ṣùgbọ́n ó ń huwà bí ìpinnu mẹ́ta. Ibi tí a ń lọ gbọdọ̀ tún kọ, pákẹ́tì gbọdọ̀ gbà kọjá, àti ìdáhùn gbọdọ̀ rí ọ̀nà padà nípasẹ̀ ipò ìtumọ̀ tí ẹnubodè ṣẹ̀dá. Tí o bá fo èkẹta, ìbéèrè yóò jáde ní mímọ́ nígbà tí oníbàárà yóò dúró títí.

Mú àpẹẹrẹ àwọn oníbàárà tí a fọwọ́ sí ní 10.77.0.0/24 tí wọ́n ń wá nípasẹ̀ wg0, tí wọ́n ń béèrè àdírẹ́sì tí a kéde 10.77.0.1 tí wọ́n sì nílò resolver ní 203.0.113.53. Àdírẹ́sì òkè jẹ́ àṣojú fún ìwé ẹ̀rí, kì í ṣe iṣẹ́ tí ń ṣiṣẹ́.

Yíyí ìbéèrè padà ń yí ibi tí ó ń lọ nìkan padà

Ìlànà NAT ibi-ìlọ ní PREROUTING ń tún àdírẹ́sì kọ ṣáájú kí a tó pinnu ọ̀nà, nítorí náà a ó gbé pákẹ́tì náà lọ sí ibi tuntun dípò ibi àtijọ́. Àdírẹ́sì orísun oníbàárà kò fọwọ́ kàn nípasẹ̀ iṣẹ́ yẹn. Ìdí ni pé ìlànà tí ó dà bí ẹni pé ó pé pátápátá lè ṣì mú ìdákẹ́jẹ́ wá: ìbéèrè ń lọ sí resolver tí kò tíì gbọ́ nípa ìwọ̀n ìkọ̀kọ̀ oníbàárà rí. ẹnubodè túmọ̀ pápá kan ó sì jogún ìṣòro kejì.

Àwọn ọ̀nà gbígbé DNS méjèèjì nílò àwọn ìlànà tí ó bá ara wọn mu, nítorí oníbàárà ń padà sí TCP nígbà tí a bá gé ìdáhùn kúrú.

Àwọn ìlànà tí ó wà nísàlẹ̀ yan interface kan tí ń wọlé, ìwọ̀n oníbàárà kan àti àdírẹ́sì ibi-ìlọ àkọ́kọ́ kan. Kò sí ohun mìíràn lórí ẹnubodè tí yóò kan, àti ìbéèrè láti ọ̀dọ̀ ẹnubodè fúnra rẹ̀ kò bá ara wọn mu rárá.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p udp --dport 53 -j DNAT --to-destination 203.0.113.53:53
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p tcp --dport 53 -j DNAT --to-destination 203.0.113.53:53

Ọ̀nà ìdáhùn jẹ́ ìpinnu ọ̀tọ̀

Àwọn ètò méjì ń jẹ́ kí ìdáhùn padà wá, àti yíyan ọ̀kan ní kùtùkùtù ń fi àkókò àtúnṣe kan pamọ́. Yálà resolver òkè ní ọ̀nà padà sí 10.77.0.0/24 nípasẹ̀ ẹnubodè yìí, tàbí ẹnubodè ń túmọ̀ orísun ní ibi-ìjáde kí ìdáhùn lè dé àdírẹ́sì tí òkè ti mọ̀ tẹ́lẹ̀. Méjèèjì ń ṣiṣẹ́; ọ̀kan ṣoṣo ni ó bá ìṣàkóso tí o ní lórí òkè mu.

Ìtọ́nà yẹ fún ìgbìyànjú àkọ́kọ́, nítorí ó ń pa àdírẹ́sì oníbàárà mọ́ ní hùhù fún resolver ó sì yẹra fún ìpele ìtumọ̀ kejì. Nígbà tí òkè wà ní òde ìṣàkóso rẹ, ìtumọ̀ orísun lórí interface ìjáde pàtó ni ìyàn tí ó wúlò.

Dín ìtumọ̀ yẹn kù bí i yíyí-padà, bí bẹ́ẹ̀ kọ́ ìlànà yóò di NAT fún gbogbo ohun tí ó bá ṣẹlẹ̀ láti bá a mu:

iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p udp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p tcp --dport 53 -j MASQUERADE

Ìtọpinpin ìsopọ̀ ń pa àwòrán mọ́ ní orísìí méjì, nítorí náà a tún ìdáhùn kọ padà sí tuple àkọ́kọ́ oníbàárà nígbà tí ó ń padà. Láìsí ìlànà ìjáde, resolver ń rán ìdáhùn rẹ̀ sí àdírẹ́sì ìkọ̀kọ̀ tí kò lè dé, oníbàárà sì ń rí àkókò tí ó tán dípò àṣìṣe.

Kọ àwọn ìlànà ní dídín ju bí iṣẹ́ ṣe dà

Àṣẹ gbígbé lọ jẹ́ ti ìwọ̀n kan náà. Gbà ìṣàn láti oníbàárà sí resolver àti ìrìnàjò ìpadà tí conntrack ti mọ̀ tẹ́lẹ̀, dípò gbígbà gbogbo ìsopọ̀ DNAT lórí ẹ̀rọ. Gbígbà gbogbo tún ń fàyè gba gbígbé ibùdókọ̀ tí kò ní í ṣe pẹ̀lú DNS.

Resolver ẹnubodè fúnra rẹ̀ jẹ́ ọ̀nà kóòdù mìíràn. Ìbéèrè tí a gbé jáde ní àdúgbò ń gba OUTPUT kọjá, nítorí náà dídánwò láti shell ẹnubodè kò dá ìlànà PREROUTING lẹ́kọ̀ọ́ bẹ́ẹ̀ ni ìlànà gbígbé lọ. Ìdí ni pé ìdánwò àdúgbò lè já sí rere nígbà tí gbogbo oníbàárà ń kùnà, àti ìdàkejì rẹ̀ pẹ̀lú jẹ́ èyí tí ó wọ́pọ̀.

Kò sí ohun kankan níbí tí ó bo DNS lórí HTTPS ní ibùdókọ̀ 443 tàbí DNS lórí TLS ní ibùdókọ̀ 853, kò sì sí ohun tí ó bo IPv6. Oníbàárà tí ó ní resolver IPv6 tí a ṣètò yóò fi inú dídùn kọbi ara sí gbogbo ètò náà.

Kí ni ìbéèrè tuntun ń fi hàn

Ìtọpinpin ìsopọ̀ ń rántí àwọn àwòrán àtijọ́, nítorí náà ìbéèrè tí a rán ṣáájú ìyípadà ìlànà lè gba ìdáhùn láti ipò àtijọ́ kí ó sì jẹ́ kí ìlànà tuntun dà bí ẹni tí ó ti bàjẹ́. Bẹ̀rẹ̀ pẹ̀lú ibùdókọ̀ orísun tuntun àti, níbi tí oníbàárà ti ń tọ́jú àwọn ìdáhùn, pẹ̀lú orúkọ tuntun.

dig @10.77.0.1 example.com A +short
conntrack -L -p udp --dport 53 | head

Àṣẹ àkọ́kọ́ fi hàn bóyá ọ̀nà oníbàárà ń yanjú rárá, tí kejì sì fi ìtumọ̀ tí ẹnubodè fi sílẹ̀ gan-an hàn, pẹ̀lú àwọn ẹ̀gbẹ́ méjèèjì tuple. Àwòrán tí ó ń tọ́ka sí resolver tí ó tọ́ ṣùgbọ́n tí olùka ìdáhùn rẹ̀ dúró ní òdo jẹ́ ìṣòro ọ̀nà ìpadà kì í ṣe ìṣòro àṣẹ́wọ́.

Ṣèdánilójú pé resolver mọ àwọn orúkọ tí o ń retí kí o tó yí ohunkóhun padà. Àròpo tí ó ń dáhùn àwọn orúkọ gbogbogbò ṣùgbọ́n kì í dáhùn agbègbè ìkọ̀kọ̀ rẹ ń yí ìwádìí tí ń ṣiṣẹ́ padà sí NXDOMAIN tí ó dà bí ọ̀nà abẹ́lẹ̀ tí ó ti bàjẹ́. Dán resolver wò ní tààrà, láti ẹnubodè, kí ọ̀nà oníbàárà tó kópa. Àti ìtọ́kasí àwọn àfikún iptables ń kọ ìtumọ̀ DNAT àti masquerade tí àwọn ìlànà wọ̀nyí gbẹ́kẹ̀ lé.

Àwọn àpilẹ̀kọ tó jọra