Ìpinnu mẹ́ta tí ó dúró fúnra wọn wà láàrin ojú-ìwé àdáni àti Íńtánẹ́ẹ̀tì: socket wo ni ó gba ìsopọ̀, ọ̀nà wo ni ó lè gbé e dé, àti àwọn oníbàárà HTTP wo ni server tí a yàn ń dáhùn. Ẹ̀ka server kan ń ṣe ìpinnu àkọ́kọ́ nìkan. Wo àwọn méjì yòókù gẹ́gẹ́ bí ìṣàkóso ọ̀tọ̀ọ̀tọ̀, bí bẹ́ẹ̀ kọ́ ojú-ìwé yóò dà bíi ti àdáni nígbà tí ẹnu-ọ̀nà àtijọ́ ṣì wà ní ṣíṣí. Ọ̀pọ̀ àìṣẹ́ NGINX fún VPN nìkan ń wá láti dídán ìpele àkọ́kọ́ nìkan wò.

Àpẹẹrẹ náà ń lo ẹnu-ọ̀nà Linux OpenVPN ní 10.90.0.1 lórí tun0, àwọn oníbàárà ní 10.90.0.0/24, àwọn orísun tí a pa mọ́ àti TCP 8443 tí a yà sọ́tọ̀ fún ẹnu-ọ̀nà yìí. Ṣàtúnṣe àwọn iye, pa àwọn ìpele mọ́.

Bẹ̀rẹ̀ pẹ̀lú socket, kì í ṣe orúkọ agbanisiṣẹ

So olùgbọ́ HTTPS mọ́ àdírẹ́sì ọ̀nà àbẹ́ẹ̀mí àti ibùdó ọ̀tọ̀. Àdírẹ́sì pàtó rọrùn láti ronú lé lórí ju socket àgbáyé pẹ̀lú ìwádìí orúkọ, nítorí kérnéèlì kò ní fi ibùdó náà fún àdírẹ́sì ìbílẹ̀ mìíràn.

server {
    listen 10.90.0.1:8443 ssl;
    server_name admin.corp.example;

    ssl_certificate     /etc/nginx/tls/admin-fullchain.pem;
    ssl_certificate_key /etc/nginx/tls/admin-key.pem;

    root /srv/private-site;

    allow 10.90.0.0/24;
    deny all;

    location / {
        try_files $uri $uri/ =404;
    }
}

Àmì-ẹ̀rí gbọdọ̀ dárúkọ orúkọ agbanisiṣẹ iṣẹ́ tí àwọn oníbàárà ń tẹ, ìwòye DNS àdáni sì gbọdọ̀ yanjú agbanisiṣẹ yẹn sí àdírẹ́sì tí a so. server_name ń yan agbanisiṣẹ àròtẹ́lẹ̀ nìkan; kò fi ẹnikẹ́ni jẹ́rìí. Àkọsílẹ̀ DNS tí ó ṣèé ṣe kù ń mú àṣìṣe àmì-ẹ̀rí tí ó dà bí àìdára TLS wá. Ṣàyẹ̀wò orúkọ náà kí o tó pààrọ̀ àmì-ẹ̀rí.

Ka ìṣètò tí ń ṣiṣẹ́ kí o tó fi fáìlì kún. Àwọn àfikún àti olùgbọ́ àgbáyé lè sin gbòǹgbò kan náà ní ibòmíràn, server àkọ́kọ́ sì lè dáhùn àwọn ìbéèrè tí ẹ̀ka tuntun kò rí rí.

Ti gbogbo olùgbọ́ mìíràn fún àkóónú yẹn

Ṣe àkójọ àwọn ìtọ́ni listen kí o sì fi àwọn gbòǹgbò tí wọ́n ń sin wé. Ẹ̀ka tí a fi kún fún ohun-èlò mìíràn lè ṣe àṣojú sí upstream kan náà, server àkọ́kọ́ àtijọ́ sì lè máa dáhùn lẹ́yìn tí a ti gbé tuntun kalẹ̀. Ìjáde yẹn ni àkójọ gidi, kì í ṣe fáìlì tí o ṣẹ̀ṣẹ̀ ṣàtúnṣe. Fi gbogbo gbòǹgbò tí ń sin àkóónú kan náà wé.

