Pípa àdírẹ́sì aláṣepọ̀ VPN mọ́ títí dé ohun-èlò ń jẹ́ kí gbogbo ìlà àkọsílẹ̀ àti gbogbo ìforúkọsílẹ̀ nínú àkójọ àyè gbà túmọ̀ sí ohun kan náà. Kíkọ ọ́ padà ní etí òfurufú ń jẹ́ kí tábìlì ọ̀nà rọrùn àti kí àwọn àkọsílẹ̀ máà wúlò tó. Kò sí ìyàn nínú àwọn méjèèjì tí ó jẹ́ àṣìṣe fúnra rẹ̀, àti àríyànjiyàn tí ó pinnu rẹ̀ kì í sábà ní í ṣe pẹ̀lú iṣẹ́. Àwọn ẹ̀tọ́ mẹ́ta ló pinnu: bóyá ohun-èlò gbọdọ̀ mọ ènìyàn tí ó so pọ̀, bóyá aṣọ òfurufú yóò gba orísun tí o fẹ́ fi ránṣẹ́, àti ẹni tí yóò gba ojúṣe ọ̀nà ìpadà lẹ́yìn náà.

Àwọn ẹ̀tọ́ mẹ́ta ló pinnu

Bẹ̀rẹ̀ pẹ̀lú ìbéèrè ohun-èlò, kì í ṣe àwòrán nẹ́tíwọ́kì. Bí àṣẹ tàbí àyẹ̀wò bá gbára lé àdírẹ́sì aláṣepọ̀ kọ̀ọ̀kan, nígbà náà pípa mọ́ jẹ́ ìbéèrè iṣẹ́ àti ìtumọ̀ jẹ́ ìpadàsẹ́yìn. Bí ohun-èlò bá kàn nílò láti mọ̀ pé ìrìn-àjò wá nípasẹ̀ ọ̀nà àbáwọlé jíjìnnà, àdírẹ́sì tí a ti túmọ̀ tó, ó sì din owó jù lọ láti ṣàkóso.

Ẹ̀tọ́ kejì jẹ́ ti ẹ̀rọ. Nẹ́tíwọ́kì àfòyemọ̀ kì í gbára lé àpò kan tí ó sọ àdírẹ́sì tí a kò fi fún ẹ̀ka ìránṣẹ́ lójú-ẹ̀rọ. Ọ̀pọ̀lọpọ̀ aṣọ òfurufú ń fipá mú èyí, ní ọ̀nà àti orúkọ oríṣiríṣi, àti àpẹẹrẹ tí ó kùnà ní èyí yóò dàbí ẹni tí ó tọ́ nínú àwòrán yóò sì parẹ́ ní ìdákẹ́jẹ́ nínú ìmújáde.

Ẹ̀kẹta jẹ́ ti ètò. Pípa àwọn orísun mọ́ túmọ̀ sí pé tábìlì ọ̀nà ẹ̀ka-ìsọ̀rí ohun-èlò gbọdọ̀ tọ́ka padà sí ẹnubodè fún àkọ́kọ́ aláṣepọ̀, àti pé gbogbo ẹgbẹ́ tí ó bá fi ẹ̀ka-ìsọ̀rí kún ní ìgbà tó ń bọ̀ gbọdọ̀ pa ọ̀nà yẹn mọ́ ní ìbámu. Iyẹn jẹ́ ìnáwó kékeré lẹ́ẹ̀kan, àti ìnáwó tí ń tún ṣe ní ọ̀pọ̀lọpọ̀ àkọsílẹ̀. Pinnu ẹni tí yóò san án kí o tó ṣe ìlérí ìhùwàsí náà.

Ọ̀nà kì í ṣe àṣẹ láti ṣe àdáni

Fífi ọ̀nà ìpadà kún sọ fún ẹ̀ka-ìsọ̀rí rẹ ibi tí àwọn ìdáhùn gbọdọ̀ lọ. Kò sọ fún aṣọ pé ẹ̀rọ tí ń gbé àwọn àpò yẹn kọjá ní àṣẹ láti gbé wọn jáde pẹ̀lú orísun àjèjì. Ní AWS ìṣàkóso tí ó bá a mu ni àyẹ̀wò orísun àti ibi-àfojúsùn, ó sì hàn fún gbogbo ẹ̀rọ:

