Kill switch kìí ṣiṣẹ́ ní ọ̀nà kan tí àwọn ènìyàn kò retí: wọ́n kọ́ wọn láti dènà ìrìn ọ̀nà nígbà tí tunnel wà nísàlẹ̀, àwọn packet tó kọ́ tunnel sì jẹ́ ìrìn ọ̀nà fúnra wọn. Ìyẹn ni gbogbo àṣìṣe náà. Àkójọ ìlànà tó ń sọ ohun gbogbo tí kò jáde gba tunnel nù yóò sọ ìfọwọ́sowọ́pọ̀ tó yẹ kí ó gbé e ró nù pẹ̀lú, nítorí náà client ń gbìyànjú lẹ́ẹ̀kan sí i nínú loop, a sì ń fi àṣìṣe náà sí ipele tí a kọ́kọ́ yẹ̀wò. Kí o tó gbòòrò firewall, wádìí ipele wo nínú mẹ́ta ni a ń kọ̀: wíwá orúkọ, packet òde tó ń lọ sí peer, tàbí ìdáhùn tó ń padà.

Bí tunnel àti ìrìn ọ̀nà tirẹ̀ ṣe gbára lé ara wọn

Ka client VPN gẹ́gẹ́ bí ipò network méjì tó ń pín ọ̀nà socket kan. Kí tunnel tó wà, client ń ṣí socket lórí adapter ti ara, ó sì ń fi àwọn frame tí a ti fi ààmì ìkọ̀kọ̀ ránṣẹ́ sí àdírẹ́sì àti port peer. Lẹ́yìn tí ìpààrọ̀ yẹn bá ṣẹ́gun ni ó máa ń dá ẹ̀rọ tunnel, ó sì ń fi àwọn ipa ọ̀nà sórí. Kill switch jẹ́ ìlànà nípa ipò kejì, tí a kọ gbòòrò tó bẹ́ẹ̀ tí ó kan àwọn méjèèjì.

Àwọn ìlànà tó dá lórí interface ni ọ̀nà tó wọ́pọ̀: gba ohun tó jáde gba tun0 tàbí wg0, sọ ìyókù ipa ọ̀nà ìjáde nù. Ọ̀nà kíkọ yẹn kò lè yọ àjọṣepọ̀ client fúnra rẹ̀ sí server kúrò, nítorí náà ìmúṣẹ tó tọ́ ń fi ìyọkùrò yẹn kún ní kedere, ìwọ pẹ̀lú ń ṣe bẹ́ẹ̀ nígbà tí o bá ń kọ ìlànà pẹ̀lú ọwọ́. Àwọn ìlànà fún app kọọkan lórí Windows àti macOS ń yẹra fún apá kan nípa fífi process ṣe àfiwé dípò interface, ṣùgbọ́n process náà ṣì ní láti jáde kí tunnel tó wà.

Ìpele mẹ́ta, ní ìtòlẹ́sẹẹsẹ tí wọ́n ti ṣẹlẹ̀

Ìpele àkọ́kọ́ ni ìyọ̀ǹda. Nígbà tí profile bá ń tọ́jú orúkọ host dípò àdírẹ́sì gbáà, client nílò ìdáhùn DNS kí ó tó lè rán ohunkóhun. Profile tó ń darí DNS sí olùyọ̀ǹda tunnel ń dá ìdènà: a kì í lè dé olùyọ̀ǹda náà àfi gba tunnel tí ìwádìí yẹ kí ó ṣí. Yíyanjú ní òde tunnel, tàbí dídì ààyè ìparí mọ́ àdírẹ́sì kan, ń mú àìdánilójú yẹn kúrò.

Ìpele kejì ni packet òde, tí ó gbọ́dọ̀ kọ́kọ́ borí ipa ọ̀nà àti lẹ́yìn náà firewall, ní ìtòlẹ́sẹẹsẹ yẹn. wireguard-tools ń ṣe ìdajì ipa ọ̀nà yìí fún WireGuard nípa fífi ààmì sí àwọn packet tirẹ̀ àti fífi ìlànà ìlànà kún un kí wọ́n lè forí ipa ọ̀nà àkọ́kọ́ tí ó ṣẹ̀ṣẹ̀ fi sórí; ojú-ìwé ìtọ́nisọ́nà wg-quick ń ṣàlàyé ìlànà yẹn àti table tí ó ń lò. Tún ipa ọ̀nà yẹn kọ́ pẹ̀lú ọwọ́, tàbí jẹ́ kí irinṣẹ́ kejì tún àwọn ìlànà kọ, àwọn packet tí a fi ààmì sí lè padà wọnú tunnel tí wọ́n yẹ kí wọ́n dá.

