Àkọsílẹ̀ A méjì, àdírẹ́sì kan, daemon kan: orúkọ yòówù tí olùlò bá tẹ̀, pákẹ́tì tí ó ń dé jẹ́ ọ̀kan náà, ilé-iṣẹ́ tí ó so mọ́ ibudo 1194 kò sì ní ohunkóhun láti fi ìyàtọ̀ wọn. Èyí kì í ṣe ètò tí ó ti bàjẹ́ tí ó ń dúró fún àtúnṣe; ó jẹ́ ààlà ohun tí ìwádìí orúkọ lè sọ. Ohunkóhun tí ó ń yan láàárín OpenVPN méjì gbọ́dọ̀ jẹ́ iye tí ẹ̀rọ ìbánisọ̀rọ̀ fi sínú ìsopọ̀ tí ẹ̀yà iwájú sì lè kà padà, ẹ̀rọ ìbánisọ̀rọ̀ OpenVPN gbogbogbò kò sì fi irú iye bẹ́ẹ̀ sí ní gbangba. Ohun tí ó ń tẹ̀le ni ibi tí èyí fi ọ́ sí, àti àwọn ètò wo ni ó ń pín ìrìnàjò náà ní tòótọ́.

Bẹ̀rẹ̀ pẹ̀lú ohun tí olùyọjáde ń dá padà

Ẹ̀rọ ìbánisọ̀rọ̀ béèrè fún vpn-a.example ó sì gba àdírẹ́sì kan; àdírẹ́sì yẹn pẹ̀lú ibudo kan ni gbogbo ohun tí ó ń pè. Orúkọ náà ni a ń lò ní ìbílẹ̀, ní àkókò ìwádìí, kò sì di ẹ̀ka lórí okùn, nítorí náà olùgbọ́ ní ẹ̀yà kejì kò lè rí àmì tí a lò. Tọ́ vpn-a.example àti vpn-b.example sí ọ̀dọ̀ olùgbàlejò kan, ìwádìí méjèèjì yóò fún ibi kan náà, ìdí niyẹn tí daemon fi ń gbé ìsopọ̀ méjèèjì mó̩ inú ẹ̀yà kan láì ṣàkọsílẹ̀ ìyàtọ̀. Àwọn profáìlì tí ó dá lórí àdírẹ́sì ń hùwà gẹ́gẹ́ bí ti àwọn tí ó dá lórí orúkọ, fún ìdí kan náà.

Èyí tún pa ẹbí àwọn ọ̀nà àyẹ̀wò tí ó ń fani-mọ́ra mọ́: àfikún orúkọ mìíràn, yíyan ìwé-ẹ̀rí fún orúkọ kọ̀ọ̀kan lórí socket kan, tàbí òfin odi iná tí ó so mọ́ orúkọ tí a béèrè. Kò sí ọ̀kan nínú wọn tí ó lè ṣiṣẹ́ lórí ìsọfúnni tí a ti kó kúrò kí pákẹ́tì àkọ́kọ́ tó kúrò lọ́wọ́ ẹ̀rọ ìbánisọ̀rọ̀. Bí olùgbàlejò méjì bá gbọdọ̀ wà ní ìyàtọ̀, ìpínyà gbọ́dọ̀ rìn pẹ̀lú ìsopọ̀ náà fúnra rẹ̀, ìyẹn ni àdírẹ́sì, ibudo, tàbí ẹ̀ka ẹrù tí ìlànà náà ń sọ.

Olùyan kan ṣoṣo tí a ń kà ń gun inú pákẹ́tì

HTTP ń ṣe èyí pẹ̀lú àkọlé Host, TLS sì ń ṣe é pẹ̀lú àfikún orúkọ olùgbàlejò nínú ClientHello, àti bẹ́ẹ̀ ni àdírẹ́sì kan ń sìn fún ọ̀pọ̀lọpọ̀ ojú-ìwé lẹ́yìn olùgbọ́ kan. Àwọn méjèèjì ń ṣiṣẹ́ nítorí pé ìlànà orí okùn ń gbé ìbéèrè fún iṣẹ́ kan pàtó. Òtítọ́ tí ó ṣe pàtàkì nípa OpenVPN ni pé kò sí ọ̀kan nínú àwọn ẹ̀ka wọ̀nyí ní ẹ̀yà tí àpótí àárín ń yẹ̀wò.