aws ec2 describe-instances --instance-ids i-0a1b2c3d4e5f60718 \
  --query "Reservations[].Instances[].SourceDestCheck"
aws ec2 modify-instance-attribute --instance-id i-0a1b2c3d4e5f60718 \
  --no-source-dest-check

Pa á fún ẹ̀rọ nìkan tí iṣẹ́ rẹ̀ tí a kọ sílẹ̀ jẹ́ gbígbé kọjá, kì í ṣe fún ohunkóhun mìíràn. Gbogbo VM ohun-èlò tí ó fi àyẹ̀wò náà sílẹ̀ ní ṣíṣí jẹ́ ẹ̀rọ kan tí ó dínkù tí a lè lò láti gbé ìrìn-àjò jáde pẹ̀lú orísun àyáwó. Bí pẹpẹ rẹ kì í ṣe AWS, wá ètò àtakò-àdáni tàbí àdírẹ́sì àyè tí ó dọ́gba dípò kí o ro pé ìhùwàsí yóò kó lọ.

Mímú àpò ní kíákíá yanjú ìbéèrè yá ju kíkà kọ́nsólì lọ. Bí àwọn ìdáhùn bá jáde tí aláṣepọ̀ kò sì rí wọn rí, aṣọ ni ó ń da orísun àdáni nù, kì í ṣe ohun-èlò tí ń kùnà.

Kí ni ìtumọ̀ ń ra, kí sì ni iye rẹ̀

Kíkọ orísun padà ní ẹnubodè ń mú ìṣòro ọ̀nà ìpadà kúrò. Ohun-èlò rí àdírẹ́sì kan tí ó ti mọ bí a ṣe lè dé ọ̀dọ̀ rẹ̀, àkọ́kọ́ aláṣepọ̀ kò sì nílò láti hàn nínú tábìlì ọ̀nà òfurufú rí. Ní Linux ìlànà jẹ́ ìlà kan, ó sì yẹ kí o kọ ẹ̀dà tí ó dín jùlọ tí o lè ṣe:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 172.20.8.0/24 -o ens5 -j SNAT --to-source 10.40.3.10

Kíyèsí ohun tí ohun-èlò ń gbà sílẹ̀ báyìí: 10.40.3.10 fún gbogbo olùlò, ní gbogbo ìsopọ̀, títí láé. Gbogbo àkójọ àdírẹ́sì àyè tí a kọ́ lé orí iye yẹn ń fún gbogbo àwọn olùlò àbáwọlé jíjìnnà ní ààyè báyìí, àti gbogbo àyẹ̀wò ìṣẹ̀lẹ̀ gbọdọ̀ padà sí ẹnubodè láti dáhùn ẹni tí èyí jẹ́.

Àtúnṣe kì í ṣe fífi ìtumọ̀ sílẹ̀, ó jẹ́ fífi ṣíṣe bí ẹni pé àdírẹ́sì ni àmì-ìdánimọ̀ dúró. Gbé àmì-ìdánimọ̀ aláṣepọ̀ nínú pápá tí a ti fìdí rẹ̀ múlẹ̀, kọ ọ́ sílẹ̀ ní ẹnubodè pẹ̀lú àkójọpọ̀ tí a ti túmọ̀, kí o sì jẹ́ kí ohun-èlò darapọ̀ mọ́ ẹ̀. Láìsí kọ́kọ́rọ́ ìdàpọ̀, ìtumọ̀ ń yí ìṣòro nẹ́tíwọ́kì padà sí ìṣòro ìwádìí ọ̀ràn tí ó wà pẹ́.

Olùgbékalẹ̀ jẹ́ ojú-ìkànnkan mìíràn

