FreeBind එදිරිව After=: systemd සොකට් එකක් VPN ලිපිනයකට බැඳීම
VPN ලිපිනය පවතින්නට පෙරම FreeBind මගින් systemd ට සවන්දෙන්නා ලබා ගැනීමට ඉඩ දෙයි; After= කර්තව්ය පිළිවෙළකට තබයි පමණි. දෙක සසඳා, පසුව අනුපිළිවෙළ සහ සූදානම පරීක්ෂා කරන්න.
බූට් වන විට, ස්ථිර VPN ලිපිනයක් බඳින සොකට් ඒකකය ටනලය එය වෙන් කිරීමට පෙරම අසාර්ථක විය හැක, සහ එහි පිටුපස ඇති සේවාව කිසිදා ආරම්භ නොවේ. ස්විච දෙකක් නිවැරදි කිරීම් ලෙස පෙනෙන අතර එම ගැටලුවේ වෙනස් අර්ධ දෙකක් විසඳයි. ලිපිනය තවම නොමැති විටම FreeBind මගින් systemd ට සවන්දෙන්නා සෑදීමට ඉඩ දෙයි. After= කර්තව්ය පිළිවෙළකට තබයි පමණි, එබැවින් දේවල් ආරම්භ වන විට එය වෙනස් කරයි, නමුත් ලිපිනය ඉක්මනින් ඒමට සලස්වන්නේ නැත.
වෙනස් ගැටලු දෙකක්, වෙනස් ස්විච දෙකක්
පළමු ගැටලුව බැඳීමේ අසාර්ථකත්වයයි: සත්කාරකයට හිමි නොවන ලිපිනයකට සවන් දීම කර්නලය ප්රතික්ෂේප කරයි, එබැවින් සොකට් ඒකකය වහාම අසාර්ථක වන අතර සේවාව කිසිදා සක්රීය නොවේ. දෙවන ගැටලුව සූදානමේ අසාර්ථකත්වයයි: ලිපිනය අවසානයේ පවතී, නමුත් ටනලය රථවාහන ගෙන යාමට පෙර යමක් එය භාවිත කිරීමට උත්සාහ කරයි. FreeBind පළමු එක විසඳන අතර දෙවැන්න සඳහා කිසිවක් නොකරයි. අනුපිළිවෙළ උපදෙස් දෙකම සෘජුවම විසඳන්නේ නැත, මන්ද ඒවා කුමක් කුමන අනුපිළිවෙළකින් ආරම්භ වේද යන්න පමණක් තීරණය කරයි. ඔබට සැබවින්ම ඇති අසාර්ථකත්වය නම් කිරීම මුළු තීරණයයි.
ඔබට ඇත්තේ දෙකෙන් කුමක්දැයි සේවා විස්තරයෙන් නොව, ජර්නලයෙන් තහවුරු කරන්න. බැඳීමේ අසාර්ථකත්වය ලිපිනයක් නම් කර එය වෙන් කළ නොහැකි බව වාර්තා කරයි. සූදානමේ අසාර්ථකත්වය සාමාන්යයෙන් පසුව දිස්වේ, කාලය ඉකුත්වීමක් හෝ අනෙක් පැත්තෙන් දුටු ප්රතික්ෂේපිත සම්බන්ධතාවක් ලෙස, ලොගවල සම්පූර්ණයෙන්ම සුවපත් සොකට් ඒකකයක් තිබියදී.
FreeBind: ලිපිනයට පෙර සවන්දෙන්නා
FreeBind කර්නලයට ස්ථානීය නොවන ලිපිනයකට බැඳීමට අවසර දෙන ලෙස පවසයි, එවිට systemd ට බූට් වන විට සවන් දෙන සොකට් එක සෑදීමටත් යෙදුම ආරම්භ වන සෑම විටම එය යෙදුමට දීමටත් හැකිය. සොකට් සක්රීයකරණයේ අර්ථය එයයි, සහ සොකට් එක එහි පිටුපස ඇති සේවාවට වඩා කල් ජීවත් විය හැකි හේතුවද එයයි.
[Socket]
ListenStream=
ListenStream=10.8.0.1:8443
FreeBind=yes
හිස් පැවරීම නව සටහන එකතු කිරීමට පෙර සැපයුම්කරු ඒකකයෙන් උරුම වූ සවන්දීම් සටහන් මකා දමයි, එය සෑම අතුරුමුහුණතකම පිළිතුරු දෙන ඉතිරි wildcard සවන්දෙන්නා වළක්වයි. ලිපිනය සහ වරාය ඔබේ ඒවා සමඟ ප්රතිස්ථාපනය කර, drop-in ගොනුව පමණක් නොව ඵලදායී ඒකකය සත්යාපනය කරන්න. ඇසුරුම් ගොනුව එහි තැනම සංස්කරණය කිරීම වෙනුවට ඒකකයේ නම යටතේ drop-in එකක් භාවිත කරන්න, මන්ද ඊළඟ ඇසුරුම් යාවත්කාලීනය සංස්කරණය උඩින් ලියා අභිප්රායේ කිසිදු සලකුණක් නොතබයි. පසුව සොකට් ඒකකය බලාපොරොත්තු වන නැවත පූරණය සහ නැවත ආරම්භ කිරීමේ ක්රියා පටිපාටිය හරහා එය යොදන්න.
systemd සොකට් යොමුව මෙම විකල්පය පිටුපස ඇති IPv4 සහ IPv6 හැසිරීම ලේඛනගත කරයි, සහ වැදගත් විස්තරය නම් එය බැඳීමට අදාළ වන අතර මාර්ගගත කිරීමට නොවේ. එහි කිසිවක් ලිපිනයක් පවරන්නේ නැති අතර VPN එකක් ආරම්භ නොකරයි. FreeBind සවන්දෙන්නාට දෙන අවසරයක් මිස අතුරුමුහුණතේ ආදේශකයක් නොවේ.
After= සහ Wants=: අනුපිළිවෙළ සූදානම නොවේ
අනුපිළිවෙළ සහ අවශ්යතාව වෙනස් අක්ෂ වන අතර, ඒවා මිශ්ර කිරීම නිවැරදි අනුපිළිවෙළකින් ආරම්භ වී තවමත් අසාර්ථක වන ඒකක ඇති කරයි. After=vpn-client.service යන්නෙන් අදහස් වන්නේ කාර්ය දෙකම ආරම්භ කරන්නේ නම්, මෙය අනෙක ආරම්භ වන තෙක් රැඳී සිටින බව පමණි. එය VPN එක ඇද නොගන්නා අතර VPN එක සම්බන්ධ වීම අවසන් වන තෙක් රැඳී නොසිටී.
Wants= සහ Requires= වැනි අවශ්යතා උපදෙස් සක්රීයකරණය හසුරුවන අතර, යැපීම අසාර්ථක වූ විට කුමක් සිදුවේද යන්නෙන් ඒවා වෙනස් වේ: එකක් දිගටම යන අතර අනෙක නතර වේ. කිසිවක් සම්බන්ධිත ටනලයක අර්ථය නොදනී. VPN ක්රියාවලියක් ලිපිනයක් පවරා නොගෙන සක්රීය විය හැක, නැතහොත් ලිපිනය පවරාගෙන සහකරුට මාර්ගයක් නොමැතිව සක්රීය විය හැක, සහ අවස්ථා දෙකම යැපීම සපුරයි. යෙදුමට ලිපිනය පැවතීම අවශ්ය නම්, ක්රියාවලිය ආරම්භ වීම සූදානමේ සාක්ෂියක් ලෙස සැලකීම වෙනුවට එම කොන්දේසිය පැහැදිලිව ආකෘතිකරණය කරන්න.
systemctl cat සහ systemctl show -p After -p Wants -p Requires සමඟ ඒකකය සැබවින්ම ප්රකාශ කරන දේ පරීක්ෂා කරන්න. වෙනස් නාමාවලි තුනක drop-in ඔබ කිසිදා නොලියූ උපදෙස් එකතු කළ හැක, සහ systemd කියවන්නේ ඵලදායී ඒකකය පමණි.
network-online.target නොකරන දේ
network-online.target ට පසුව අනුපිළිවෙළ කළ ඒකකය ජාල කළමනාකරු ජාලය භාවිතයට සුදුසු යැයි ප්රකාශ කරන තෙක් රැඳී සිටී, එය බූට් සමමුහුර්තකරණ ලක්ෂ්යයක් මිස අඛණ්ඩ කොන්දේසියක් නොවේ. නිශ්චිත ටනලයක් ඉහළ තිබේද යන්න එය නොකියයි, සහ දහවල් පසු VPN නැවත සම්බන්ධ වන විට එය නැවත ක්රියාත්මක නොවේ. එය නැවත සම්බන්ධ වීමේ අධීක්ෂකයක් ලෙස සැලකීම එම ඉලක්කයේ වඩාත් පොදු වැරදි කියවීමයි.
systemd ව්යාපෘතිය එම වෙනස සෘජුවම ලේඛනගත කරයි, සහ ප්රායෝගික ප්රතිවිපාකය නම් ටනල් ලිපිනයක් අවශ්ය සෑම දෙයක්ම යැපීම තමන්ම දැරිය යුතුය. network-online එක එන තෙක් රැඳී සිට පසුව ටනල් ලිපිනයක් බඳින ඒකකය ටනලය අහම්බෙන් පළමුව ඉහළ ආ විට පමණක් නිවැරදි වන අතර, එය අහම්බයක් මිස නිර්මාණයක් නොවේ.
ඔබ සැබවින්ම තෝරාගත් ජීවන චක්රය පරීක්ෂා කරන්න
පිරිසිදු බූට් එකක්, ලිපිනය දිස්වීමෙන් පසු ඉල්ලීමක්, සහ VPN බිඳ වැටී නැවත පැමිණීමෙන් පසු හැසිරීම පරීක්ෂා කරන්න. එම අවස්ථා තුන ක්රියාකාරී සවන්දෙන්නෙකු ක්රියාකාරී සේවාවකින් වෙන් කරයි.
systemd-analyze verify myapp.socket
systemctl cat myapp.socket
ss -ltn "sport = :8443"
පළමු විධානය නැවත ආරම්භ කිරීමට පෙර ඒකක ගොනු දෝෂ අල්ලා ගනී, දෙවැන්න ඒකාබද්ධ ඒකකය පෙන්වයි, තෙවැන්න සවන්දෙන්නා සිටීද සහ කුමන ලිපිනයකද යන්න ඔප්පු කරයි. ඔබ ටනල් ලිපිනයක් බලාපොරොත්තු වූ තැන wildcard ලිපිනයක සවන්දෙන්නෙකු සිටීම යනු හිස් ListenStream ඉවත් කළ යුතුව තිබූ ඉතිරියයි. ලිපිනය ගෙන ගියේදැයි බැලීමට VPN නැවත සම්බන්ධ වීමෙන් පසු තෙවන විධානය නැවත කරන්න.
ජීවන චක්රය උත්ප්රේක්ෂාවෙන් තෝරන්න: ස්ථාවර ලිපිනයක් නැවත පැමිණෙන තෙක් රැඳී සිටින නිදහසේ බැඳුණු සවන්දෙන්නෙක්, නැතහොත් ටනලය සමඟ නතර වී ප්රතිසාධනයේදී නැවත ආරම්භ වන සේවාවක්. මේවා වෙනස් නිර්මාණ වන අතර වෙනස් ආකාරවලින් අසාර්ථක වේ. පසුව ප්රවේශ ප්රතිපත්තිය ඔබ අදහස් කළ මූලාශ්ර සහ මාර්ග සමඟ බැඳ තබන්න, මන්ද ගමනාන්ත ලිපිනයක් බැඳීම සඳහා පිළිගත් පැකට් විශ්වාසදායක අතුරුමුහුණතක් හරහා පැමිණ තිබිය යුතු බවක් අවශ්ය නොවේ.