Dínà olùgbà Subversion sí àwọn olùmúlò VPN pẹ̀lú Apache 2.4
ServerName ń yan olùgbà àròtọ́; kò dínà ẹni tí ó so mọ́. Béèrè fún ìwọ̀n VPN àti olùmúlò ibi-ìpamọ́ gidi, lẹ́yìn náà fi ẹ̀rí àwọn ìkọ̀sílẹ̀ méjèèjì hàn.
Pípà olùgbà àròtọ́ Subversion lọ sí àdírẹ́sì VPN ń yí ipa wo ni ojú-ìwé tí ń dáhùn ìbéèrè padà, kì í ṣe ẹni tí a gbà láàyè láti rán an. Ìwádìí àyèwò wáyé lẹ́yìn náà, ní ìbámu pẹ̀lú àwọn òfin inú apá tí ó bá URL mu, orúkọ olùgbà kò sì ní wọ inú ìpinnu yẹn rárá. Bí ServerName bá jẹ́ àyípadà rẹ nìkan, ibi-ìpamọ́ wà ní àárọ̀ọ́ tí ó ṣeé dé bíi àná. Àwọn ìbéèrè méjì ọ̀tọ̀ọ̀tọ̀ gbọ́dọ̀ ní ìdáhùn nínú ìṣètò: socket wo ni ó gba ìsopọ̀ àti irú ìdánimọ̀ wo ni ìbéèrè náà gbé.
Ohun tí ServerName ń pinnu ní ti gidi
Ìgbàlélẹ̀ olùgbà àròtọ́ tí ó dá lórí orúkọ ń fi orí-ọ̀rọ̀ Host wé àwọn àkọsílẹ̀ ServerName àti ServerAlias, ó yan olùgbà kan, ó sì jẹ́ kí ó ṣe ìbéèrè náà. Ìsopọ̀ náà fúnra rẹ̀ ni socket Listen tí ó jẹ́ ti olùpín ni ó gbà ṣáájú, kì í ṣe ti olùgbà. Ìdí ni pé orúkọ tí ó dàbí ti ara ẹni kò pèsè ààbò kankan: ẹnikẹ́ni tí ó bá socket dé lè rán orí-ọ̀rọ̀ Host yẹn. Orúkọ jẹ́ kọ́kọ́rọ́ ìtọ́nà, àwọn kọ́kọ́rọ́ ìtọ́nà ni ẹni tí ń pè ń yàn.
O lè wo àfihàn náà láìsí àfojúsùn. apachectl -S ń tẹ̀ jáde olùgbà kọ̀ọ̀kan, ibùdó rẹ̀ àti àwọn orúkọ rẹ̀, ó sì fi àmì sí ẹni tí ó jẹ́ àkọ́kọ́ fún àdírẹ́sì náà.
RequireAll ni àpótí tí ó mú kí àwọn ìwádìí méjèèjì di dandan
Apache 2.4 ń ká àwọn ìtọ́ni Require ti apá kan sínú RequireAny àìlórúkọ, nítorí náà àwọn ìtọ́ni méjì tí ó ṣófo túmọ̀ sí pé ọ̀kan nínú wọn tó. Fi àpótí náà kún un, ìtumọ̀ yí padà:
<Location /svn/repo>
AuthType Basic
AuthName "Subversion"
AuthBasicProvider file
AuthUserFile /etc/apache2/svn.htpasswd
<RequireAll>
Require ip 10.8.0.0/24
Require valid-user
</RequireAll>
</Location>RequireAll ń béèrè àwọn ẹ̀yà méjèèjì: àdírẹ́sì orísun nínú ìwọ̀n apron àti olùmúlò tí ibi-ìpamọ́ gbà. Ìyẹn ni ohun tí VPN-nìkan yẹ kí ó túmọ̀ sí fún URL Subversion. Ìtọ́kasí mod_authz_core ń ṣàkọsílẹ̀ àwọn òfin àpótí. Fi blọ́ọ̀kù náà sínú Location tí ó wà fún ibi-ìpamọ́, kí o sì fi àwọn ìtọ́ni DAV tí ó ti ń ṣiṣẹ́ sí ipò wọn, nítorí pé àpá yìí kò rọ́pò AuthType tàbí fáìlì ọ̀rọ̀-ìpamọ́ tàbí àṣẹ ní ìpele ọ̀nà.
Ìwádìí orísun wá láti mod_authz_host, nítorí náà jẹ́rìí pé a ti gbé e sílẹ̀ kí o tó ṣe àtúnṣe ohun mìíràn: apachectl -M | grep authz_host.
Àdírẹ́sì tí Apache ń ṣe àyẹ̀wò ni àdírẹ́sì socket
Require ip ń fi wé àdírẹ́sì tí Apache kọ sílẹ̀ fún ìsopọ̀ náà, kì í sì í ṣe àdírẹ́sì tí ẹni tí ń lò ń rò pé òun ní nígbà gbogbo.
Nígbà tí VPN bá ń tọ́nà àwọn àdírẹ́sì rẹ̀ láìsí ìtumọ̀, Apache ń rí àdírẹ́sì apron náà, 10.8.0.0/24 sì bá mu. Nígbà tí ẹnubodè bá ń túmọ̀, Apache ń rí ẹnubodè náà, òfin kò sì bá ohunkóhun mu ní ìdákẹ́jẹ́; ohun kan náà ń ṣẹlẹ̀ lẹ́yìn ẹrọ ìdọ́gba ẹrù tí ó parí TLS níwájú olùgbà. Fún ìṣẹ̀lẹ̀ yẹn mod_remoteip wà. RemoteIPHeader X-Forwarded-For pẹ̀lú RemoteIPTrustedProxy fún ẹrọ ìdọ́gba ń rọ́pò àdírẹ́sì tí a kọ sílẹ̀, ìgbà náà ni ìwọ̀n náà tó ní ohun tí yóò fi wé.
Fífi ìgbẹ́kẹ̀lé bọ orí-ọ̀rọ̀ ìránṣẹ́ àìlófin burú ju kíkùnà láti ní òfin kan pátápátá. Ẹnikẹ́ni lè rán X-Forwarded-For tí ó ní 10.8.0.9 kí ó sì ṣe ìwádìí ìwọ̀n tí a kò tíì so mọ́ ìgbésẹ̀ tí a gbẹ́kẹ̀lé.
Fi olùgbọ́ àti ìlànà ibi-ìpamọ́ sí àwọn ìpele
Ìdè ni ìṣàkóso ọ̀tọ̀ọ̀tọ̀, ó sì sábà rọrùn jù. Listen 10.8.0.1:443 ń pinnu àwọn socket tí ó wà, ìbéèrè kò sì lè yan olùgbà lórí socket tí a kò tíì ṣí. Iye ni ìtẹ̀lé ìbẹ̀rẹ̀: bí ojú-ìsopọ̀ apron bá wà ní ìsàlẹ̀ nígbà tí Apache ń bẹ̀rẹ̀, ìdè yóò kùnà, iṣẹ́ kò sì ní dìde. So ó mọ́ ìtẹ̀lé ẹ̀ka, tàbí so mọ́ àdírẹ́sì tí ó wà láìsí ìgbẹ́kẹ̀lé apron.
Àwọn àṣẹ ọ̀nà ń dúró nínú AuthzSVNAccessFile. Àkọsílẹ̀ tí ó tọ́ fún ojú-ìwé kì í ṣe àṣẹ kan náà pẹ̀lú ààyè kíkọ sí ọ̀nà iṣẹ́, òfin nẹ́tíwọ́kì kò sì yí i padà.
Ṣọ́ra fún ìdàpọ̀ apá nígbà tí blọ́ọ̀kù bá wà nínú fáìlì tí a kó sínú. Apache ń dà àwọn àpótí àṣẹ pọ̀ káàkiri àwọn apá tí ó wà nínú ara wọn, apá tí ó bá mu jù lè rọ́pò ìbéèrè dípò kíkún un, nítorí náà òfin lórí /svn lè máà dé /svn/repo/trunk nígbà tí apá tí ó tóóró bá ṣàlàyé tirẹ̀.
Fi ẹ̀rí àwọn ìkọ̀sílẹ̀ méjèèjì hàn kí o tó sọ pé ó ti parí
Dán àwọn ìbéèrè mẹ́rin wò, kì í ṣe ọ̀kan. Nínú VPN pẹ̀lú àkọsílẹ̀ tí ó tọ́ o yẹ kí o rí àkọ́jọ ibi-ìpamọ́. Nínú VPN pẹ̀lú ọ̀rọ̀-ìpamọ́ tí kò tọ́ o yẹ kí o rí 401 dípò àkọ́jọ. Láti ìta VPN pẹ̀lú ẹ̀rí ìwọlé tí ó tọ́ o yẹ kí o rí 403, ìbéèrè gbangba kan náà sí orúkọ olùgbà mìíràn gbọ́dọ̀ kùnà ní ọ̀nà kan náà.
Àṣẹ kan fún ìṣẹ̀lẹ̀ kọ̀ọ̀kan tó: curl -sI -u user:pass https://svn.example.com/svn/repo/, lẹ́yìn náà ka ìlà ipò. Tún ìṣẹ̀lẹ̀ tí ń ṣiṣẹ́ ṣe nípasẹ̀ ẹrọ tí ó ń lò ní ti gidi pẹ̀lú, nítorí pé svn info ń dán àwọn ọ̀nà DAV wò tí commit àti àwọn ìmúdójúìwọ̀n yóò lò.
Bí èyíkéyìí nínú àwọn àbájáde mẹ́rin kò bá bá ìlànà tí o ní lọ́kàn mu, ìṣètò kò tíì parí, yíyí orúkọ olùgbà padà kò sì ní yí i padà.