Ọ̀nà kan jáde kúrò ní ibi iṣẹ́ yìí ni aṣojú SOCKS, àti OpenVPN tó wà lẹ́yìn rẹ̀ ń ròyìn àkókò ìsopọ̀ tó parí láìsí àlàyé tó wúlò. Ẹ̀rọ ìwò lórí ẹ̀rọ kan náà ń ṣiṣẹ́ nípasẹ̀ aṣojú yẹn, àwọn ẹ̀rí ìwọlé tọ́, àti ebute ń dáhùn. Nǹkan mẹ́ta máa ń yàtọ̀ lọ́nà tó tó láti kọ́kọ́ yẹ̀wò: ẹ̀yà SOCKS tí aṣojú ń sọ, gbígbé tí olùkọ́ṣe yàn, àti ibi tí ìyọ̀ orúkọ ti ṣẹlẹ̀. Jẹ́rìí ọ̀kọ̀ọ̀kan kí o tó dá odi iná lẹ́bi.

Bá ẹ̀yà SOCKS mu kí odi iná tó dé

OpenVPN àwùjọ ń sọ SOCKS5 fún socks-proxy. Darí rẹ̀ sí aṣojú tó ń pèsè SOCKS4 nìkan, ìsopọ̀ TCP yóò ṣí kí ó sì dúró, nítorí olùkọ́ṣe ń dúró de ìdáhùn sí ìkíni tí ẹ̀gbẹ́ kejì kò ṣàyẹ̀wò rẹ̀ rárá. Láti ìta, ìdúró yẹn dà bí ebute tí a yọ̀ṣẹ́, ìdí nìyẹn tí ìbéèrè ẹ̀yà fi wá ṣáájú ìlànà odi iná kankan. Ìmújáde kan tó mọ SOCKS yóò yanjú rẹ̀ pẹ̀lú àṣẹ kan.

curl --socks5-hostname 127.0.0.1:9050 gw.lab.example

Ìbéèrè tó parí ń fi nǹkan méjì hàn lẹ́ẹ̀kan: aṣojú gba ìbéèrè SOCKS àti pé ó yanjú orúkọ náà. A kò nílò ètò URL, nítorí curl ka alágbase ìhò tí kò lóhùn bí HTTP, ìyẹn sì tó fún ìdánwò yìí.

Ìmújáde yẹn tún yọ àṣìṣe tí àkọsílẹ̀ olùkọ́ṣe ń fi pamọ́ kúrò. Aṣojú lè gba ẹ̀rọ ìwò láàyè kí ó sì kọ̀ ibi VPN, nígbà yẹn ìkọ̀ yóò ṣẹlẹ̀ ní CONNECT, ṣáájú ìjẹ́rìí VPN kankan. OpenVPN ń ròyìn àkókò ìparí nìkan, nítorí náà ìdáhùn aṣojú fúnra rẹ̀ ni ẹ̀rí tí o nílò.

Gbígbé gbọ́dọ̀ jẹ́ TCP ní ẹ̀gbẹ́ méjèèjì

SOCKS5 ń gbé ìṣàn TCP níbí, nítorí náà ojú-ọ̀nà fúnra rẹ̀ nílò proto tcp-client. Profáìlì tí a ṣì yàn sí UDP kò ní ṣiṣẹ́ lọ́nà yìí, nítorí olùkọ́ṣe kò lo ipò ìsopọ̀ UDP ti ìlànà náà. Yíyí profáìlì padà jẹ́ ìyípadà gidi kì í ṣe ìlànà: ẹ̀gbẹ́ ọ̀nà jìnnà gbọ́dọ̀ gbọ́ TCP ní ebute kan náà. Lẹ́yìn náà ẹrù yóò di TCP nínú TCP, níbi tí a ti ń fi apá tó sọ̀nù ránṣẹ́ lẹ́ẹ̀mejì tí ìgbésẹ̀ yóò sì dín kù, èyí tí àwọn àpéjọ ìbáraẹnijẹ máa ń kíyèsí ju gbígbé ńlá lọ.

proto tcp-client
remote gw.lab.example 8443
socks-proxy 127.0.0.1 9050

Àṣẹ yìí ń gba alágbase aṣojú, ebute àṣàyàn àti fáìlì ẹ̀rí ìwọlé àṣàyàn. Fi wọ́n sínú profáìlì fúnra rẹ̀ kí ẹ̀dà kan níbòmíì lè hùwà bákan náà.

Pa gbogbo ìdì mọ́ inú àpótí kan

