App kan nípasẹ̀ WireGuard: ìdèmọ́ kì í ṣe ìtọ́sọ́nà
Fífi app kan mọ́ wg0 ń ṣe àdírẹ́sì orísun rẹ̀ nìkan. Kernel ṣì nílò tábìlì kan pẹ̀lú àwọn ọ̀nà tunnel àti òfin kan tí yóò fi orísun yẹn ránṣẹ́ síbẹ̀.
Ètò náà dà bí ìyípadà fún app kọ̀ọ̀kan, nítorí náà àwọn ènìyàn máa ń fi client mọ́ interface WireGuard, wọ́n sì retí pé client yẹn nìkan ni yóò lo tunnel. Ohun tí ìdè náà ń ṣe ní ti gidi ni yíyan àdírẹ́sì orísun. Lẹ́yìn náà kernel yóò wá ọ̀nà sí ibi tí a ń lọ, yóò rí ọ̀nà àkọ́kọ́ tí ó wọ́pọ̀, yóò sì fi àdírẹ́sì tunnel náà kún un kí ó sì rán packet náà jáde nípasẹ̀ ìsopọ̀ ara. Ọ̀nà tí a yàn fún àdírẹ́sì orísun yẹn nìkan ni yóò mú èrò náà ṣẹ.
Ìlànà náà ní ìdajì méjì: tábìlì ìtọ́sọ́nà tí ìrìnàjò tunnel nìkan yẹ kí ó lò, àti òfin kan tí yóò fi orísun tí ó bá mu ránṣẹ́ síbẹ̀.
Ìdè ń ṣe àdírẹ́sì orísun, kò ju bẹ́ẹ̀ lọ
Linux ń yan interface jáde nípasẹ̀ wíwá ibi tí a ń lọ nínú tábìlì ìtọ́sọ́nà, lẹ́yìn tí àwọn òfin ìlànà bá ti ní àǹfààní láti yí ìwá yẹn padà sí ibòmíràn. Àwọn òfin lè yan nípa àdírẹ́sì orísun, àmì firewall, interface tí ń wọlé, UID tàbí pàápàá pọ́ọ̀tì; ọ̀kọ̀ọ̀kan jẹ́ ọ̀nà mìíràn láti sọ ìrìnàjò yìí dípò gbogbo rẹ̀. Ètò client VPN ń yan tábìlì tí ó ní àwọn ọ̀nà tunnel; òfin náà ń yan ìrìnàjò wo ni a gbà láàyè láti wò ó. Ìdè nìkan kò pèsè èyíkéyìí nínú àwọn méjèèjì.
Ìdí nìyẹn tí ìkùnà yìí fi dà bí àjèjì. App náà ń lo àdírẹ́sì tunnel dájúdájú, tunnel náà ń ṣiṣẹ́ dájúdájú, ìrìnàjò náà sì ń jáde nípasẹ̀ interface tí kò tọ́ dájúdájú. Gbogbo gbólóhùn jẹ́ òtítọ́, ní àpapọ̀ wọ́n sì ṣàpèjúwe ètò kan tí kò sí ohun tí ó so àdírẹ́sì mọ́ ọ̀nà.
Fún tunnel ní tábìlì tirẹ̀
wg-quick ń fi àwọn ọ̀nà sísọ̀ ní ibikíbi tí profáìlì bá sọ. Fífi Table = 40 kún [Interface] ń gbé wọn lọ sí tábìlì 40 dípò tábìlì àkọ́kọ́. Gbé interface náà sókè kí o sì rí i dájú pé wọ́n dé: ip -4 route ls table 40 yẹ kí ó fi àwọn ọ̀nà tunnel hàn, ip -4 route get 10.66.127.142 sì ń fi hàn bí kernel ṣe ń yanjú ọ̀kan nínú wọn báyìí. Nígbà tí àwọn ọ̀nà wà nínú tábìlì tiwọn, tábìlì àkọ́kọ́ ń bá a lọ ní ṣíṣẹ́ fún gbogbo ohun mìíràn.
Ṣe bẹ́ẹ̀ fún IPv6 dípò fífi àkọ́sí gbòòrò ṣe ìfarararà. ip -6 rule add from fd00::2/128 lookup 40 ń di àdírẹ́sì kan mú; fc00::/8 lè kọlu àwọn interface mìíràn lórí host kí ó sì dá òfin tí yóò bá pọ̀ ju bí a ti rò lọ.
Fi òfin orísun kún un kí o sì wo àwọn káńtà
Lẹ́yìn náà so ìdajì méjèèjì pọ̀: ip -4 rule add from 10.66.127.142/32 lookup 40, pẹ̀lú àdírẹ́sì kan náà tí a so mọ́ interface WireGuard. Fi òfin méjèèjì sínú PostUp kí ìsopọ̀ tuntun lè dá wọn padà. Fi ìbéèrè gidi ṣe àyẹ̀wò dípò ètò: ip route get 1.1.1.1 from 10.66.127.142 yẹ kí ó dárúkọ ẹ̀rọ tunnel, curl --interface wg0 ifconfig.me sì yẹ kí ó jábọ̀ àdírẹ́sì tunnel dípò ti ilé.
Bí ó bá ṣì kùnà, ka ip -s rule. Òfin tí ó wà ṣùgbọ́n tí kò bá pọ̀ rí ń fi káńtà òdo hàn, ìyẹn sì ń yàtọ̀ òfin tí kò tọ́ sí kíkùnà òfin pátápátá. Ìpàṣẹ kan yẹn ń gba ọ̀pọ̀ àròsọ lọ́wọ́ nípa bóyá app náà kò kọbi ara sí ètò interface rẹ̀.
Ọ̀ràn òdìkejì: pa SSH mọ́ síta kúrò nínú tunnel
Ìṣòro òdìkejì náà wọ́pọ̀ bákan náà: wg-quick ni ó ni ọ̀nà àkọ́kọ́, àti ìpàdé SSH sí server náà ń kú ní àárín. Àwọn òfin rẹ̀ jókòó lórí nọ́mbà ipò kéré, nítorí náà a gbọ́dọ̀ ṣàyẹ̀wò ìyàsọ́tọ̀ kí ó tó wọ́n. ip rule add dport 22 ipproto tcp table main priority 123 ń ṣe bẹ́ẹ̀ lórí iproute2 tuntun; níbi tí a kò bá rí olùyàn, sami ṣíṣàn náà ní nftables kí o sì bá àmì náà mu.
Wo ọ̀nà ìdáhùn pẹ̀lú. Ìpàdé SSH tí ó bá dá sílẹ̀ tí ó sì pa ẹnu mọ́ máa ń ní ìtọ́sọ́nà aláìdọ́gba: ẹ̀ka kan ń jáde nípasẹ̀ tunnel, èkejì nípasẹ̀ interface ara. ip route get fún àdírẹ́sì server yóò sọ ibi tí ìdáhùn yóò lọ.
Kọ nọ́mbà tábìlì, òfin orísun àti ìyàsọ́tọ̀ sínú profáìlì fúnra rẹ̀. Àwọn mẹ́tẹ̀ẹ̀ta jẹ́ ti àpẹrẹ kan, a ó sì ṣàtúnṣe wọn pọ̀.