Aṣojú-ìpadà tí ó wà níwájú ohun-èlò yẹra fún ìbéèrè ọ̀nà tí a tọ́ka pátápátá. Aṣojú-ìpadà ṣí ìsopọ̀ ẹ̀yìn tirẹ̀, nítorí náà àkọ́kọ́ aláṣepọ̀ kò nílò láti jẹ́ ọ̀nà tí a lè tọ́ka nínú nẹ́tíwọ́kì àfòyemọ̀, ohun-èlò sì lè gba àmì-ìdánimọ̀ nínú àkọlé tí aṣojú-ìpadà ṣètò.

Àkọlé yẻn gbára lé nìkan nígbà tí ẻyìn gbà á láti ọ̀dọ̀ aṣojú-ìpadà àti láti ibi kankan mìíràn. Ní àwọn ọ̀rọ̀ nginx ìyẻn túmọ̀ sí pípe alábàákẹ́gbẹ́ tí a gbára lé ní orúkọ pọ̀, dípò gbígbà ohunkóhun tí ó bá dé:

set_real_ip_from 10.40.3.10;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

Gbogbo aláṣepọ̀ tí ó lè dé ẹ̀yìn tààrà lè ṣe àdáni àkọlé kan náà, nítorí náà ẹ̀yìn gbọdọ̀ jẹ́ èyí tí a kò lè dé àyàfi nípasẹ̀ aṣojú-ìpadà. Èyí jẹ́ òtítọ́ ògiri-iná, kì í ṣe èrò ìṣètò, ìyẹn sì ni ìrònú tí àwọn ènìyàn ń fò mọ́lẹ̀ nígbà tí wọ́n ń dà á.

Olùgbékalẹ̀ tún yí ohun tí o ń ra padà. O gba àmì-ìdánimọ̀ ní ìpele ohun-èlò àti ibi àdánidá láti kọ ọ́ sílẹ̀; o fi àgbáyé sílẹ̀, nítorí gbogbo ìlànà tuntun nílò àtìlẹ́yìn aṣojú-ìpadà tirẹ̀. Fún àwọn iṣẹ́ HTTP ìpààrọ̀ yẹn sábà dára, fún ohunkóhun tí kì í ṣe HTTP a kì í sábà rí i rárá.

Kọ sílẹ̀ ohun tí gbogbo ààlà rí

Ohunkóhun tí o bá yàn, àyẹ̀wò àpẹẹrẹ gbọdọ̀ parí pẹ̀lú tábìlì kan tí ó dárúkọ àdírẹ́sì orísun àti àmì-ìdánimọ̀ tí a lè fi hàn ní gbogbo ìgbésẹ̀. Láìsí rẹ̀, ìṣẹ̀lẹ̀ àkọ́kọ́ yóò dá ẹgbẹ́ mẹ́ta tí olúkúlùkù ń ṣàpèjúwe aláṣepọ̀ mìíràn.

BoundarySource the next hop seesWhat is actually proven
Client to gateway172.20.8.14A certificate or credential was presented
Gateway to app subnet, preserved172.20.8.14The same session, if the return route exists
Gateway to app subnet, translated10.40.3.10Only that traffic came through the gateway
Proxy to backend10.40.3.10 plus a headerThe proxy asserted an identity it authenticated

Lẹ́yìn náà yàn. Pa orísun mọ́ nígbà tí àṣẹ ohun-èlò bá gbára lé àdírẹ́sì aláṣepọ̀ ní tòótọ́ tí o sì lè gba ọ̀nà náà. Túmọ̀ nígbà tí kì í bẹ́ẹ̀ tí o sì lè gbé àmì-ìdánimọ̀ jáde kúrò nínú báńdì, kí o sì lo ìtọ́sọ́nà AWS fún àwọn ẹ̀rọ gbígbé kọjá fún àwọn ètò gbígbé kọjá tí ó jẹ́ ti pẹpẹ. Yíjú sí olùgbékalẹ̀ nígbà tí iṣẹ́ náà bá ń sọ HTTP tí o sì fẹ́ kí àmì-ìdánimọ̀ máà jẹ́ àdírẹ́sì mọ́.

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