sudo nginx -T | grep -n "listen\|server_name\|root\|proxy_pass"

Ṣàyẹ̀wò àwọn ẹbí àdírẹ́sì méjèèjì. Ìdìpọ̀ IPv4 ń fi socket IPv6 sílẹ̀ láìfọwọ́ kàn, àkọsílẹ̀ A tuntun kò sì fa ìdáhùn AAAA àtijọ́ padà tí ó ṣì ń tọ́ka sí ọ̀nà gbogbo ènìyàn.

Yọ agbanisiṣẹ àròtẹ́lẹ̀ àtijọ́ kúrò gẹ́gẹ́ bí ìyípadà ọ̀tọ̀. Yíyọ ìbejì gbangba ti ẹ̀ka tuntun kúrò ni ìgbésẹ̀ tí ń ti ẹnu-ọ̀nà pa tẹ̀gẹ́rẹ́; olùgbọ́ àdáni ń fi èyí tí a pinnu kún un nìkan.

Ṣe ààlà ọ̀nà ìwọlé ní agbanisiṣẹ

Àdírẹ́sì ìgbọ́ ń ṣe ààlà socket, kì í ṣe interface ìwọlé. Pákẹ́ẹ̀tì tí a darí sí àdírẹ́sì yẹn láti ibòmíràn ṣì ń dé gẹ́gẹ́ bí ìwọlé ìbílẹ̀, nítorí náà ògiri iná agbanisiṣẹ nílò ìkéde tirẹ̀ nípa ibi tí ìsopọ̀ lè ti wá. Ìdí nìyẹn tí ìdìpọ̀ nìkan kì í fi àyẹ̀wò tẹ́lọ́rùn.

Pẹ̀lú ìlànà ìwọlé ìkọ̀sílẹ̀ àkọ́kọ́ àti láìsí àyè gbòòrò fún iṣẹ́ yìí, ìlànà tí ó ní ààlà ń dárúkọ ọ̀nà àbẹ́ẹ̀mí, ìwọ̀n orísun, ibi àfojúsùn àti ibùdó papọ̀:

sudo ufw allow in on tun0 proto tcp from 10.90.0.0/24 to 10.90.0.1 port 8443

Ka ìtòlẹ́sẹẹsẹ ògiri iná tí ń ṣiṣẹ́ kí o tó lò ó. Gbígba gbòòrò àtijọ́ lè borí ààlà, ìkọ̀sílẹ̀ ìparí àtijọ́ sì lè dènà àyè yìí láti dé. Má ṣe fọ́ àwọn ìlànà tí kò ní í ṣe, má sì ṣe pa ògiri iná fún kí àpẹẹrẹ lè bá mu.

Ìlànà yẹn jẹ́ ìwọlé agbanisiṣẹ, kì í ṣe ọ̀nà sí ẹ̀rọ LAN mìíràn, olùgbọ́ OpenVPN ìta ti ẹnu-ọ̀nà sì ṣì jẹ́ iṣẹ́ ọ̀tọ̀. Bí ojú-ìwé ti jẹ́ ti gbogbo ènìyàn tẹ́lẹ̀, gbèrò bí a ó ṣe yọ ẹnu-ọ̀nà àtijọ́ àti bí a ó ṣe tọ́jú àwọn ìpàdé tí ó wà.

Pa àkójọ HTTP mọ́ bí ó ṣe pé nígbà tí àwọn ibi ń yípadà

