OpenVPN સેવા બન્યા પછી client-config-dir અવગણાય છે
સાપેક્ષ client-config-dir ડીમનના કાર્યકારી ડિરેક્ટરીની સાપેક્ષે ઉકેલાય છે. યુનિટ વાંચો, પથની પરવાનગીઓ તપાસો, પછી લોગમાં શોધની પુષ્ટિ કરો.
તમારી ટનલ ઉપર આવે છે અને ક્લાયન્ટ જોડાય છે, પણ સ્થિર સરનામું અને તે એક વપરાશકર્તા માટે તમે વ્યાખ્યાયિત કરેલા પુશ થયેલા રૂટ ખૂટે છે. લોગમાં “file not found” લખેલું નથી, અને એ જ લોકોને પ્રમાણપત્રો ફરી બનાવવા મોકલે છે. આમાંના મોટાભાગના કિસ્સામાં ડીમન તમે પરીક્ષણ કરેલી શેલ કરતાં બીજી ડિરેક્ટરીમાંથી ચાલે છે, અને client-config-dir ક્યારેય તમે ધાર્યું તે રીતે ઉકેલાયું નથી. સુધારો પથનું સુધારણ છે, ઓળખપત્રો રીસેટ કરવાનું નહીં.
કોન્ફિગ સ્પર્શ કરતાં પહેલાં યુનિટ વાંચો
તમે સંપાદિત કરેલી ફાઇલથી નહીં, ખરેખર ચાલતી પ્રક્રિયાથી શરૂ કરો. systemd ને એક્ઝિક્યુટેબલ લાઇન, કાર્યકારી ડિરેક્ટરી અને તે જે એકાઉન્ટમાં ઉતરે છે તે પૂછો. એ ત્રણ જવાબ આ વર્ગની મોટાભાગની નિષ્ફળતાઓ સમજાવે છે:
systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectoryખાલી WorkingDirectory નો અર્થ છે કે યુનિટ / માં શરૂ થાય છે, તેથી સાપેક્ષ client-config-dir ccd /ccd માં શોધાય છે. એ ડિરેક્ટરી લગભગ ક્યારેય હોતી નથી, અને ડીમન તેની ગેરહાજરીને ઘાતક ગણતું નથી.
તેને પરીક્ષણ દરમિયાન વાપરેલા ઇન્ટરેક્ટિવ લોન્ચ સાથે સરખાવો, જ્યાં તમારી શેલની વર્તમાન ડિરેક્ટરી સંભવતઃ કોન્ફિગ ડિરેક્ટરી હતી. એ જ ફાઇલ, એ જ કીવર્ડ, બે અલગ પરિણામ.
સાપેક્ષ પથ કોની સાપેક્ષે ઉકેલાય છે
કીવર્ડ વિકલ્પ વપરાય તે ક્ષણે પ્રક્રિયાની કાર્યકારી ડિરેક્ટરીની સાપેક્ષે ઉકેલાય છે. તેનો અર્થ “મેં --config સાથે પસાર કરેલી કોન્ફિગ ફાઇલની બાજુમાં” નથી. OpenVPN સંપૂર્ણ પથમાંથી કોન્ફિગ વાંચવામાં આનંદ અનુભવશે અને તો પણ સાપેક્ષ મૂલ્યો બીજે ઉકેલશે, અને અહીં એ જ જાળ છે. OpenVPN 2.6 મેન્યુઅલ નિયમ --client-config-dir નીચે અને ફરી --cd નીચે જણાવે છે.
cd કીવર્ડ બીજી ફાઇલો વાંચતા પહેલાં એ સંદર્ભ બદલે છે, તેથી જે યુનિટ cd /etc/openvpn/server સેટ કરે છે અને પછી client-config-dir ccd, તે /etc/openvpn/server/ccd માં ઉકેલાય છે. જો તમે cd ઉમેરો, તો નિર્દેશોનો ક્રમ તપાસો અને યાદ રાખો કે તે એ જ ફાઇલનાં બીજાં દરેક સાપેક્ષ સંદર્ભને અસર કરે છે.
ડીમનના એકાઉન્ટ તરીકે પથ ચાલો
પથ સાચો હોવા છતાં વાંચી ન શકાય તેવો હોઈ શકે. વિશેષાધિકારો ઘટ્યા પછી ડીમન હવે root નથી, તેથી દરેક મૂળ ડિરેક્ટરીને એ એકાઉન્ટ માટે શોધ પરવાનગી જોઈએ, અને ક્લાયન્ટ ફાઇલને પોતાને વાંચન પરવાનગી જોઈએ. મૂળ ડિરેક્ટરી પર એક એક્ઝિક્યુટ બિટ ખૂટે તો ફાઇલ સંતાઈ જવા માટે પૂરતું છે, અને ભૂલ ફક્ત એવા ક્લાયન્ટ તરીકે દેખાય છે જે શાંતિથી મૂળભૂત પૂલ મેળવે છે.
namei દરેક ઘટકની પરવાનગી ક્રમમાં છાપે છે, જે ડિરેક્ટરીઓ એક-એક કરીને તપાસવા કરતાં ઝડપી છે:
namei -l /etc/openvpn/server/ccd/client1પછી વાંચનને જાતે નહીં, સેવા એકાઉન્ટ તરીકે પરખો:
runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readableજો યુનિટ chroot વાપરે છે, તો ડિરેક્ટરી જેલની અંદર હોવી જોઈએ, અને કોન્ફિગમાંનો પથ chroot લાગુ થયા પછી અર્થઘટન પામે છે. જેલની બહાર હોસ્ટ પર રહેલી ફાઇલ અંદરથી અદૃશ્ય છે.
અનુમાન કરવાને બદલે શોધની પુષ્ટિ કરો
એક રીસ્ટાર્ટ માટે લોગ સ્તર વધારો અને ક્લાયન્ટ-વિશિષ્ટ વિકલ્પો વિશે સર્વર શું કહે છે તે વાંચો. verb 4 પર ડીમન તેની આયાત કરેલી પ્રતિ-ક્લાયન્ટ કોન્ફિગ જણાવે છે, તેથી ખૂટતી લાઇન એ સીધો પુરાવો છે કે તે જોડાણ માટે કોઈ ફાઇલ વાંચવામાં આવી નથી.
openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccdતેને વધારાના પોર્ટ પર ફોરગ્રાઉન્ડમાં ચલાવો અને એક ક્લાયન્ટ જોડો. આ systemd ને ચિત્રમાંથી સાવ દૂર કરે છે: જો ઓવરરાઇડ અહીં દેખાય અને સેવા હેઠળ ન દેખાય, તો ફરક યુનિટના સંદર્ભમાં છે, ફાઇલમાં નહીં.
કોઈ ફાઇલ ન મળે ત્યારે શું થવું જોઈએ તે નક્કી કરો. ccd-exclusive વગર ક્લાયન્ટને ફક્ત વૈશ્વિક પૂલ સેટિંગ્સ સાથે સ્વીકારવામાં આવે છે, અને ઉપર વર્ણવેલી એ જ શાંત નિષ્ફળતા છે. તેની સાથે ખૂટતી ફાઇલ નકારેલ જોડાણ બને છે, અને એ નકાર જોવામાં સહેલો પણ ભાર હેઠળ ડિબગ કરવો અઘરો છે.
સુધારો, રીસ્ટાર્ટ કરો, ચકાસો
કોન્ફિગમાં ડિરેક્ટરીને સંપૂર્ણ બનાવો અને એમ જ રાખો. સાપેક્ષ પથ ફક્ત ત્યારે જ સુરક્ષિત છે જ્યારે યુનિટ કાર્યકારી ડિરેક્ટરી પિન કરે, અને પિન કરવું એ વધારાનો હલનચલનશીલ ભાગ છે જે કોઈ પછીથી દૂર કરશે.
client-config-dir /etc/openvpn/server/ccd
ccd-exclusiveઇન્સ્ટન્સ રીસ્ટાર્ટ કરો, એક જાણીતા ક્લાયન્ટને ફરી જોડો અને તેણે મેળવેલું સરનામું તેની તરફ પુશ થયેલા રૂટ સાથે વાંચો. જો સરનામું એ ક્લાયન્ટની ફાઇલમાંની ifconfig-push લાઇન સાથે મેળ ખાય, તો શોધ કામ કરી ગઈ. જો ક્લાયન્ટ હજી સામાન્ય પૂલમાં પડે, તો લોગ લાઇનની ગણતરી પર પાછા જાઓ: શૂન્ય આયાત એટલે પથ કે ઓળખ ખોટી, ખોટા સામગ્રીવાળી એક આયાત એટલે તમે ડીમન વાંચે છે તેનાથી બીજી ફાઇલ સંપાદિત કરો છો.
પહેલાંનું યુનિટ અને કોન્ફિગ એકસાથે પુનઃસ્થાપિત કરીને પાછા ફરો, પછી રીસ્ટાર્ટ કરો. આમાંનાં કંઈ પણ માટે પ્રમાણપત્રો ફરી ઇશ્યૂ કરવાની જરૂર નથી, અને ડિરેક્ટરીની સમસ્યાને ઓળખપત્રની સમસ્યા તરીકે ગણવી એ જ રીતે પાંચ મિનિટનો સુધારો જાળવણી વિન્ડો બની જાય છે.