Kí ni ìdí tí Port-Share fi ń jẹ́ kí gbogbo àwọn olùbẹ̀wò wẹ́bùsáìtì dà bíi localhost
Ẹ̀yìn wẹ́bù ń rí ìgbésẹ̀ ìtẹ̀síwájú, kì í ṣe aṣàwákiri. Ẹ ṣàyẹ̀wò ibi tí àdírẹ́sì orísun ti sọnù, lẹ́yìn náà pinnu èyí tí apá kan lè ṣèdí fun.
Gbogbo ìlà nínú àkọsílẹ̀ ìwọlé fi àdírẹ́sì loopback kan náà hàn, nígbà tí ojú-ìwé fúnra rẹ̀ ń gbé kalẹ̀, a sì ń ṣàyẹ̀wò ìwé-ẹ̀rí náà dáadáa. Kò sí ohun tí ó ti bàjẹ́ ní ti pé kò lè dé, ìdí nìyẹn tí ipò yìí fi wà fún ọ̀pọ̀ oṣù. Ohun tí ó bàjẹ́ ni ìsopọ̀ ẹni: ẹ̀yìn wẹ́bù ń kọ àdírẹ́sì ìgbésẹ̀ tí ó tẹ̀síwájú ìsopọ̀ náà, gbogbo ìpinnu tí ó tẹ̀lé tí ó gbẹ́kẹ̀ lé àkọsílẹ̀ náà jogún ìdáhùn aṣiṣe kan náà.
Àwọn ṣàyẹ̀wò tí ó wà nísàlẹ̀ ń lọ láti inú okùn sínú. Dúró ní èyí àkọ́kọ́ tí ó ṣàlàyé iye tí ẹ ń rí, nítorí gbogbo ìgbésẹ̀ tí ó tẹ̀lé gbà pé àwọn ti ṣáájú ti tọ̀nà. Kò sí ọ̀kan nínú wọn tí ó béèrè pé kí ẹ dá ìṣètò ẹ̀yà iwájú.
Tẹ̀lé ìsopọ̀ méjèèjì, kì í ṣe ìlà àkọsílẹ̀
Port-Share ń ṣe àkópọ̀ ìlànà méjì sórí olùgbọ́ TCP kan. OpenVPN ń ṣàyẹ̀wò àwọn byte àkọ́kọ́ ti ìsopọ̀ tí ó ń wọlé, ó dá a dúró nígbà tí ó bá dà bíi ìlànà tirẹ̀, ó sì fi ohunkóhun mìíràn fún ibi-ìlọ kejì. Ibi-ìlọ yẹn sábà máa ń jẹ́ olùpín wẹ́bù lórí host kan náà, nítorí náà socket tí olùpín wẹ́bù gbà ní OpenVPN gẹ́gẹ́ bí alábàáṣepọ̀ rẹ̀.
ss -ltnp 'sport = :443'
ss -tnp 'dport = :8080'
Àṣẹ àkọ́kọ́ fi hàn ẹni tí ó ni olùgbọ́ gbangba. Èkejì fi àwọn ìsopọ̀ tí ó dé ibùdó ẹ̀yìn hàn, àdírẹ́sì alábàáṣepọ̀ wọn sì ni èyí tí àkọsílẹ̀ ìwọlé yóò tẹ̀. Bí alábàáṣepọ̀ yẹn bá jẹ́ loopback, àkọsílẹ̀ náà tọ̀nà, ìsọfúnni sì ti sọnù ní ìpele kan ṣáájú. Yíyí orúkọ pápá àkọsílẹ̀ padà tàbí mímú module IP oníbàárà ṣiṣẹ́ kò ní dá àdírẹ́sì tí ìsopọ̀ kò gbé rí padà.
Èyí ni ṣàyẹ̀wò tí ó pinnu gbogbo ohun mìíràn. Bí alábàáṣepọ̀ ẹ̀yìn bá jẹ́ àdírẹ́sì aṣàwákiri, pínpín ibùdó kì í ṣe ìṣòro rẹ, ìrísí àkọsílẹ̀ ni.
Ìtẹ̀síwájú ìgbékalẹ̀ kì í ṣe fífi àkọlé wọlé
Olùtẹ̀síwájú ń gbé àwọn byte. Kò ṣe àyẹ̀wò HTTP, nítorí náà kò lè fi àkọlé sínú ìbéèrè tí kò kà rí gẹ́gẹ́ bí ìbéèrè, kò sì lè fi ohunkóhun kún ìṣàn TLS tí ó ń gbà kọjá láìfọwọ́ kàn. Module tí ó ń retí àkọlé proxy yóò máa retí èyí tí kò sí apá kankan tí ń ṣe é.
Ọ̀nà méjì lè gbé àdírẹ́sì àkọ́kọ́, àwọn méjèèjì sì nílò àdéhùn ní ẹ̀yà méjèèjì. Ìlànà PROXY ń fi àkọlé kékeré kún ìbẹ̀rẹ̀ ìsopọ̀, ẹ̀yìn sì gbọdọ̀ wà ní ìṣètò láti retí rẹ̀; ẹ̀yìn tí kò retí rẹ̀ yóò ka àwọn byte yẹn gẹ́gẹ́ bí ìbẹ̀rẹ̀ ìbéèrè yóò sì kùnà lọ́nà ìdàrúdàpọ̀. Àwọn àkọlé proxy tí ó ṣeé gbẹ́kẹ̀ lé bíi X-Forwarded-For ń ṣiṣẹ́ nígbà tí proxy tí ó yé HTTP bá gbé wọn kalẹ̀ tí a sì sọ fún ẹ̀yìn àwọn alábàáṣepọ̀ tí ó yẹ kí wọ́n gbà wọ́n.
Kò sí èyí tí ó jẹ́ aládàáṣiṣẹ́, kò sì sí èyí tí ó ní ààbò ní àìdáṣiṣẹ́. Ẹ̀yìn tí ó gbà gbogbo àkọlé ìtẹ̀síwájú tí ó ń wọlé gbà kí oníbàárà yan àdírẹ́sì tirẹ̀, èyí sì yí àìtọ́nà nínú àkọsílẹ̀ padà sí ọ̀nà àbáyọ kúrò nínú ìṣàkóso ìwọlé. Ṣe àfihàn náà lẹ́ẹ̀kan lórí host ìdánwò kí ẹ tó gbẹ́kẹ̀ lé àkọlé kankan lórí ọ̀nà ìgbéjáde.
curl -sS -H 'X-Forwarded-For: 127.0.0.1' https://site.example.com/health
grep -F '127.0.0.1' /var/log/nginx/access.log | tail -n 3
Àkójọpọ̀ ìtọ́kasí orísun àṣàyàn
Pínpín ibùdó ní àríyànjiyàn àkójọpọ̀ àṣàyàn tí ó ń kọ ìtọ́kasí láàrín àdírẹ́sì orísun àkọ́kọ́ àti ìsopọ̀ ìtẹ̀síwájú, lórí àwọn pẹpẹ tí a ti ṣe àfikún ẹ̀yà yìí. A retí pé ẹ̀yà wẹ́bù yóò wo ìtọ́kasí yẹn; kì í ṣe àkọlé, a kò sì fi í sínú ìbéèrè.
Àpẹẹrẹ yẹn tọ́ ní mímọ̀ nítorí ó ṣàlàyé ìdí tí àwọn ìgbékalẹ̀ kan fi ń ròyìn àwọn àdírẹ́sì gidi tí àwọn mìíràn kò ròyìn bẹ́ẹ̀, pẹ̀lú ìṣètò ẹ̀yà iwájú tí ó dà bí ẹyọ kan. Ìyàtọ̀ wà ní ẹ̀yà gbígbà, ó sì sábà máa ń gbé inú module tàbí àtúnṣe tí ọ̀pọ̀ olùpín wẹ́bù tí a kó sínú àpò kò fi ṣiṣẹ́ ní àìdáṣiṣẹ́. Ka ìwé olùpín wẹ́bù rẹ fún kókó gangan tí ó ń pèsè, kí ẹ sì jẹ́rìí pé a ti gbé module náà kalẹ̀ dípò kíkàn-án.
Bí ẹ bá gbé ọ̀nà yìí, kà á gẹ́gẹ́ bí ìsopọ̀ àwọn ìlàjì méjì: ìtọ́kasí tí olùtẹ̀síwájú kọ àti ìwákiri tí ẹ̀yìn ṣe. Jẹ́rìí àwọn méjèèjì, kí ẹ sì jẹ́rìí pé àkójọpọ̀ náà yè kọjá àtúnbẹ̀rẹ̀, kò sì pọ̀ sí i láìní ìwọ̀n lórí olùgbọ́ tí ó kún.
Pinnu apá tí ó ṣèdí fun àdírẹ́sì
Kí ẹ tó yí ìṣètò padà, dárúkọ apá tí a gbà láàyè láti sọ àdírẹ́sì oníbàárà àti àwọn apá tí a gbà láàyè láti gbà á. Ìdáhùn kan tí a kọ sílẹ̀ ń dènà ìyọkuro tí ó wọ́pọ̀, níbi tí ìpele mẹ́ta ọ̀tọ̀ọ̀tọ̀ ti ń gbẹ́kẹ̀ lé orísun ọ̀tọ̀ọ̀tọ̀.
Àwọn àpẹẹrẹ mẹ́ta bo ọ̀pọ̀ àwọn àìní. Ya olùgbọ́ gbangba àti olùgbọ́ wẹ́bù sọ́tọ̀, kí olùpín wẹ́bù lè rí àwọn alábàáṣepọ̀ gidi kí ìṣòro ìsopọ̀ ẹni má sì wà. Fi proxy àyídá lórí HTTP sí iwájú, parí tàbí ṣàyẹ̀wò ìbéèrè níbẹ̀, kí ẹ sì jẹ́ kí ó gbé àkọlé ìtẹ̀síwájú kalẹ̀ fún ẹ̀yìn tí ó gbẹ́kẹ̀ lé proxy yẹn nìkan. Tàbí kí ẹ pa pínpín ibùdó mọ́ kí ẹ sì gbà pé àwọn àkọsílẹ̀ fi ìgbésẹ̀ hàn, pẹ̀lú àwọn òfin ìwọlé tí a kọ sí ìdánimọ̀ ohun-èlò dípò àdírẹ́sì.
Ohun tí kò ṣiṣẹ́ ni kíkà àdírẹ́sì loopback tí a tẹ̀síwájú gẹ́gẹ́ bí ẹ̀rí pé ìbéèrè bẹ̀rẹ̀ lórí ẹ̀rọ yìí. Ìparí yẹn yí padà pátápátá: àdírẹ́sì wà nítorí pé apá àdúgbò kan dá ìsopọ̀ náà. Òfin tí a kọ bẹ́ẹ̀ gba ẹnikẹ́ni tí ó lè dé olùgbọ́ náà.
Dán òfin wò, kì í ṣe ojú-ìwé
Ojú-ìwé tí ó ń gbé kalẹ̀ fi hàn pé ọ̀nà ìtẹ̀síwájú ń ṣiṣẹ́, kò sì sọ ohunkóhun nípa ìsopọ̀ ẹni. Dán olùlò àdírẹ́sì wò: òfin ìwọlé, ààlà ìyára, àkọsílẹ̀ àyẹ̀wò, ìwákiri ilẹ̀.
curl -sS -o /dev/null -w '%{http_code}\n' https://site.example.com/
tail -n 5 /var/log/nginx/access.log
grep -c '' /var/log/nginx/access.log
Fi ìbéèrè òde tí a fọwọ́ sí wé pẹ̀lú àwọn àkọsílẹ̀ ẹ̀yà iwájú àti ẹ̀yìn, kí ẹ sì jẹ́rìí pé òfin tí ó yẹ kí ó kọ̀ ṣì ń kọ̀ àti èyí tí ó yẹ kí ó gbà ṣì ń gbà. Bí ìlà àkọsílẹ̀ bá tọ̀nà ṣùgbọ́n òfin ṣì ń hùwà bí ẹni pé gbogbo ènìyàn wà ní àdúgbò, òfin ń ka pápá mìíràn yàtọ̀ sí èyí tí ẹ túnṣe.
Parí ní kíkọ ẹ̀wọ̀n ìsopọ̀ ẹni sínú àwọn àkọsílẹ̀ ìgbékalẹ̀: olùgbọ́ wo, olùtẹ̀síwájú wo, àkọlé tàbí ìtọ́kasí wo, àti ẹ̀yìn wo tí a ṣètò láti gbẹ́kẹ̀ lé e. Ẹni tí ó tẹ̀lé tí yóò ka ìlà àkọsílẹ̀ yóò nílò gbogbo mẹ́rẹ̀ẹ̀rin, àìsí àkọsílẹ̀ yẹn sì ni ìdí tí tikẹ́ẹ̀tì kan náà fi tún ṣí lẹ́yìn ọdún kan. Pa á mọ́ sẹ́gbẹ̀ẹ́ ìṣètò, kì í ṣe nínú ìlà ìjíròrò.