NGINX ń ṣàyẹ̀wò àwọn àkọsílẹ̀ allow àti deny ní ìtòlẹ́sẹẹsẹ, àkójọ ní ìpele server lókè sì ń gba ẹgbẹ́ tí a kéde ṣáájú deny ìparí. Mọ́dùùlì ìwọlé tún ń kọ àkọsílẹ̀ pé ibi tí ó túmọ̀ àkọsílẹ̀ ìwọlé èyíkéyìí ń lo àkójọ tirẹ̀ dípò àkójọ òbí. Ìtòlẹ́sẹẹsẹ ṣe pàtàkì bí àwọn àkọsílẹ̀ fúnra wọn.

Ìtúndà yẹn ni ìpadàsẹ̀ ẹ̀yìn tí ó wọ́pọ̀. Ibi tuntun fún ìgbéwọlé, API tàbí ìlera tí ó fi àkọsílẹ̀ kan kún ń fi ìdákẹ́jẹ́ rọ́pò ààlà ìpele server, ojú-ìwé sì ń gbòòrò sí i ní ọ̀nà tí a ṣẹ̀ṣẹ̀ fi kún.

Ṣàgbéyẹ̀wò gbogbo ibi, orúkọ mìíràn àti ẹ̀ka àfidípò gẹ́gẹ́ bí apá ìlànà kan náà. Bí a bá so àwọn àyẹ̀wò IP pọ̀ mọ́ ìjẹ́rìí NGINX, yé oye satisfy: ètò any lè jẹ́ kí oníbàárà wọlé nípasẹ̀ ọ̀nà kan nígbà tí èkejì kò tíì kọjá. Fi àkójọ ìwọlé sínú àkójọ àyẹ̀wò àwọn ibi.

Ìkọ̀sílẹ̀ HTTP ń ṣẹlẹ̀ lẹ́yìn tí ìsopọ̀ TCP dé NGINX. Ó ń kún ààlà nẹ́tíwọ́kì, àṣẹ ti ohun-èlò fúnra rẹ̀ sì ṣì kan gbogbo olùlò.

Ṣèdánilójú ọ̀nà alààyè àti ipò àìṣẹ́

Ṣiṣẹ́ atúpalẹ̀ ìṣètò, yẹ socket tí ń gbọ́ wò, lẹ́yìn náà ṣe ìbéèrè tuntun tí a dárúkọ láti ọ̀dọ̀ oníbàárà tí a pinnu. Jẹ́rìí pé àmì-ẹ̀rí ń gbà, orúkọ DNS ń yanjú sí àdírẹ́sì tí a so àti pé ìdáhùn wá láti gbòǹgbò tí a retí.

Lẹ́yìn náà dán orísun tí a yọ kúrò àti ẹnu-ọ̀nà àfidípò wò. Ìbéèrè tí a gbà tí ó ń ṣiṣẹ́ kò sọ ohunkóhun nípa àwọn ọ̀nà tí o fẹ́ ti, àti nínú àyẹ̀wò tí a yọ kúrò ni olùgbọ́ tí ó kù tàbí gbígba ògiri iná gbòòrò ń farahàn.

Tún ipò ìbẹ̀rẹ̀ tàbí ìmúpadàbọ̀ VPN ṣe. Bí NGINX bá bẹ̀rẹ̀ kí àdírẹ́sì ọ̀nà àbẹ́ẹ̀mí tó wà, ìdìpọ̀ lè kùnà pẹ̀lú fáìlì pípé pàápàá. Ṣe ìṣọ̀kan ìmúrasílẹ̀ àdírẹ́sì kí o sì pa ọ̀nà ìmúpadàbọ̀ ìbílẹ̀ mọ́ kí o tó yí server wẹ́ẹ̀bù tí a pín padà.

Kọ socket, ibùdó, ìwọ̀n orísun àti àkójọ HTTP tí ó kọjá sílẹ̀. Ìyípadà VPN tàbí DNS tí ń bọ̀ lè gbé èyíkéyìí nínú wọn, àwọn iye mẹ́rin tí a dárúkọ sì rọrùn láti fi wé ju táàbù aṣàwákiri tí ń ṣiṣẹ́.

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