لاگ میں P_CONTROL_HARD_RESET_CLIENT_V2: کیا یہ خرابی ہے؟
hard-reset کوڈ ایک سیشن کھولتا ہے، یہ خرابی نہیں۔ آگے پڑھیں تاکہ وہ سرٹیفکیٹ، اسناد یا روٹنگ ناکامی مل سکے جس نے آپ کو واقعی روکا۔
یہ سطر ہر چند سیکنڈ بعد دہرائی جاتی ہے اور ہر چیز کی وجہ لگتی ہے: control hard reset نام کا پیکٹ، جو ایسے کلائنٹ سے آتا ہے جو کہیں نہیں پہنچتا۔ یہ خرابی نہیں۔ یہ نئے سیشن کا پہلا پیغام ہے، اور دہراؤ کسی اور چیز کی ناکامی کی علامت ہے جو آگے ہوتی ہے۔ لیبل کیا کہتا ہے اور کنکشن نے بعد میں کیا کیا، ان کو الگ کرنا ہی پوری تشخیص ہے۔
کوڈ پروٹوکول میں ایک مقام بتاتا ہے
OpenVPN ایک ہی ساکٹ پر کئی قسم کے پیکٹ ملٹی پلیکس کرتا ہے، اور کوڈ وصول کنندہ کو بتاتا ہے کہ کون سی قسم اس کے پاس ہے۔ hard-reset پیکٹ سیشن کھولتے ہیں، کنٹرول پیکٹ مصافحے کا مواد لے کر چلتے ہیں، تصدیقات وصولی کی تصدیق کرتی ہیں اور ڈیٹا پیکٹ ٹنل کا بوجھ لے کر چلتے ہیں۔ پہلا بائٹ پڑھنے سے پتہ چلتا ہے کہ اُس تبادلے میں پیکٹ کہاں آتا ہے، اور سورس کوڈ میں پیکٹ کی تعریفیں ہر خاندان کا نام واضح طور پر لیتی ہیں۔
یہ صرف اتنا ہی کہتا ہے۔ ابتدائی کلائنٹ ری سیٹ کے طور پر نشان زدہ پیکٹ ثابت کرتا ہے کہ پیکٹ آپ کے مشاہدے کے مقام تک پہنچا اور ساتھی سیشن شروع کرنا چاہتا ہے۔ یہ ثابت نہیں کرتا کہ کلائنٹ نے آپ کے سرٹیفکیٹ پر بھروسا کیا، اس کی اسناد قبول ہوئیں، یا ڈیٹا چینل کبھی قابلِ استعمال ہوا۔
V2 لاحقہ اُس پیکٹ خاندان کے لیے پروٹوکول نسل کا نشان ہے، مصنوع کی نسخہ نہیں اور نہ ہی وہ سیٹنگ جو آپ نصب کرتے ہیں۔ نام میں کچھ بھی ٹنل ری سیٹ کرنے، سروس دوبارہ شروع کرنے یا کیش خالی کرنے سے متعلق نہیں۔
اُس لمحے کلائنٹ واقعی کیا کر رہا ہے
کلائنٹ ایک سیشن شناخت کھولتا ہے جس سے دونوں فریق آگے کی کنٹرول ٹریفک منسلک کریں گے۔ جب کنٹرول چینل کا تحفظ ترتیب دیا گیا ہو تو وہ پہلا پیکٹ پہلے ہی HMAC لے کر آتا ہے جو وصول کنندہ کو فیصلہ کرنے دیتا ہے کہ باقی تبادلے پر محنت کرنی چاہیے یا نہیں۔ جو وصول کنندہ اس کی تصدیق نہیں کر سکتا وہ پیکٹ خاموشی سے گرا دیتا ہے، اسی لیے غلط مشترکہ کلید خالی جگہ سے بولتے کلائنٹ جیسی لگتی ہے۔
صارف کو نظر آنے والا کچھ بھی ابھی نہیں ہوا۔ کوئی سرٹیفکیٹ تصدیق نہیں ہوا، کوئی صارف نام پیش نہیں ہوا اور کوئی ٹنل پتہ تفویض نہیں ہوا۔ ری سیٹ مصافحے کا دیباچہ ہے، اس لیے اس لمحے کنکشن کے بارے میں کوئی بھی فیصلہ قبل از وقت ہے۔
غیر فعال دوبارہ رابطہ لوپ میں دلچسپ تفصیل وقفہ ہے۔ جو کلائنٹ مقررہ چکر میں بغیر پیش رفت کے دوبارہ کوشش کرتا ہے وہ عام طور پر آگے بڑھنے سے پہلے ہی مسترد ہو جاتا ہے، اور وجہ پیکٹ کے نام میں نہیں، ساتھی کے لاگ میں ہوتی ہے۔
ری سیٹ کے بعد اصل ناکامی کہاں چھپی ہے
دونوں لاگ ساتھ ساتھ پڑھیں اور پہلا واقعہ تلاش کریں جو ری سیٹ نہ ہو۔ کلائنٹ پر سرٹیفکیٹ تصدیق کی ناکامی مخصوص وجہ کے ساتھ رپورٹ ہوتی ہے: میعاد ختم شدہ سرٹیفکیٹ، نام کی عدم مطابقت یا نامعلوم جاری کنندہ۔ سرور پر اسناد کی مستردگی اپنی وجہ کے ساتھ تصدیق کی ناکامی کے طور پر رپورٹ ہوتی ہے۔ دونوں سرور کی نئی کوششوں پر دہرائی گئی نگاہ سے کہیں زیادہ مخصوص ہیں۔
ہر لاگ کو الگ پڑھنے کے بجائے ایک کوشش کو وقت کے نشان سے ملائیں، کیونکہ وہی ناکامی دونوں جگہ مختلف الفاظ اور مختلف شدت کے ساتھ دکھائی دیتی ہے۔ جو ساتھی ہار مانتا ہے وہ عام طور پر وجہ بتاتا ہے۔
اگر کوئی بھی فریق مستردگی کی اطلاع نہ دے اور تبادلہ پھر بھی رک جائے، تو حد رسائی ہے، بھروسا نہیں۔ واپسی کی سمت گرانے والا فائر وال، نیٹ ورک پتہ ترجمہ کرنے والا آلہ جس کا نقشہ ختم ہو جاتا ہے، یا MTU کا مسئلہ جو بڑے مصافحہ پیکٹ مار دیتا ہے — سب بغیر کسی تصدیق کی خرابی کے رکا ہوا تبادلہ پیدا کرتے ہیں۔
grep -nE 'VERIFY|AUTH_FAILED|TLS Error|SIGUSR1' /var/log/openvpn*.log
یہ تلاش بذات خود تشخیص نہیں، لیکن ایک ہی قدم میں آپ کو پروٹوکول کی اصطلاحات سے حقیقی ناکامی کی قسم تک لے جاتی ہے۔
تصدیق بند کرنا کیوں غلط ردِعمل ہے
جب ری سیٹ دکھائی دیتا رہے، تو سب سے تیز لگنے والا حل سرٹیفکیٹ کی تصدیق بند کرنا یا کچھ جوڑنے کے لیے کنٹرول چینل کا تحفظ چھوڑ دینا ہے۔ یہ قابلِ تشخیص ناکامی کو ناقابلِ تشخیص سے بدل دیتا ہے اور تعیناتی کو اُن ساتھیوں کو قبول کرنے پر چھوڑ دیتا ہے جنہیں مسترد کرنے کے لیے بنایا گیا تھا۔
اس کے بجائے وہ حد بدلیں جو واقعی ناکام ہوئی۔ بھروسے کا مسئلہ سرٹیفکیٹ اتھارٹی اور اُس پروفائل کا ہے جو اس کا حوالہ دیتا ہے۔ وقت کا مسئلہ گھڑی کا ہے۔ اسناد کا مسئلہ اُس تصدیق کے بیک اینڈ کا ہے جس نے انہیں مسترد کیا، اور ناقابلِ رسائی ساتھی دو میزبانوں کے درمیان راستے کا ہے۔
معاونت کی گفتگو میں کوڈ ایک کام آتا ہے: یہ بتاتا ہے کہ ساتھی کوشش کرنے تک پہنچ گیا۔ اس کے بعد کیا ہوا وہی آپ کو جاننا ہے، اور یہ اُس لاگ میں لکھا ہے جو پہلی مخصوص مستردگی درج کرتا ہے۔ وہیں سے شروع کریں، پھر ری سیٹ کی سطر وجہ جیسی لگنا چھوڑ دے گی اور وقت کے نشان جیسی لگنے لگے گی۔