Àwọn orúkọ yóò dúró yíyanjú ní àkókò tí VPN bá so pọ̀, nígbà tí ping sí àdírẹ́sì gbogbo ènìyàn ṣì ń dáhùn àti ipò firewall kò fi ohunkóhun tí ó dàbí àṣìṣe hàn. Kò sí ohunkhún tí ó yí padà nínú ìlànà; ohun tí ó yí padà ni pé interface tuntun kan jáde, àti ìkọ̀sílẹ̀ àìlẹ́sẹ̀ ń bo ó láti packet àkọ́kọ́. UFW ń pinnu nípa ìtọ́sọ́nà àti interface, nítorí náà ìlànà tí a kọ fún ìsopọ̀ aláìló waya kò sọ nnkan kan nípa ìrìn àjò tí ó ń jáde kúrò nínú tunnel. Àtúnṣe ni àwọn ìlànà dín kíkún díẹ̀ tí a fi ẹ̀tọ́ pàtó kan lò.

Àmì náà ń farahàn lẹ́yìn tí tunnel bá gòkè nìkan

Ìlànà ìkọ̀sílẹ̀ àìlẹ́sẹ̀ ń ṣe gbáà ti a sọ fún un: ohunkhún tí kò ní ìlànà tí ó bá a mu ni a ń kọ̀sílẹ̀, lórí gbogbo interface tí ó wà. Tunnel kò sí nígbà tí a kọ àwọn ìlànà, nítorí náà kò sí ọ̀kan nínú wọn tí ó lè mú un, àti ìkọ̀sílẹ̀ tí ó wà nígbà gbogbo ń ṣiṣẹ́ sí yíyanjú orúkọ báyìí. Ìrìn àjò tààrà sí àdírẹ́sì gbólóhùn lè ṣì ṣiṣẹ́ nígbà tí ìyọ̀ǹda gbòòrò bá bo ó, ìdí nìyẹn tí ping sí resolver gbogbo ènìyàn fi ń ṣàṣeyọrí nígbà tí wíwá orúkọ ń kùnà. Àlàfo ni ìlànà fún interface tí ìlànà kò tíì rí.

Ìyẹn tún ṣàlàyé ìdí tí àìṣeyọrí fi yí padà dáadáa: yọ tunnel kúrò, orúkọ yóò tún yanjú, nítorí ìbéèrè yóò padà sí interface tí ó ní ìlànà. Ìlànà tí ó ń kùnà nìkan nígbà tí tunnel wà kì í ṣe ìṣòro DNS, àti yíyan resolver fúnra rẹ̀ ń fi àkókò púpọ̀ ṣòfò níbí. Ka àkójọ interface kí o tó ka ìṣètò resolver.

Àwọn ìtọ́sọ́nà mẹ́ta, àwọn àkójọ ìlànà mẹ́ta tí ó yàtọ̀

Ìpàdé kan ń fọwọ́ kan àwọn ìlànà ní ìtọ́sọ́nà tó ju ọ̀kan lọ, àti tunnel ń fi interface kejì kún fún fẹ́rẹ̀ gbogbo wọn. Títò ìrìn àjò lẹ́sẹ̀kẹsẹ̀ nípa ìtọ́sọ́nà àti interface ń sọ ìyókù di ẹ̀rọ, nítorí ọ̀wọ̀n kọ̀ọ̀kan ní ìsàlẹ̀ nílò ìlànà tirẹ̀ ní ibi tirẹ̀. Àwọn àpẹẹrẹ ń lò tun0 àti àkójọ 10.8.0.0/24, nítorí náà rọ́pò àwọn orúkọ àti ààlà pẹ̀lú àwọn tí ó wà nínú ìjáde client fúnra rẹ̀.

DirectionExample packetRule that admits itWritten on
Client to the pushed resolverA DNS query to 10.8.0.1Destination port 53 over the tunnelThe client's tun0
Client to the VPN serverA handshake to the server's public addressServer address and port on the physical linkThe client's physical interface
Server to a serviceSSH from the pool to port 22Source pool, destination port, tunnel interfaceThe server's tun0
Anyone to the listenerThe VPN listener itself1194/udp on the public sideThe server's public interface

Àwọn ọ̀wọ̀n méjì ni a sábà máa ń da pọ̀ nítorí àwọn méjèèjì ń mẹ́nu kan tunnel. Ìlànà fún resolver ń gbà ìrìn àjò tí client ń rán sínú tunnel, nígbà tí ìlànà fún SSH ń gbà ìrìn àjò tí server ń gbà láti ibẹ̀; wọ́n ń gbé lórí ẹ̀rọ ọ̀tọ̀ọ̀tọ̀ àti kùnà lọ́nà ọ̀tọ̀ọ̀tọ̀. Ọ̀wọ̀n tí a sábà máa ń gbàgbé ni èkejì, nítorí client kò lè kọ́ tunnel rárá títí di ìgbà tí a bá gba ìrìn àjò rẹ̀ sí àdírẹ́sì gbogbo ènìyàn server. Ṣiṣẹ́ láti orí dé ìsàlẹ̀ àti àìṣeyọrí kọ̀ọ̀kan ní ìdí kan tí ó ṣeéṣe.

Resolver tí a tì nílò ìlànà tirẹ̀

Bóyá tunnel ń gbé DNS wá dá lórí ohun tí server ń rán. Server tí ó ń tì àṣàyàn resolver ń fi àdírẹ́sì aládàáni sínú ìṣètò client, àti àdírẹ́sì yẹn ni a kò lè tọ́ ọ̀nà rẹ̀ yàtọ̀ sí í láti inú tunnel. Tí server kò bá tì nnkan, client yóò pa resolver tí ó ti ní mọ́, àwọn ìlànà ìsàlẹ̀ kò sì ní nnkan láti gbà. Ṣàyẹ̀wò ipò tí a tì àti àbájáde ìbéèrè lọ́wọ́ kí o tó kọ nnkan:

