جب لیپ ٹاپ پہلے ہی اس نیٹ ورک پر ہو تو گھریلو نیٹ ورک کے VPN کے پاس کرنے کو کچھ نہیں ہوتا۔ دلکش شارٹ کٹ وہ تیاری کا حکم ہے جو غیر صفر کوڈ کے ساتھ باہر نکلتا ہے؛ یہ یونٹ کو ناکام کر دیتا ہے اور ہر ڈیش بورڈ ٹوٹا ہوا دکھائی دیتا ہے۔ systemd کے پاس ایسے ہی فیصلے کے لیے ایک ہدایت ہے، اور یہ جان بوجھ کر چھوڑنے کو اصل خرابی سے الگ کرتی ہے۔ اسے درست کرنا بنیادی طور پر یہ لکھنا ہے کہ ہر ایگزٹ کوڈ کا کیا مطلب ہے۔

ناکام پیشگی شرط غلط شکل کیوں ہے

ExecStartPre غیر صفر اخراج کو آغاز کی ناکامی سمجھتا ہے، جو سروس تیار کرنے والے حکم کے لیے درست ہے۔ اسے شرط کے طور پر استعمال کرنا پالیسی کے فیصلے کو خراب انحصار سے الگ ناقابلِ شناخت بنا دیتا ہے۔ ExecCondition اس لیے موجود ہے کہ یونٹ ناکام نشان زد ہوئے بغیر شروع ہونے سے انکار کر سکے۔

یہ فرق رات تین بجے اہم ہے، جب کوئی ایسی سرخ یونٹ کی جانچ نہیں کرنا چاہتا جو ڈیزائن کے مطابق برتاؤ کر رہی تھی۔ ناکام یونٹ جان بوجھ کر کی گئی ناکامیوں کے درمیان اصل خرابیوں کو بھی چھپا دیتا ہے۔

پہلے ایگزٹ کوڈ معاہدہ لکھیں

اسکرپٹ سے پہلے معاہدہ لکھیں۔ صفر اخراج کا مطلب جاری رکھنا، ایک اخراج کا مطلب باقی آغاز کے حکم چھوڑ دینا، اور 255 اخراج کا مطلب کہ شرط خود چل نہ سکی۔ دو اور 254 کے درمیان کوڈ بھی عام طور پر چھوڑنے کے معنی رکھتے ہیں، جو مددگار کے بے ترتیب خرابی کوڈ واپس کرنے پر بھولنا آسان ہے۔ نیچے دیا drop-in مددگار کو یونٹ کے اصل نام سے جوڑتا ہے۔

[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpn

طے شدہ معنی فرض کرنے سے پہلے موثر یونٹ میں وراثت میں ملنے والی SuccessExitStatus یا stop-post ترتیبات جانچیں۔ پھر تینوں نتائج میں سے ہر ایک کو جان بوجھ کر جانچیں۔

نیٹ ورک کا اشارہ مقام کا ثبوت نہیں

قابلِ رسائی راؤٹر پتہ یا معلوم MAC درست نیٹ ورک کی نشاندہی کر سکتے ہیں، اور ان میں سے کوئی بھی اسے ثابت نہیں کرتا۔ دوسرا نیٹ ورک وہی پتہ دوبارہ استعمال کر سکتا ہے، ARP ڈیٹا پرانا ہو سکتا ہے، اور شناخت کنندگان کی نقل کی جا سکتی ہے۔ جانچ کو پالیسی سے ہم آہنگ بہتری سمجھیں، تصدیق کا نتیجہ نہیں۔

غیر یقینی صورتحال کا مطلب پہلے سے طے کریں۔ شک ہونے پر VPN شروع کرنا ایسے کلائنٹ کے لیے محفوظ ہے جو بس جڑ نہ سکے؛ شک ہونے پر اسے چھوڑ دینا محفوظ نہیں۔ جانچ کو محدود رکھیں، اور فہرست میں پہلے کو فرض کرنے کے بجائے فعال انٹرفیس پڑھیں۔ جو جانچ لٹک جائے وہ ”نہیں“ کہنے والی جانچ سے بدتر ہے، کیونکہ یونٹ اس کا انتظار کرتا ہے۔

ان مفروضوں کو یونٹ فائل کے پاس درج کریں تاکہ اگلا شخص جان سکے کہ مددگار کیا مانتا ہے۔ اسکرپٹ کے اوپری حصے میں تبصرہ انہیں رکھنے کی سب سے سستی جگہ ہے۔

نیٹ ورکس کے درمیان منتقلی سنبھالیں

شرط سروس کے آغاز پر چلتی ہے، اور بعد میں دوبارہ جانچی نہیں جاتی۔ چھوڑی گئی یونٹ لیپ ٹاپ کے کیفے میں جانے کے بعد بھی چھوڑی ہوئی رہتی ہے، اور چلتی ہوئی سرنگ لیپ ٹاپ کے گھر واپس آنے کے بعد بھی قائم رہتی ہے۔ نیٹ ورک تبدیلی کے زندگی کے چکر کو الگ طریقہ کار کے ذریعے آغاز اور بندش کے فیصلے سے جوڑیں۔

systemctl cat home-vpn.service

چار صورتیں جانچیں: گھر میں آغاز، باہر آغاز، ایسی جانچ جو چل نہ سکے، اور یونٹ فعال ہونے کے دوران نیٹ ورکس کے درمیان منتقلی۔ جرنل میں چھوڑنے کی وجہ نظر آتی رکھیں تاکہ جان بوجھ کر لیا گیا فیصلہ کبھی تصدیق کی ناکامی جیسا نہ لگے۔ سروس حوالہ اخراج کے معنی اور کم از کم ورژن کی دستاویز کرتا ہے۔

متعلقہ مضامین