Ìpele kẹta ni ipa ọ̀nà ìpadà. Ìfọwọ́sowọ́pọ̀ tí kò ní ìdáhùn kì í ṣe ẹ̀rí pé a sọ ọ́ nù ní ìjáde; ó bá ìlànà ìwọlé server tàbí ẹ̀rọ NAT tó gbàgbé ìsopọ̀ mu dáadáa. Yà wọ́n sọ́tọ̀ kí o tó fọwọ́ kan client.

What you seeStageWhere to look
The client log repeats a resolve step and no packets appear on the wire1, name lookupResolver path while the tunnel is down
The send counter on the physical adapter stays flat2, routingPeer route and policy rules
The send counter rises and a firewall drop counter rises2, firewallRule order, mark, and interface match
Packets leave and nothing comes back3, return pathServer input rules, NAT, listening port

Àwọn client ń kọ àmì àìsàn tí wọ́n rí, kì í ṣe ipele tó kùnà, nítorí náà table máa ń yára ju log lọ.

Àwọn counter ń pinnu kánkán ju log lọ

Lórí Linux, nft list ruleset tàbí iptables -vnL OUTPUT ń tẹ̀ counter packet fún ìlànà kọọkan. Sopọ̀ lẹ́ẹ̀kan, jẹ́ kí ó kùnà, lẹ́yìn náà tún àwọn counter kà. Ìlànà tí counter rẹ̀ gbéra ni ìlànà tí ìfọwọ́sowọ́pọ̀ kọlu; tí kò bá sí ibi kankan tí ohunkóhun gbéra, packet kò tíì dé firewall rárá. Mo ti rí àkójọ ìlànà tó sọ ìfọwọ́sowọ́pọ̀ tirẹ̀ nù, àwọn counter nìkan ló sọ bẹ́ẹ̀.

Láti yà kò tíì dé firewall rárá sọ́tọ̀ kúrò nínú kò tíì jáde kúrò lórí host rárá, ṣọ́ interface fúnra rẹ̀. ip -s link show dev wlan0 ń ròyìn àwọn packet tí a rán, àti tcpdump -ni wlan0 udp port 51820 ń fi àwọn frame hàn. Tí ó bá wà ní pẹlẹbẹ nígbà tí client ń tún gbìyànjú, àṣìṣe wà lókè netfilter: ipa ọ̀nà peer tó ṣẹ́, ìlànà tó ń tọ́ka sí ẹ̀rọ tí kò tíì sí, tàbí àṣìṣe socket tí client ń gbé mì.

Dán àwọn ìyọkùrò wò lórí àwọn àdírẹ́sì ìwé ìkẹ́kọ̀ọ́ bí 203.0.113.10, kí àṣìṣe má lè ṣàyẹ̀wò host ẹlòmíràn.

Ìyọkùrò ààyè ìparí tó ti pẹ́ ni a ka bí ìkùnà server

Ẹ̀yà tó ń tannijẹ́ jùlọ ń farahàn lẹ́yìn tí àdírẹ́sì peer bá yí padà: iṣẹ́ àdírẹ́sì aláìdúró ti gbé e lọ, a tún host kọ́, tàbí àdírẹ́sì ìjáde network rẹ yàtọ̀. Ìyọkùrò náà ṣì ń dárúkọ àdírẹ́sì àtijọ́, nítorí náà àwọn packet tó ń lọ sí tuntun ń kọlu ìlànà sísọ nù. Ìṣètò kan náà ń ṣiṣẹ́ lánàá, ìdí nìyẹn tí àwọn ènìyàn fi ń bẹ̀rẹ̀ pẹ̀lú ṣíṣàyẹ̀wò server.