dig +short @10.8.0.1 example.com
resolvectl status tun0
sudo ufw status numbered

Ìjáde ipò ń dárúkọ resolver tí a ń lò àti ìsopọ̀ tí ó so mọ́, àti wíwá ọ̀nà tí ó wà lẹ́yìn rẹ̀ ń fi hàn interface tí yóò gbé ìbéèrè sí àdírẹ́sì yẹn. Nígbà tí resolver bá jókòó lórí ìsopọ̀ mìíràn, ìṣòro náà ti ṣáájú firewall àti kò sí ìlànà tí yóò ràn. Nígbà tí àwọn méjèèjì bá gbà nípa tunnel, a nílò ìlànà méjì, nítorí UDP ń gbé ọ̀pọ̀ ìbéèrè àti TCP ń gba ipò nígbà tí a bá gé ìdáhùn. Kọ àwọn iye méjèèjì, nítorí àwọn ni àwọn ìlànà yóò dárúkọ:

sudo ufw allow out on tun0 to 10.8.0.1 port 53 proto udp comment 'pushed resolver'
sudo ufw allow out on tun0 to 10.8.0.1 port 53 proto tcp comment 'truncated answers'

Ṣí ọ̀nà òde kí o tó ṣí ti inú

Client gbọdọ̀ dé àdírẹ́sì gbogbo ènìyàn server kí tunnel tó wà, nítorí náà ìlànà fún rẹ̀ jókòó lórí ìsopọ̀ ti ara àti pé ó gbọdọ̀ wà ní ibi rẹ̀ lákọ̀ọ́kọ́. Ìlànà tí ó gbà resolver ṣùgbọ́n tí ó gbàgbé server ń fi client sílẹ̀ láìlè kọ́ tunnel rárá, àti àmì yẹn ni a sábà máa ń gbé lé kill switch. Lẹ́yìn náà gbà àwọn iṣẹ́ tí o fẹ́ ní ti gidi láti inú tunnel, ìlànà dín kan lẹ́ẹ̀kan, dípò ṣí gbogbo interface. Àwọn ìlànà dín ni ìdí tí ìkọ̀sílẹ̀ fi lè dúró sí ibi rẹ̀.

sudo ufw allow out to 198.51.100.10 port 1194 proto udp comment 'vpn server'
sudo ufw allow out on tun0 to any port 443 proto tcp comment 'web through tunnel'

Ẹ̀tọ́ pàtó ṣe pàtàkì nígbà ìdánwò, nítorí ìlànà àkọ́kọ́ ni ó ń jẹ́ kí tunnel gòkè rárá. Fi kún un, so pọ̀, kí o sì jẹ́rìí pé tunnel ti gòkè kí o tó fi ìlànà iṣẹ́ kún, nítorí ṣíṣe àwọn méjèèjì lẹ́ẹ̀kan túmọ̀ sí pé àìṣeyọrí kò sọ nnkan fún ọ nípa èwo ìdajì tí ó dàbí. Rọ́pò àdírẹ́sì ìwé ìtọ́nisọ́nà lókè pẹ̀lú ibi ìparí tí a ṣètò client fún.

Parí ẹ̀gbẹ́ client nípa gé ìsopọ̀ pọ̀ lọ́nà àtinú. Ìkọ̀sílẹ̀ gbọdọ̀ ṣì kọ̀ ìrìn àjò tí o mọ̀ọ́mọ̀ yọ kúrò, nítorí resolver tí ń dáhùn nígbà tí tunnel wà ń bo ìdajì ìlànà tí ń kọ̀ nígbà àìdánilójú nìkan.

Client tí ó so pọ̀ kò tíì gbà

Server ní ìtọ́sọ́nà tirẹ̀ láti gbé yẹ̀wò, àti client tí ó parí ìfọwọ́sowọ́pọ̀ kò tíì dé nnkan tí ó ń ṣiṣẹ́ lórí server títí di ìgbà tí server bá gbà á. Ìlànà olùgbọ́ gbogbo ènìyàn ń jẹ́ kí tunnel wà nìkan; kò jẹ́ kí ìrìn àjò tunnel wọlé. Lórí server, ìyẹn ni ìlànà méjì pẹ̀lú àyẹ̀wò kan pé iṣẹ́ náà ń gbọ́ ní ti gidi:

sudo ufw allow 1194/udp comment 'openvpn listener'
sudo ufw limit in on tun0 from 10.8.0.0/24 to any port 22 proto tcp comment 'admin over tunnel'
ss -ltn | grep ':22'

Àkójọ nínú ìlànà gbọdọ̀ dọ́gba pẹ̀lú ààlà tí server ń pín, àti nọ́mbà tunnel gbọdọ̀ bá èyí tí server dá mu, nítorí ìlànà fún interface mìíràn kò ṣeé yàtọ̀ sí àìsí ìlànà. limit jẹ́ àtinú fún port ìṣàkóso, nítorí ó ń dín àwọn ìsopọ̀ àtúnṣe kù dípò gbà wọ́n láìlópin. Àyẹ̀wò olùgbọ́ ń ya port tí ó tiì kúrò sí packet tí a sọnù, tí wọ́n dàbí ara wọn láti ẹ̀gbẹ́ client. Àwọn ìlànà tí a kọ nọ́mbà kò tún jẹ́ àwòrán kíkún: àwọn ìlànà before UFW àti gbogbo ìlà nftables tí a fi ọwọ́ kọ ń bá mu ṣáájú àti wọ́n ṣì lè kọ̀ packet tí àkójọ dàbí ẹni pé ó gbà.

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