VPN کنفیگریشن کنٹینر کے دوبارہ بننے پر صرف اسی صورت میں باقی رہتی ہے جب آپ اسے mount کریں
چل رہے کنٹینر کے اندر ترمیم شدہ فائل ایسی تہہ میں رہتی ہے جو غائب ہو جاتی ہے۔ bind mount، volume اور secret کا موازنہ کریں، پھر دوبارہ بنائیں اور چار چیزیں جانچیں۔
آپ چل رہے کنٹینر کے اندر WireGuard کنفیگریشن میں ترمیم کرتے ہیں، یہ کام کرتی ہے، اور اگلی image تازہ کاری اسے مٹا دیتی ہے۔ کچھ بھی غلط کنفیگر نہیں تھا۔ فائل کنٹینر کی لکھنے کے قابل تہہ میں رہتی تھی، جو صرف اسی کنٹینر مثال کے لیے موجود ہے۔ اہم موازنہ یہ نہیں کہ کون سا اوزار استعمال کریں، بلکہ یہ ہے کہ آپ کی تعیناتی کون سے ان پٹ کا اعلان کرتی ہے۔ آپ نے ہاتھ سے جو بھی ترمیم کی وہ ایسا ان پٹ ہے جسے تعیناتی نہیں جانتی۔
دو قسم کی حالت، ایک قابلِ ضیاع ہے
کنٹینر میں رن ٹائم پر کیے گئے تبدیلیوں کے لیے لکھنے کے قابل تہہ ہوتی ہے، اور کنٹینر بدلے جانے پر وہ تہہ پھینک دی جاتی ہے۔ یہ کنفیگریشن کا ذخیرہ نہیں ہے اور بیک اپ بھی نہیں ہے۔ image اور اعلان شدہ ان پٹ ہی اس بات کی مکمل تعریف ہیں کہ کیا چل رہا ہے۔
پوچھیں کہ آپ کی کون سی VPN فائلیں اعلان شدہ ان پٹ ہیں اور کون سی اتفاق:
docker diff wg-vpn
docker inspect --format '{{json .Mounts}}' wg-vpndiff فہرست کرتا ہے کہ لکھنے کے قابل تہہ میں کیا بدلا، اور یہ ٹھیک ان چیزوں کا مجموعہ ہے جو غائب ہوں گی۔ mount فہرست دکھاتی ہے کہ کیا باقی رہتا ہے۔ دونوں کا موازنہ کچھ کھونے سے پہلے سوال کا جواب دیتا ہے۔
bind mount، نامزد volume یا secret: ہر ایک کیا تحفظ دیتا ہے
تینوں VPN پروفائل رکھ سکتے ہیں، اور یہ اس میں مختلف ہیں کہ کون اسے پڑھ سکتا ہے اور تبدیلی کے وقت کیا ہوتا ہے۔
| Mechanism | Survives recreation | Who can read it |
|---|---|---|
| Writable layer | No | Anyone with container access, until it is gone |
| Bind mount | Yes, while the host path exists | Whatever the host permissions allow |
| Named volume | Yes, until the volume is removed | Managed by the runtime |
| Secret | Yes, as a declared input | The container process, by design |
bind mount میزبان کے راستے کا نقشہ بناتا ہے، اس لیے فائل اس راستے جتنی محفوظ ہے اور میزبان کی اجازتیں جتنی دیتی ہیں اتنی نظر آتی ہے۔ نامزد volume کو runtime سنبھالتا ہے اور کنٹینر ہٹانے پر بھی باقی رہتا ہے، جو اسے تعیناتی کی ملکیت والی حالت کے لیے زیادہ محفوظ ڈیفالٹ بناتا ہے۔ secret کا طریقہ کار اس مواد کے لیے ہے جو آپ image یا environment variable میں نہیں چاہتے۔
ہر environment variable اور ہر میزبان فائل کو یکساں تحفظ نہ سمجھیں، کیونکہ وہ یکساں نہیں ہیں۔
کنٹینر کے اندر ترمیم ہی پھندا ہے
پھندا اوزار نہیں، ترمیم کی سمت ہے۔ چل رہے کنٹینر کے اندر کیا گیا تبدیلی تعیناتی کے لیے نظر نہیں آتی، اس لیے اگلی دوبارہ تشکیل اسے خاموشی سے واپس لے آتی ہے اور علامت image میں پسپائی جیسی لگتی ہے۔ اگر تشخیص کے لیے وہاں تبدیلی کرنی ہو تو فوراً باہر کاپی کریں اور اعلان شدہ ان پٹ میں رکھیں۔ پھر دوبارہ بنائیں تاکہ ثابت ہو کہ تعیناتی اسے دوبارہ پیدا کرتی ہے۔
پروفائل میں نجی کلیدیں اور اکاؤنٹ مواد ہو سکتا ہے، جو اس فائل کے بیک اپ کو فائل کاپی کے بجائے راز داری کے انتظام کا کام بنا دیتا ہے۔ ملکیت اور پڑھنے کی رسائی کو کنٹینر کے اصل عمل تک محدود رکھیں، اجازت کی خرابی ہٹانے کے لیے میزبان ڈائریکٹری کو چوڑا کرنے کے بجائے۔
یہی چوڑا کرنا کنٹینر کی سہولت کو میزبان کی بے نقابی میں بدلتا ہے۔
جان بوجھ کر دوبارہ بنائیں، پھر چار چیزیں جانچیں
image کا ورژن، مطلوبہ ڈیوائس اور صلاحیتیں، نیٹ ورک کنکشن اور مستقل ان پٹ لکھیں۔ ڈیوائس اور صلاحیت کی فہرست VPN کنٹینر کے لیے خاص طور پر اہم ہے، کیونکہ سرنگ کو نیٹ ورک ڈیوائس اور اسے کنفیگر کرنے کا اختیار چاہیے۔
تصدیق کریں کہ کون سی پیدا شدہ رن ٹائم حالت محفوظ کرنے کے بجائے دوبارہ بنائی جانی چاہیے۔ سرنگ نے پہلی شروعات میں جو کلیدیں بنائیں وہ حالت ہیں، اور انہیں رکھنا یا دوبارہ بنانا ایسا فیصلہ ہے جس کے نتائج ہر اس peer کے لیے ہیں جو پرانی عوامی کلید جانتا ہے۔
کنٹرول شدہ دوبارہ تشکیل کے بعد شناخت، روٹنگ، DNS اور مطلوبہ ناکامی بلاک جانچیں۔ بغیر خرابی شروع ہونے والا عمل ان چاروں میں سے کوئی ایک بھی ثابت نہیں کرتا۔ سرنگ چلنے کے دوران اور اسے بند کرنے کے بعد دوبارہ جانچیں، کیونکہ ناکامی بلاک صرف اسی وقت ظاہر ہوتا ہے جب سرنگ چلی جاتی ہے۔
کنٹینر سے باہر بحالی کاپی رکھیں
کنٹینر سے آزاد رہنے والی بحالی کاپی رکھیں، اور دستاویزی عمل کے ذریعے اسے بحال کرنے کی جانچ کریں۔ VPN پروفائل کا غیر جانچا بیک اپ ایک امید ہے، خاص طور پر جب بحالی کے راستے میں وہ اجازتیں شامل ہوں جو کنٹینر کے عمل کو درکار ہیں۔
اگر VPN کا مالک کنٹینر بدلا جائے تو اس کا نیٹ ورک اسٹیک بانٹنے والی ایپلیکیشنز کو runtime کے معاون زندگی چکر میں ہم آہنگ کریں۔
یہی ہم آہنگی دوبارہ شروع ہونے اور خلل کے درمیان فرق ہے۔ تعیناتی کو بیان کرنا چاہیے کہ کنفیگریشن کہاں سے آتی ہے، اور volume دستاویز وہ جگہ ہے جہاں جانچتے ہیں کہ runtime واقعی کیا محفوظ رکھتا ہے۔