Nínú ètò gbogbogbò, ìfọwọ́sowọ́pọ̀ TLS tí ó ń dáàbò bo ikanni ìṣàkóso ń ṣẹlẹ̀ lẹ́yìn tí a ti fi ìpàdé ìta kalẹ̀, a sì ń gbé e nínú rẹ̀, nítorí náà olùgbọ́ tí kò tíì parí ìpàdé yẹn yóò rí ìṣàn tí kò ṣe kedere. Ó ṣì lè sọ pé OpenVPN ni èyí, nítorí pé a lè dá opcode àti fíréémù mọ̀ nínú àwọn báìtì ìbẹ̀rẹ̀, ṣùgbọ́n orúkọ olùgbàlejò, bí ó bá wà, wà nínú apá tí a ti fi ààbò bo. Àpẹẹrẹ tí ó ń retí láti ka olùgbàlejò àròyé láti inú pákẹ́tì ìta ń ka ẹ̀ka tí ìlànà kò kọ síbẹ̀ rárá. Èyí wá láti inú bí a ṣe kọ́ ọ̀nà abẹ́lẹ̀ náà, kì í ṣe láti inú àlàfo tí ìbádọ́gba àpẹẹrẹ tí ó gbọ́n jù lè dí.

Ibi tí olùpín ìlànà dúró

Onígbàlanga ọ̀pọ̀ ìlànà irú tí iṣẹ́ sslh ń ṣàkọsílẹ̀ ń gbọ́rọ̀ lórí ibudo kan, ó ń yẹ̀wò àwọn báìtì ìbẹ̀rẹ̀, ó sì ń fi ìsopọ̀ lé backend yòówù tí ó ń sọ ìlànà tí ó dá mọ̀. Ìyẹn jẹ́ iye gidi nígbà tí ibudo kan gbọdọ̀ sin SSH, HTTPS àti OpenVPN papọ̀.

sslh ń tọ́jú àyẹ̀wò ọ̀tọ̀ọ̀tọ̀ fún ìlànà kọ̀ọ̀kan, àyẹ̀wò TLS rẹ̀ sì lè fa orúkọ olùgbàlejò tàbí iye ALPN jáde láti inú ClientHello gidi. Dídá OpenVPN àkọ́kọ́ mọ̀ jẹ́ ìpín-ẹ̀ka mìíràn ju kíkà àfikún TLS, àwọn méjèèjì kò sì wà papọ̀, nítorí pé ẹ̀rọ ìbánisọ̀rọ̀ tí kò fi ClientHello ránṣẹ́ sí socket gbọ́rọ̀ rárá yóò fi àyẹ̀wò náà sílẹ̀ láìsí ohun tí yóò kà. Nítorí náà òfin tí ó bá OpenVPN mu yóò dáhùn “ẹ̀rọ ìbánisọ̀rọ̀ OpenVPN ni èyí” kò sì lọ síwájú. Backend OpenVPN méjì lẹ́yìn òfin yẹn kò lè yàtọ̀, ẹ̀yà iwájú kò ní ìpìlẹ̀ fún yíyan, ìpàdé kọ̀ọ̀kan sì ń balẹ̀ sí ibi kan náà. Onígbàlanga ń pín ibudo kan láàárín àwọn iṣẹ́ ọ̀tọ̀ọ̀tọ̀; kò ṣe àgbékalẹ̀ olùgbàlejò àròyé nínú iṣẹ́ kan.

Àwọn ètò tí ó ń pín olùgbàlejò méjì ní tòótọ́

Ìpínyà olóòtítọ́ tí ó kéré jù ni àdírẹ́sì gbangba kejì, ọ̀kan fún ẹ̀yà kọ̀ọ̀kan, àwọn profáìlì tí ó wà pẹ̀lú ti ń gbé ohun tí ó nílò nítorí pé wọ́n ń tọ́ka sí àwọn àdírẹ́sì ọ̀tọ̀ọ̀tọ̀. Èyí tí ó tẹ̀le ni ibudo mìíràn lórí àdírẹ́sì kan náà, èyí kò ná kankan ju nọ́mbà kan lọ nínú profáìlì kọ̀ọ̀kan. TCP àti UDP ń tọ́jú ìtẹ́ ibudo ọ̀tọ̀ọ̀tọ̀, nítorí náà 1194/tcp àti 1194/udp jẹ́ socket tí kò ní ìbáṣepọ̀ ọ̀kan nínú kọ̀ọ̀kan sì lè wà papọ̀ lórí olùgbàlejò kan; ìyẹn jẹ́ ìpínyà gbígbé kì í ṣe ìtọ́sọ́nà orúkọ, a sì ń da wọ́n rú pẹ̀lú ara wọn. Àwọn àṣàyàn méjèèjì ń kọjá àyẹ̀wò odi iná, nítorí pé òfin náà bá ohun tí pákẹ́tì ní ní tòótọ́ mu.

