නින්දේ hook එකට නැවත සම්බන්ධ වීමේ විධානයක් දමන්න, ගැටලුව විසඳා ඇති බව පෙනේ. එය විසඳෙන්නේ hook එක ජාලය පවතින්නට පසුව ධාවනය වන විට, සේවාදායකයා හඳුනන අනන්‍යතාවක් ලෙස, සේවාදායකයා සැබවින්ම ක්‍රියාත්මක කරන මාර්ගයකින් පමණි. නැවත ආරම්භයෙන් පසු බොහෝ අසාර්ථකතා එම තුනෙන් එකකි, සහ ඒවායින් කිසිවක් hook එක තුළම දෝෂයක් ලෙස නොපෙනේ. hook එක කෙසේ වෙතත් සාර්ථකත්වය ආපසු දෙයි.

ශුන්‍යයෙන් පිටවන script එකක් ටනලයක් ආපසු ආවේ ද යන්න ගැන ඔබට කිසිවක් නොකීවේ ය.

hook එක ධාවනය වේ, ඉන්පසු?

#!/bin/sh
case "$1" in
  pre)
    vpn-client disconnect
    ;;
  post)
    vpn-client connect
    ;;
esac

සෑම සිදුවීමක්ම hook එක දෙවරක් කැඳවයි — සංක්‍රාන්තියට පෙර සහ පසු — සහ එයට අදියර සහ සිදුවීමේ නම ලබා දෙයි. එය root ලෙස අවම පරිසරයක ධාවනය වේ, එබැවින් නිරපේක්ෂ මාර්ග අවශ්‍ය වන අතර ඩෙස්ක්ටොප් සැසි විචල්‍යයක් බලාපොරොත්තු නොවිය යුතුය. දෙකම ඉක්මනින් ආපසු ඒම කියන්නේ script එක ධාවනය වූ බව පමණි. ඉන්පසු පැතිකඩ ඉහළ ආවේ ද යන්න වෙනම නිරීක්ෂණයක් වන අතර log එකේ එයටම සාක්ෂි අවශ්‍යය.

අදියර තර්කය නිර්මාණයේ කොටසක් ලෙස සලකන්න. pre අදියරේ නැවත සම්බන්ධ වීමේ උත්සාහය සිදුවන්නේ යන්ත්‍රය සියල්ල නැති කරගන්නට යන විටය, සහ එය සාර්ථක විය නොහැක.

Root, අවම පරිසරය, වැරදි පරිශීලක

සේවාදායකයා සෑම පරිශීලකයෙකුටම පිවිසුම් ටෝකනය තබා ගන්නේ නම්, hook එක root ලෙස ධාවනය කිරීමෙන් ඉදිරිපත් කිරීමට කිසිවක් ඉතිරි නොවේ. hook එක සැබවින්ම භාවිත කරන අනන්‍යතාව යටතේ තත්ත්වය පරීක්ෂා කරන්න, ඔබ ඩෙස්ක්ටොප් ටර්මිනලයකින් පරීක්ෂා කළ අනන්‍යතාව යටතේ නොවේ. සමහර build එකල විසන්ධියකින් පසු අතුරුමුහුණත අල්ලාගෙන සිටින ඩීමන් එකක් ද තබයි, එබැවින් නැවත සම්බන්ධ වීම පැරණි තත්ත්වයකට වැටේ, සහ ක්‍රියාවලිය පළමුව පිරිසිදු කිරීම එය අපිරිසිදු වසා දැමීමේ මිලට ප්‍රතිසාධනය කරයි. ඔබ සාර්ථක මාර්ගය පමණක් පරීක්ෂා කරන්නේ නම් දෙකෙන් කිසිවක් නොපෙනේ.

hook එක නිරපේක්ෂ මාර්ග සමඟ ලියන්න, එය root හිමිකම යටතේ සහ ක්‍රියාත්මක කළ හැකි ලෙස තබන්න, සහ එය කළ දේ log කරන්න. එම log නොමැතිව ඊළඟ විමර්ශනය ශුන්‍යයෙන් ආරම්භ වේ.

ස්වයං සම්බන්ධතාව VPN මාර්ගය නොවේ

NetworkManager සක්‍රීය කිරීමේ යාන්ත්‍රණ දෙකක් ලබා දෙයි: පැතිකඩ මත ස්වයං සම්බන්ධතා ධජයක්, සහ ප්‍රාථමික පැතිකඩක් සක්‍රීය වන විට ආරම්භ වන ද්විතීයික සම්බන්ධතා. දේශීය උපාංග වර්ග පළමුවැන්න ක්‍රියාත්මක කරයි; VPN ප්ලගින ඓතිහාසිකව දෙවැන්න පමණක් ක්‍රියාත්මක කර ඇත, එබැවින් OpenVPN පැතිකඩක ස්වයං සම්බන්ධතාව සලකුණු කිරීමෙන් කිසිදු බලපෑමක් නොවිය හැක. ගුණ දෙකම පරීක්ෂා කරන්න, පසුව VPN එක Wi-Fi හෝ Ethernet පැතිකඩේ ද්විතීයිකය ලෙස සම්බන්ධ කරන්න.

[Unit]
PartOf=NetworkManager.service
Requires=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service

systemd ඒකකයකින් කළමනාකරණය වන WireGuard අතුරුමුහුණතට hook එකක් වෙනුවට එම drop-in එක අවශ්‍ය වන අතර, ජාලය online වූ පසු අනුපිළිවෙලට සකසන්න.

ජාලය එනතුරු රැඳී සිටින්න, සීමාවක් සමඟ

timer=1
while ! ping -c1 -n -w1 203.0.113.1 >/dev/null; do
  sleep 1; timer=$((timer+1))
  [ $timer -ge 300 ] && exit 0
done
nmcli connection up "work-vpn"

නැවත ආරම්භයේදී Wi-Fi තවමත් නැවත සම්බන්ධ වෙමින් සිටියදී ටනලය ඉල්ලා සිටිය හැක, එය ඕනෑම ස්ථිර නින්දක් අනුමානයක් බවට පත් කරයි. ළඟා විය හැකි ලිපිනයක් එනතුරු රැඳී සිටින්න, පසුව පැතිකඩ ඉහළට ගන්න, සහ රැඳී සිටීම සීමා කරන්න, hook එකකට නැවත ආරම්භක මාර්ගය අසීමිතව විවෘතව තබා ගැනීමට නොහැකි වන පරිදි. සංඛ්‍යාත්මක දර්ශකයකට වඩා පැතිකඩ නාමයට මුල් තැන දෙන්න, සහ නිවැරදි පැතිකඩ ජාලය අනුව වෙනස් වේ නම්, නීරෝගී ටනලය එහි තේරීම කලින්ම ගොනුවක සටහන් කරත්වා.

නැවත ධාවන කුණාටු වලින් ද ආරක්ෂා වන්න, උත්සාහ ගණන් කර නතර කරමින්. අසාර්ථක සෑම පරීක්ෂණයකටම ප්‍රතිචාර දක්වන watch dog එකක් එක් බාධාවක් ලූපයක් බවට පත් කරයි.

එක් වරක් suspend කරන්න, පසුව hook එකේම ප්‍රතිදානය සඳහා journal එක කියවන්න. අනුපිළිවෙල සනාථ කරන එකම පරීක්ෂණය එයයි.

අදාළ ලිපි