Ṣíṣe ìdì lórí alágbase túmọ̀ sí gbígbá ọ̀nà àìpín rẹ̀ àti fífi olùyọ̀jáde sílẹ̀ ní ipò tí ẹnikẹ́ni kò ní ṣàlàyé rẹ̀ nígbà tó ń bọ̀. Ààyè orúkọ tàbí àpótí ń dín a mọ́ ní àkókò yẹn, nítorí náà alágbase ń pa ọ̀nà rẹ̀ mọ́ nígbà tí ìgbésẹ̀ SOCKS àti ojú-ọ̀nà ń gbé papọ̀. Kò sí nǹkan tó dìde nínú rẹ̀ láìsí ẹ̀rọ ojú-ọ̀nà, ẹ̀tọ́ láti ṣètò ẹ̀rọ yẹn àti aṣojú tó ṣeéṣe láti dé. Iṣẹ́ Compose ń rí èyí pẹ̀lú cap_add: NET_ADMIN àti /dev/net/tun tí a fi bind gbé.

cap_add:
  - NET_ADMIN
devices:
  - /dev/net/tun:/dev/net/tun

Pọ̀ yìí kúrò ju ṣíṣe àpótí pẹ̀lú ẹ̀tọ́ kíkún lọ, ìyẹn sì ni gbogbo àǹfààní ẹ̀rọ tí a nílò. Olùkọ́ṣe Tor tàbí àpótí aṣojú ọ̀tọ̀ lè pèsè olùgbọ́. Nínú ọ̀nà méjèèjì so ó mọ́ loopback, kí o sì dé ọ̀ látinú ààyè orúkọ nípasẹ̀ alágbase dípò fífi aṣojú hàn sí nẹ́tíwọ́kì.

Ìyọ̀ orúkọ ni ibi tí ìpínyà ti kùnà

Ojú-ọ̀nà tó ń gbé àwọn àpòóti lẹ́sẹ̀ tí ó sì ń béèrè lọ́wọ́ olùyọ̀jáde alágbase kò ya nǹkan kankan sọ́tọ̀. Nǹkan méjì ló mú ìpínyà di gidi: ààyè orúkọ ní olùyọ̀jáde tirẹ̀, àti pé àwọn ìbéèrè rẹ̀ ń gba aṣojú tàbí ojú-ọ̀nà kọjá, kò gba ẹ̀rọ ara kọjá rárá. Lo orúkọ méjì nínú ìdánwò: ọ̀kan tó wà lẹ́yìn ojú-ọ̀nà nìkan, àti ọ̀kan ti gbogbo ènìyàn tó yẹ kí ó tẹ̀lé ọ̀nà kan náà.

docker compose exec vpn cat /etc/resolv.conf
docker compose exec vpn getent hosts internal.lab.example

Bí orúkọ ọ̀nà jìnnà bá yanjú tí ti gbogbo ènìyàn kò yanjú, ìdì náà yàn ìgbésẹ̀ kì í ṣe pé ó ti bàjẹ́, ìyàtọ̀ sì sọ ọ̀nà tí ìbéèrè kọ̀ọ̀kan gbà. Bí àwọn méjèèjì bá yanjú láti alágbase ṣùgbọ́n kò sí ọ̀kan tó yanjú nínú àpótí, àpótí náà ṣì ń yá olùyọ̀jáde alágbase. Kọ fáìlì olùyọ̀jáde tí o rí sílẹ̀, nítorí ìṣètò yẹn ni ó gbọ́dọ̀ yí padà.

Jẹ́rìí ìgbésẹ̀ kọ̀ọ̀kan ní ọ̀nà ìtẹ̀lé

Àkójọ náà kúrú. Ìbéèrè SOCKS5 gba ìdáhùn, ojú-ọ̀nà dé ọ̀dọ̀ olùgbọ́ rẹ̀ nípasẹ̀ aṣojú, àwọn àpòóti tó jáde kúrò nínú ààyè orúkọ sì gbé àdírẹ́sì tí ẹ̀gbẹ́ jìnnà ń retí. Jẹ́rìí ọ̀kọ̀ọ̀kan lọ́tọ̀ọ̀tọ̀ dípò kíkó ẹ̀tò mìíràn pọ̀. Nígbà tí olùkọ́ṣe bá sọ pé ó so pọ̀ tí kò sì sí nǹkan tó ń lọ, ìjábá máa ń wà ní òtítọ́ kejì tàbí kẹta nígbà gbogbo.

curl --socks5-hostname 127.0.0.1:9050 gw.lab.example
docker compose exec vpn ip route get 203.0.113.10
docker compose exec vpn getent hosts internal.lab.example

Kọ àkópọ̀ tó ṣiṣẹ́ sílẹ̀: ẹ̀yà SOCKS, gbígbé, olùyọ̀jáde àti ìṣètò ààyè orúkọ. Yíyanjú ìdì yìí lẹ́ẹ̀kejì láti ìrántí ná tó ìkọsílẹ̀ náà. Pa àwọn òtítọ́ mẹ́rin yẹn mọ́ nínú tíkẹ́ẹ̀tì, kì í ṣe nínú ìjíròrò.

Ìdì tó ròyìn pé ó so pọ̀ tí kò gbé nǹkan kọjá máa ń kùnà ní ìgbésẹ̀ tí o kò tíì jẹ́rìí. Dán ìgbésẹ̀ yẹn wò kí o tó fi àfo mìíràn kún un.

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