Ìtọ́jú ibudo àti iwọle VPN: ibo ni pákẹ́tì náà ń lọ ní tòótọ́
Ìtọ́jú ibudo tún ibi-àfojúsùn kọ, ó sì dúró níbẹ̀; VPN kọ́kọ́ fi pákẹ́tì náà mọ́. Wo ipa-ìpele tí ọ̀kọ̀ọ̀kan ń yí padà àti ohun tí ìyẹn túmọ̀ sí fún HTTPS.
Àwọn àpẹẹrẹ méjì, ètò HTTPS kan, pákẹ́tì sì ń gba ọ̀nà ọ̀tọ̀ọ̀tọ̀ nínú ọ̀kọ̀ọ̀kan. Ìtọ́jú ibudo ń yí ibi tí a ti ń fi pákẹ́tì náà jáde padà, ó sì fi ìyókù sílẹ̀ báyẹ̀ẹ́. VPN kọ́kọ́ ń gbé pákẹ́tì náà sínú pákẹ́tì mìíràn, nítorí náà olùgbọ́ ètò náà rí orísun mìíràn àti ẹrù tí ó pọ̀ jùlọ tí ó kéré. Ẹ̀kọ́ ìkọ̀kọ̀ tí àwọn ènìyàn ń jiyàn rẹ̀ wà nínú àwọn ọ̀nà méjèèjì, nítorí ètò náà ṣì jẹ́ HTTPS; ohun tí ó yàtọ̀ ni ẹni tí ó lè ṣí ìsopọ̀ àti ohun tí nẹ́tíwọ́kì tí ó wà láàárín lè ṣàkíyèsí. Ìyàtọ̀ yẹn ń yanjú ọ̀pọ̀ àwọn ìbéèrè tí ó wúlò.
Òfin DNAT ń tún ibi-àfojúsùn kọ, ó sì dúró níbẹ̀
Ní ẹnubodè Linux, fífi iṣẹ́ jáde túmọ̀ sí òfin kan nínú ẹ̀wọ̀n PREROUTING ti tábìlì nat, tàbí ohun tí ó bá a mu ní nftables. Òfin náà bá àdírẹ́sì àti ibudo gbogbogbò mu, lẹ́yìn náà ó tún ibi-àfojúsùn kọ sí àdírẹ́sì àdáni ti ètò náà. Àdírẹ́sì orísun, ibudo orísun àti ẹrù kò yí padà, conntrack sì ń kọ àkọsílẹ̀ ìbámu náà kí a lè tún àwọn ìdáhùn kọ nígbà tí wọ́n ń jáde. Ìwà yìí ni àwòkọ́ ìtumọ̀ àdírẹ́sì ìbílẹ̀ tí a ṣàpèjúwe nínú RFC 3022.
sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 443 \
-j DNAT --to-destination 10.20.30.40:443
sudo iptables -t nat -L PREROUTING -n -v
sudo conntrack -L -p tcp --dport 443
Olùgbọ́ ètò náà kò mọ̀ rí pé ìsopọ̀ náà wá nípasẹ̀ ìtumọ̀. Ó rí àdírẹ́sì orísun gidi ti alábàárá, èyí tí ó wúlò fún àwọn àkọsílẹ̀ ìwọle àti àwọn ààlà ìyára, ó sì ń dáhùn sí àdírẹ́sì àdáni nítorí conntrack ń yí ìbámu náà padà. Kò sí ohun tí ń yọ̀ǹda tàbí tún ṣe ìkọ̀kọ̀ ní ọ̀nà yẹn: TLS ṣì ń ṣiṣẹ́ láàárín alábàárá àti ìwé-ẹ̀rí ti ètò náà fúnra rẹ̀.
Òfin náà tún ń pinnu àwọn ọ̀nà ìkùnà tí ìwọ yóò bá pàdé lẹ́yìn náà. Bí ẹnubodè bá ń gbé e lọ ṣùgbọ́n kò bá ní ọ̀nà ìpadà sí alábàárá ní ilé-ìgbà ti ètò náà, àwọn ìdáhùn ń jáde pẹ̀lú orísun tí kò tọ́, ìfọwọ́sowọ́pọ̀ sì dúró. Bí òfin kejì bá bá a mu kọ́kọ́, ìtòlẹ́sẹẹsẹ ni yóò pinnu àbájáde, iptables -t nat -L -n -v yóò sì fi àwọn òǹkà hàn tí ó fi hàn òfin wo ni ó gba pákẹ́tì náà.
Ọ̀nà-ìsọlẹ̀ fi pákẹ́tì mọ́ kí olùgbọ́ tó rí i
VPN kò fi ètò náà jáde rárá. Alábàárá ń kọ́ pákẹ́tì òde tí a darí sí àdírẹ́sì gbogbogbò ti ẹnubodè, ó ń fi pákẹ́tì inú ṣe ìkọ̀kọ̀ nínú rẹ̀, ẹnubodè sì ń yọ ìkọ̀kọ̀ kúrò, ó sì ń darí pákẹ́tì inú sí ibi-àfojúsùn àdáni. Nínú WireGuard, gbígbé òde jẹ́ UDP, sábà máa ń wà ní ibudo gíga; pẹ̀lú OpenVPN lórí TCP 443, pákẹ́tì òde dàbí TLS fún ohunkóhun tí ń ṣọ́ ọ̀nà náà.
Nínú ọ̀nà-ìsọlẹ̀, pákẹ́tì inú ń pa àwọn àdírẹ́sì àdáni mọ́: àdírẹ́sì ọ̀nà-ìsọlẹ̀ ti alábàárá, sọ pé 10.8.0.6, àti ètò náà ní 10.20.30.40. Nítorí náà olùgbọ́ rí orísun láti inú àkójọ ọ̀nà-ìsọlẹ̀, gbogbo alábàárá sì ń pín ẹnubodè yẹn gẹ́gẹ́ bí ìfò tí ó kàn. Àwọn àkọsílẹ̀ ìwọle lẹ́yìn VPN sábà máa ń fi ẹnubodè hàn dípò olùlò fún ìdí yìí gan-an, àyàfi bí ẹnubodè bá pa orísun ìpilẹ̀ mọ́.
Fífipọ́ náà ń ná ààyè orí-ìwé, ìyàtọ̀ kan ṣoṣo ní ìpele ẹ̀rọ tí ó ní àbájáde tí a lè wọn ni ìyẹn. Orí-ìwé IP òde pẹ̀lú UDP pẹ̀lú orí-ìwé WireGuard fúnra rẹ̀ ń jẹ láti inú MTU ti ọ̀nà, nítorí náà àwọn pákẹ́tì ńlá gbọ́dọ̀ pín sí ọ̀tọ̀ọ̀tọ̀ tàbí kí àkójọ TCP inú dín MSS rẹ̀ kù. Ìgbéjáde tí ń ṣiṣẹ́ lórí ọ̀nà tí a gbé lọ lè dúró lórí ọ̀nà-ìsọlẹ̀ nígbà tí ẹ̀rọ àárín bá ju ICMP tí yóò ti sọ MTU tí ó kéré hàn.
ip route get 10.20.30.40
ping -M do -s 1400 10.20.30.40
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
Ìfarahàn ni a pinnu ní ẹnu-ọ̀nà, kì í ṣe nípasẹ̀ ẹ̀kọ́ ìkọ̀kọ̀
Àwọn àpẹẹrẹ méjèèjì ń parí ní olùgbọ́ TLS kan náà, nítorí náà méjèèjì ń jogún ìwé-ẹ̀rí kan náà, àwọn ẹ̀yà ìlànà kan náà àti ìwọle ètò kan náà. Ohun tí ó yí padà ni ẹni tí a gbà láàyè láti bẹ̀rẹ̀ ìfọwọ́sowọ́pọ̀. Nínú ìgbéjáde gbogbogbò, ilé-ìgbà èyíkéyìí tí ó bá dé 203.0.113.10:443 yóò gba ìfọwọ́sowọ́pọ̀ TCP àti TLS ClientHello kí a tó wo àṣẹ ètò rẹ rárá. Nínú ìwọle nípasẹ̀ ọ̀nà-ìsọlẹ̀ nìkan, a lè dé olùgbọ́ nìkan láti àwọn àdírẹ́sì tí ẹnubodè ń darí sínú ọ̀nà-ìsọlẹ̀, SYN ti àjèjì sì ń kú ní ìlànà ẹnubodè.
Ìyàtọ̀ yẹn jẹ́ nípa ìdèékún, kì í ṣe nípa àṣírí. Iṣẹ́ HTTPS tí a gbé lọ kì í ṣe ọ̀rọ̀ tí ó ṣí sílẹ̀, VPN kò sì mú àìní ìjẹ́rìí ètò kúrò: gbígba sínú ọ̀nà-ìsọlẹ̀ ń dáhùn bóyá ẹ̀rọ lè fi pákẹ́tì ránṣẹ́ sínú nẹ́tíwọ́kì yìí, nígbà tí ètò fáìlì ń dáhùn bóyá olùlò lè ka ìwé kan. Dídàpọ̀ méjèèjì ni ọ̀nà tí àwọn ẹgbẹ́ fi ń parí pẹ̀lú VPN tí ó ń fi gbogbo LAN fúnni àti ètò tí ó ní ọ̀rọ̀-ìpamọ́ kan tí a pín.
Ṣàyẹ̀wò olùgbọ́ àti ìlànà lọ́tọ̀ọ̀tọ̀, nítorí ọ̀kọ̀ọ̀kan wọn lè gbòòrò ju bí o ti rò lọ:
sudo ss -ltnp 'sport = :443'
sudo nft list ruleset
openssl s_client -connect 203.0.113.10:443 -servername files.example.com </dev/null
Bí ss bá fi hàn pé olùgbọ́ so mọ́ 0.0.0.0, a lè dé ètò náà láti ibikíbi tí ìdarí ọ̀nà àti ìlànà ògiri iná gbà, ìgbéjáde sì jẹ́ ọ̀kan nínú àwọn ọ̀nà ìwọle. Síso mọ́ àdírẹ́sì àdáni, tàbí dídín ìwọ̀n orísun kù nínú ògiri iná, jẹ́ ìpinnu ọ̀tọ̀ sí yíyan VPN, ìpinnu tí ó sì ń dín ìfarahàn kù gan-an ni.
Wọn ọ̀nà, kì í ṣe àmì
Nígbà tí ẹnìkan bá sọ pé ìgbéjáde yára jù, ìfiwéra tí ó tọ́ ń pa gbogbo ohun mìíràn mọ́ bákan náà: alábàárá kan náà, nẹ́tíwọ́kì ìwọle kan náà, fáìlì kan náà, ìṣètò TLS kan náà, ilé-ìgbà ètò kan náà. Ṣe ìgbéjáde náà lẹ́ẹ̀mejì fún ọ̀nà kọ̀ọ̀kan, kọ àpapọ̀ àkókò, iye ìkùnà àti ìdáhùnpadà, kì í ṣe àbájáde ìdánwò ìyára tí kò ní ìbáṣepọ̀.
curl -sS -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' \
https://files.example.com/report.pdf
mtr -rwc 20 203.0.113.10
mtr -rwc 20 10.20.30.40
Àwọn òǹkà yẹn ń ya ìdásílẹ̀ ìsopọ̀ kúrò nínú àkókò ìgbéjáde, èyí tí ó ṣe pàtàkì nítorí àwọn ọ̀nà méjèèjì sábà máa ń yàtọ̀ ní ìdádúró ìlọ-ìpadà àti MTU, kì í ṣe ní iye owó ìkọ̀kọ̀. Iṣẹ́ TLS ń ṣẹlẹ̀ ní àwọn ìparí nínú àwọn àpẹẹrẹ méjèèjì, ọ̀nà-ìsọlẹ̀ sì ń fi ìkúnlẹ̀, ọ̀nà mìíràn àti bóyá ẹnubodè tí ó díjù kún. Bí ọ̀nà-ìsọlẹ̀ bá gùn jù tàbí ẹnubodè rẹ̀ bá wúwo, ìyàtọ̀ jẹ́ ti ọ̀nà náà, kì í ṣe ti ọ̀rọ̀ ìkọ̀kọ̀.
Yan ìlànà ìwọle tí iṣẹ́ náà nílò gan-an, lẹ́yìn náà pinnu bóyá ìyàtọ̀ tí a wọn yẹ́ dá lẹ́tọ̀ọ́ láti yí i padà. Ìgbéjáde gbogbogbò bá iṣẹ́ tí a gbé kalẹ̀ fún íńtánẹ́ẹ̀tì tí ó ṣí sílẹ̀ mu, pẹ̀lú àwọn ààlà orísun, TLS tí a ṣe àtúnṣe àti ìṣọ́nà ní iwájú. Ìwọle nípasẹ̀ ọ̀nà-ìsọlẹ̀ nìkan bá irinṣẹ́ inú tí a ti forúkọ àwọn olùlò rẹ̀ mu, ní àfikún pé ìdarí ọ̀nà ẹnubodè àti àwọn àṣẹ ètò méjèèjì dín ju gbogbo LAN lọ.
Kí o tó polongo pé àpẹẹrẹ náà ti pé, jẹ́rìí sí àwọn ohun mẹ́rin: àdírẹ́sì wo ni olùgbọ́ so mọ́, òfin tàbí ọ̀nà wo ni ó gba pákẹ́tì wọlé, ọ̀nà ìpadà ń ṣiṣẹ́ láti àdírẹ́sì gidi ti alábàárá, àti bóyá àwọn ẹrù ńlá ń la MTU kọjá. Ọ̀kọ̀ọ̀kan wọn ní àṣẹ kan lókè, kò sì sí èyíkéyìí tí a ń dáhùn pẹ̀lú ọ̀rọ̀ ààbò tàbí àwòrán ìlà ìgbóhùnsáfẹ́fẹ́.