Bí ààlà tí o nílò bá ń gba láàárín àwọn ẹgbẹ́ olùlò dípò láàárín ìmúṣẹ méjì, ẹ̀yà kan pẹ̀lú àwọn ètò ẹ̀rọ ìbánisọ̀rọ̀ ọ̀tọ̀ọ̀tọ̀, ìtọ́jú ìwé-ẹ̀rí rẹ̀ fúnra rẹ̀ àti ìlànà àwọlé tí ó ṣe kedere lè bo irú bẹ́ẹ̀. Ohun tí èyí ń ra ni ìlànà nínú olùgbàlejò kan, kì í ṣe ìyàsọ́tọ̀ láàárín àwọn olùgbàlejò, àwọn méjèèjì sì jẹ́ àwọn ìbéèrè ọ̀tọ̀ọ̀tọ̀. Ìyàsọ́tọ̀ tí ó gbọdọ̀ dúró lábẹ́ ìkọlù ṣì nílò àdírẹ́sì tàbí etí odi iná.

Olùparí TLS tí a gbé síwájú OpenVPN lè fi orúkọ olùgbàlejò gidi hàn sí ẹ̀yà iwájú tí ó ní agbára, ṣùgbọ́n kìkì nígbà tí ẹ̀yà ẹ̀rọ ìbánisọ̀rọ̀ pẹ̀lú bá ti ṣètò fún ẹ̀yà àfikún yẹn. Àwọn profáìlì tí ó wà kò rí irú ìhùwà yẹn gbà kìkì nípa títọ́ wọn sí àdírẹ́sì kan náà.

Fi olùyan náà hàn kí o tó kọ́

Dárúkọ ẹ̀ka tí yóò dá backend mọ̀, lẹ́yìn náà jẹ́rìí pé ẹ̀rọ ìbánisọ̀rọ̀ ń fi í ránṣẹ́ ní tòótọ́; bí ìdáhùn bá jẹ́ àdírẹ́sì ètò náà dúró, bí ó sì jẹ́ orúkọ olùgbàlejò nínú ìfọwọ́sowọ́pọ̀ tí kò dé ọ̀dọ̀ olùgbọ́ rárá, kò sí iṣẹ́ DNS tí yóò gbà á. Àwọn àṣẹ mẹ́ta ń yanjú ẹ̀yà gbọ́rọ̀ kíákíá.

ss -lntup | grep -E ':443|:1194'
openssl s_client -connect vpn-a.example:443 -servername vpn-a.example </dev/null | head -n 20
journalctl -u openvpn-server@server-a -n 20 --no-pager

Ìlà openssl ń fún ìwé-ẹ̀rí kìkì níbi tí ohun kan lórí àdírẹ́sì yẹn ti parí TLS; lòdì sí olùgbọ́ OpenVPN àkọ́kọ́ ó ń dẹ̀ sílẹ̀ tàbí ó ń kùnà, ìyẹn fúnra rẹ̀ sì ni ìdáhùn sí ohun tí ẹ̀yà ìta ń fihàn. Ìlà journal, tí a kà lórí backend kọ̀ọ̀kan, ń fi hàn ẹ̀yà wo tí ó gba ìpàdé náà. Àwọn àkọsílẹ̀ ẹ̀yà iwájú ń kọ ohun tí a pín-ẹ̀ka kò sì kọ ohun tí a ní lọ́kàn rárá, nítorí náà backend ṣì jẹ́ aláṣẹ kan ṣoṣo lórí ibi tí olùlò balẹ̀ sí.

Parí pẹ̀lú profáìlì méjì tí a pinnu láti dé àwọn olùgbàlejò ọ̀tọ̀ọ̀tọ̀, so wọ́n mọ́ra ọ̀kan lẹ́yìn ọ̀kan kí o sì ṣàkọsílẹ̀ àkọsílẹ̀ backend fún kọ̀ọ̀kan. Bí ìpàdé méjèèjì bá farahàn nínú journal kan náà, olùyan náà kò sí kì í ṣe pé a ṣe àṣìṣe ètò, àti àtúnṣe ni àdírẹ́sì tàbí ibudo tí ẹ̀rọ ìbánisọ̀rọ̀ lè dójú kọ. Ṣíṣàtúnṣe òfin ìtọ́sọ́nà kò ní ràn ọ́ lọ́wọ́, nítorí pé a kò fún òfin náà ní ohunkóhun láti fi tọ́sọ́nà rárá. Nígbà tí ìpínyà náà bá di gidi, kọ ọ́ sí ẹ̀gbẹ́ àwọn profáìlì kí ẹni tí ó tẹ̀le má baà fi orúkọ mìíràn kún un kí ó sì retí pé òun yóò ṣe iṣẹ́ náà.

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