Orúkọ host nínú ìlànà firewall kò gbà ọ́. Nínú nftables, a ń yanjú orúkọ nígbà tí a bá gbé àkójọ ìlànà wọlé, nítorí náà ó ń dì àdírẹ́sì tó wà ní àkókò yẹn mọ́, ó sì ń di àtijọ́ bí àdírẹ́sì gbáà. Ojútùú tó dúró ni láti ṣe àtúnṣe ìyọkùrò nígbà tí ààyè ìparí bá yí padà àti láti jẹ́ kí ó kúrò ní fífẹ̀: àdírẹ́sì peer kan, port ìrìn kan. Ìwọ̀n tó gbòòrò tó láti farada ìyípadà àdírẹ́sì tún gbòòrò tó láti jẹ́ kí ìrìn ọ̀nà tí kò kan ẹ̀ jáde.

Nígbà tí kill switch ń ṣiṣẹ́ lórí host server

Ìgbẹ́kẹ̀lé kan náà wà ní ìparí kejì, níbẹ̀ sì ni ó rọrùn láti pàdánù rẹ̀. Tí ẹ̀rọ tó ń ṣiṣẹ́ bí server VPN rẹ bá tún ń ṣiṣẹ́ client desktop tó ní kill switch, tàbí profile firewall tí a dà kọ láti laptop, àwọn ìlànà sísọ nù rẹ̀ kan iṣẹ́ tó ń parí àwọn tunnel. A ń sọ àwọn ìdáhùn sí ìfọwọ́sowọ́pọ̀ client nù, nítorí náà gbogbo client kò lè sopọ̀ nígbà tí server dà bí aláílè, tí interface tunnel rẹ̀ sì wà ní àìlò.

Host yẹn nílò ìgbàlá mẹ́ta tó kúrò ní fífẹ̀ kí a tó sọ nù: port ìgbọ́rọ̀ lórí interface ti ara, interface tunnel fún ìrìn tí a ti yọ ààmì ìkọ̀kọ̀, àti gbígbé láti tunnel lọ sí ibi tí àwọn client yẹ kí wọ́n dé. Ka àkójọ tí a fi sórí pẹ̀lú nft list ruleset, iptables -S, tàbí pfctl -sr kí o tó yí ohunkóhun padà, kí o sì rántí pé àkójọ ìlànà tí a fipamọ́ yóò ye ìtúnbẹ̀rẹ̀, nítorí náà àṣìṣe níbẹ̀ yóò ye process tó dá a.

Ìtòlẹ́sẹẹsẹ ìmúpadà tó ń jẹ́ kí ẹ̀rọ dúró ní títì

Ṣiṣẹ́ láti inú profile jáde. Ka àdírẹ́sì àti port peer tí client ń lò, jẹ́rìí pé orúkọ host ń yanjú láìsí tunnel, lẹ́yìn náà fi ìyọkùrò kan kún fún àdírẹ́sì àti port yẹn lórí adapter ti ara nìkan. Tún sopọ̀ kí o sì ṣọ́ counter ìránṣẹ́; ìfọwọ́sowọ́pọ̀ tó parí ni àmì pé a ti tún ipele kejì ṣe.

Fi ìyókù ìlànà sísọ nù sí ipò rẹ̀ nígbà ìdánwò. Àyẹ̀wò tí kò léwu ni láti gbìyànjú ìsopọ̀ sí àdírẹ́sì ìwé tí kò kan ẹ̀ kí o sì jẹ́rìí pé ó ṣì ń parí ní àkókò, èyí tó fi hàn pé kill switch ń ṣiṣẹ́, kì í ṣe pé a ti pa á. Di ìyọkùrò náà lẹ́kún nígbà tí tunnel bá dúró, kí o má sì fi àṣẹ gbogbo-nkan-láàyè tó dúró pẹ́ fún binary client kankan nìkan nítorí pé ó rọrùn.

Tí tunnel bá gòkè wá tí app ṣì ń kùnà, àwọn ipele tó kù kì í ṣe èyí: DNS pínpín, MTU àti ipa ọ̀nà fún app kọọkan ń dá tunnel tó sopọ̀ pẹ̀lú ìrìn tó dá, ipa ọ̀nà àkọ́kọ́ kọọkan sì yàtọ̀.

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