OpenVPN client-connect අසාර්ථකත්වය: disconnect වලදී පිරිසිදු කිරීම සහතිකද?
ප්රතික්ෂේප වූ සේවාලාභියා firewall නියමයක් හෝ ලියූ වාර්තාවක් ආපසු නොගනී. callback ගිවිසුම ඔබේ hook තමන්ම කළ යුතු ආපසු හැරවීම සමඟ සසඳන්න.
client-connect ස්ක්රිප්ට් එකක් ශුන්ය නොවන කේතයකින් ඉවත් වන විට, OpenVPN සේවාලාභියා ප්රතික්ෂේප කරයි, සහ ක්රියාකරුවන් සාමාන්යයෙන් සිතන්නේ අදාළ client-disconnect ස්ක්රිප්ට් එක සියල්ල සකසනු ඇති බවයි. බොහෝ විට එය කිසිසේත් නොදුවයි, මන්ද disconnect සැකසීම connect අවස්ථාවට සම්පූර්ණ කළ හැකි දේ මත රඳා පවතී. ප්රතික්ෂේපය සහ ආපසු හැරවීම එකම යාන්ත්රණයක් ලෙස සැලකීම නම් අසාර්ථක පිවිසුමක් කාන්දු වූ firewall නියමයක් හෝ අනාථ වාර්තාවක් බවට පත් කරයි. මේවා වෙනස් බැඳීම් දෙකකි, සහ ඉන් එකක් පමණක් ස්වයංක්රීයයි. සර්වරය තත්ත්වයක් ඉතිරි කළ බවට දොස් පැවරීමට පෙර hook හි තමන්ගේම නික්ම යාමේ මාර්ගය කියවන්න.
ශුන්ය නොවන නික්ම යාම සේවාලාභියා ප්රතික්ෂේප කරයි; එය ඔබේ කාර්යය ආපසු නොගනී
client-connect හි නික්ම යාමේ තත්ත්වය පිළිගැනීමේ තීරණයකි. ශුන්ය යනු පිළිගැනීමයි, වෙනත් ඕනෑම දෙයක් යනු අවස්ථාව සම්පූර්ණයෙන් ස්ථාපිත වීමට පෙර එය කඩා දැමීමයි. එම ගිවිසුමේ කිසිවක් ස්ක්රිප්ට් එක දැනටමත් බාහිර ලෝකයට කර ඇති දේ පරීක්ෂා නොකරයි. ස්ක්රිප්ට් එක iptables නියමයක් එකතු කළේ නම්, පේළියක් ලිව්වේ නම් හෝ ගණකයක් වැඩි කළේ නම්, එම වෙනස්කම් ප්රතික්ෂේපයෙන් පසුවත් පවතී.
එම අසමමිතිය ප්ලගින සඳහාද අදාළ වේ, එහිදී එක් අවස්ථාවක් සඳහා connect ශ්රිත කිහිපයක් ක්රියාත්මක විය හැක. පසුව සිදුවන අසාර්ථකත්වයක් පෙර සාර්ථකත්වයක් පසුගාමීව අවලංගු නොකරයි, සහ පෙර ශ්රිතයට සහෝදර ශ්රිතය අසාර්ථක වූ බව දැනගැනීමට ක්රමයක් නැත.
ප්රතික්ෂේපය ස්වයංක්රීයයි, පිරිසිදු කිරීම නොවේ
OpenVPN 2.6 අත්පොත client-disconnect සැකසීම පෙර connect සැකසීම සාර්ථක වීමට සම්බන්ධ කරයි. ලේඛනගත ව්යතිරේකයක් කැස්කේඩ් දාම ආවරණය කරයි: එක් connect පියවරක් දැනටමත් සාර්ථකත්වය ආපසු දී ඇත්නම්, පසුව සිදුවන connect පියවර අසාර්ථක වුවද, අවස්ථාව කඩා දමන විට අදාළ disconnect පියවර තවමත් ක්රියාත්මක වේ. එම ව්යතිරේකය පටු ය සහ වින්යාස කර ඇති callback ගණන මත රඳා පවතී, එබැවින් shell ස්ක්රිප්ට් එකක් පරීක්ෂා කිරීම දාමයක් ගැන ඔබට කිසිවක් නොකියයි.
නිර්මාණය කිරීමට පෙර සැබෑ වින්යාසය සිතියම්ගත කරන්න: කුමන ස්ක්රිප්ට් එක, කුමන ප්ලගිනය සහ කුමන අනුපිළිවෙලකට ක්රියාත්මක වේද යන්න. පහත වගුව අර්ධ සම්පූර්ණ සැකසුම පිටුපස ඉතිරි කරන දේ ලැයිස්තුගත කරයි.
| What the hook did before failing | What the client sees | What stays behind |
|---|---|---|
| Created a firewall entry | A rejection, with no tunnel | A rule matching an address nobody owns |
| Wrote a state row | A rejection, with no tunnel | A record of a session that never started |
| Allocated a tunnel address | A rejection, with no tunnel | An address marked busy until something releases it |
සෑම පේළියක්ම සේවාලාභියාට එකම ආකාරයෙන් සහ සත්කාරකයාට වෙනස් ආකාරයෙන් අවසන් වේ. ඒවායින් කුමක් සිදු වුණාදැයි සේවාලාභියාට කිව නොහැක, එබැවින් hook අසාර්ථකත්ව තත්ත්වය ආපසු දීමට පෙර තමන් කළ දේ ආපසු හැරවිය යුතුය.
අසාර්ථක වූ ස්ක්රිප්ට් එක තුළම වන්දි ගෙවන්න
හවුල් තත්ත්වය ස්පර්ශ කිරීමට පෙර හැකි සියල්ල තහවුරු කරන්න: සහතික ක්ෂේත්ර, ලිපිනයේ පවතින බව, සේවාලාභියා අයත් කණ්ඩායම. ලාභම ප්රතික්ෂේපය වන්නේ කිසිදු වෙන් කිරීමකට පෙර සිදුවන එකයි. සැකසුම බාහිර ක්රියා කිහිපයක් ආවරණය කරන විට, කුමක් සම්පූර්ණ වුණාදැයි වාර්තා කර, අසාර්ථකත්ව තත්ත්වය ආපසු දීමට පෙර ඒවා ප්රතිවිරුද්ධ අනුපිළිවෙලින් ආපසු හරවන්න.
නිශ්චිත අවස්ථාවක්: ස්ක්රිප්ට් එක සෑම සේවාලාභියෙකුටම firewall සටහනක් සාදා, පසුව එය විස්තර කරන තත්ත්ව පේළිය ලිවීමට අසාර්ථක වේ. අසාර්ථක ශාඛාව දැන් සාදන ලද සටහන ඉවත් කර පසුව ශුන්ය නොවන කේතයකින් ඉවත් විය යුතුය. කිසිදා සැලසුම් නොවිය හැකි disconnect සිදුවීමක් එනතුරු බලා සිටීම යනු නියමයක් එය අදහස් කළ සැසියට වඩා දිගු කලක් ජීවත් වන ආකාරයයි.
වන්දිය idempotent සහ හිමිකරු සහිත කරන්න
පිරිසිදු කිරීම දෙවරක් ධාවනය කිරීමට ආරක්ෂිත විය යුතු අතර එය මකා දැමිය හැකි දේ සම්බන්ධයෙන් නිශ්චිත විය යුතුය. පෙර උත්සාහයකින් පසුවා එන සිදුවීමක් නව සැසියක වෙන් කිරීම ඉවත් නොකළ යුත්තේ දෙකම පොදු නමක් හෝ නැවත භාවිත කළ උමං ලිපිනයක් බෙදා ගන්නා නිසා පමණි. නිශ්චිත හසුරුව හෝ මෙහෙයුම් හැඳුනුම සම්පත් සමඟ වාර්තා කර, නමින් නොව එම යතුරෙන් මකන්න. දත්ත සමුදාය ගනුදෙනු උපකාරී වන්නේ දත්ත සමුදායේම වෙනස්කම් සඳහා පමණි; එම සීමාවෙන් පිටත firewall නියමයකට පැහැදිලි වන්දි පියවරක් අවශ්ය වේ.
ක්රියාවලිය වෙනස්කම සහ පිරිසිදු කිරීම අතර මිය යා හැකි යැයි උපකල්පනය කර, කාලසටහනකට අනුව බාහිර තත්ත්වය පිළිගත් සේවාලාභී ලැයිස්තුව සමඟ සංසන්දනය කරන සමතුලිතකරුවෙකු එක් කරන්න.
සැබවින්ම වෙනස් වන මාර්ග තුන පරීක්ෂා කරන්න
අවස්ථා තුනක් පුහුණු වන්න: කිසිවක් වෙන් කිරීමට පෙර ප්රතික්ෂේපය, අර්ධ වෙන් කිරීමකින් පසු ප්රතික්ෂේපය, සහ පසුව අවසන් වන සාමාන්ය පිළිගත් සැසියක්. එම තුන වෙනස් ලොග් පේළි සහ වෙනස් අවශේෂ නිපදවයි. එක් එක් අවස්ථාවෙන් පසු බාහිර තත්ත්වය තහවුරු කරන්න, සේවාලාභියාගේ අසාර්ථකත්ව පණිවිඩය පමණක් නොව, මන්ද තුනෙන් දෙකකදී සේවාලාභියාගේ අසාර්ථකත්වය අපේක්ෂිත ප්රතිඵලය වේ.
hook හි අවස්ථාව, නික්ම යාමේ තත්ත්වය සහ වෙන් කළ හෝ මුදා හැරි දේ, අක්තපත්ර ඉවත් කර ලොග් කරන්න. තමන් සාදන ලද සම්පත නම් කරන hook ලොගය යනු කාන්දු වූ නියමයක් මාස හයකට පසුව සොයාගත හැකි කරන දෙයයි.