MTU یا MSS؟ VPN کی تبدیلی اصل میں کیا درست کرتی ہے
MTU طے کرتا ہے کہ لنک کتنا اٹھاتا ہے؛ MSS اس کے اندر موجود TCP پے لوڈ کو محدود کرتا ہے۔ درست کو محدود کریں اور جانیں کہ کون سے پروٹوکول دونوں میں سے کوئی نہیں ڈھکتا۔
پنگ کامیاب ہوتے ہیں، بڑی منتقلی رک جاتی ہے، اور ٹنل خود کو صحت مند قرار دیتی ہے۔ کوئی انٹرفیس کا MTU کم کرتا ہے، دوسرا MSS محدود کرتا ہے، اور کبھی کبھار مسئلہ ایسی وجوہات سے ختم ہو جاتا ہے جنہیں کوئی درج نہیں کرتا۔ یہ دو عدد مختلف چیزوں کی وضاحت کرتے ہیں، اس لیے غلط کو بدلنا ایسا حل دیتا ہے جو قسمت جیسا لگتا ہے۔ طریقہ یہ ہے: پرت کی شناخت کریں، موزوں ایڈجسٹمنٹ لگائیں، پھر نئے کنکشن پر جانچ کریں۔
دو عدد، دو چیزیں
MTU کسی لنک یا انٹرفیس کا ہوتا ہے: یہ سب سے بڑا پیکٹ ہے جو تقسیم کیے بغیر آگے بھیجا جا سکتا ہے۔ MSS TCP کا ہوتا ہے: یہ TCP پے لوڈ کی سب سے بڑی مقدار ہے جو ایک سیگمنٹ اٹھا سکتا ہے، اور یہ TCP اور IP دونوں ہیڈر شامل نہیں کرتا۔ IPv4 والے عام ایتھرنیٹ لنک پر 1500 بائٹ کا MTU معروف 1460 بائٹ کا MSS دیتا ہے۔ یہ اعداد مختلف پرتوں کی وضاحت کرتے ہیں اور مختلف طریقوں سے تبدیل ہوتے ہیں۔ انہیں خلط ملط کرنا آسان ہے کیونکہ دونوں بائٹ میں ناپے جاتے ہیں اور دونوں 1500 کے قریب ہیں۔
ایک انٹرفیس سیٹنگ کے طور پر آتا ہے۔ دوسرا SYN سیگمنٹ کے اندر آپشن کے طور پر آتا ہے، جس پر ایسے سروں کے درمیان بات چیت ہوتی ہے جو آپ کا انٹرفیس کبھی نہیں دیکھتے۔
بیرونی اضافی بوجھ کہاں گرتا ہے
VPN اندرونی پیکٹ کو دوسرے کے اندر رکھتا ہے، اور بیرونی پیکٹ کو طبعی راستے میں فٹ ہونا ہوتا ہے۔ انکیپسولیشن ہیڈر، بیرونی IP ہیڈر، ٹرانسپورٹ ہیڈر اور کوئی بھی توثیقی ٹیگ ایسے بائٹ خرچ کرتے ہیں جو اندرونی پیکٹ استعمال نہیں کر سکتا۔ ٹنل انٹرفیس کو 1500 پر چھوڑ دیں تو بیرونی پیکٹ باقاعدگی سے اس سے زیادہ ہو جاتا ہے جو راستہ اٹھا سکتا ہے۔ 'تقسیم نہ کریں' بٹ سیٹ ہونے پر روٹر اسے گرا دیتا ہے اور ICMP خرابی واپس بھیجنی چاہیے؛ اگر وہ خرابی فلٹر ہو جائے تو بھیجنے والے کو کبھی پتہ نہیں چلتا۔
اسی لیے ناکامی منتخب لگتی ہے۔ چھوٹی درخواستیں مکمل ہوتی ہیں اور سیگمنٹ بھرنے والا کوئی بھی کام رک جاتا ہے، کیونکہ صرف بڑے پیکٹ پھینکے جاتے ہیں۔ پنگ گزارنے والی ٹنل ڈیٹا اٹھانے والی ٹنل نہیں ہے۔
MSS کو محدود کرنا، اور یہ کہاں لاگو ہوتا ہے
MSS کی محدودیت منتخب مقام سے گزرتے وقت SYN سیگمنٹ کی قدر دوبارہ لکھتی ہے، جس سے دونوں سرے بغیر وجہ جانے چھوٹا پے لوڈ منتخب کرتے ہیں۔ Linux پر یہ mangle جدول کا ہدف ہے جو واضح اصول سے لاگو ہوتا ہے، اور اسے آپ کی مطلوبہ سمت میں SYN پیکٹوں پر لگنا چاہیے۔ اسے ٹنل انٹرفیس اور پتہ رینج تک محدود رکھیں، کیونکہ وسیع اصول ایسی ٹریفک کا رویہ بدل دیتا ہے جو کبھی ٹنل میں داخل نہیں ہوتی۔
اثر صرف TCP پر ہے۔ UDP ایپلیکیشن، QUIC سیشن اور اپنے ڈیٹا گرام بنانے والا کوئی بھی پروٹوکول اس سے محفوظ رہتا ہے۔
مقررہ راستے سے تشخیص کریں
ایک وقت میں ایک متغیر رکھیں۔ اس پیکٹ سے جانچ کریں جس کا حجم آپ خود منتخب کرتے ہیں، اور 'تقسیم نہ کریں' جھنڈا لگائیں تاکہ کرنل نتیجہ چھپانے کے بجائے بتائے۔
درج کریں کہ ناکامی کہاں سے شروع ہوتی ہے: ٹنل کے اندر، ٹنل انٹرفیس پر، یا انکیپسولیشن کے بعد طبعی راستے پر۔ پھر ایک عدد بدلیں اور دوسرا نہیں، وہی جانچ دہرائیں۔ موجودہ کنکشنز طے شدہ MSS رکھتے ہیں، اس لیے پالیسی کی تبدیلی صرف نئے کنکشن پر نظر آتی ہے، اور اسی لیے کیش شدہ صفحہ کسی بھی سمت کچھ ثابت نہیں کرتا۔ اگر ایک بڑا اپ لوڈ کام کرنے لگے تو آپ نے اس راستے کے بارے میں سیکھا، اس پر چلنے والے ہر پروٹوکول کے بارے میں نہیں۔
ہر تبدیلی کیا درست نہیں کرتی
انٹرفیس کا MTU کم کرنا پہلے سے قائم سیشن کا MSS نہیں بدلتا۔ MSS محدود کرنا UDP بہاؤ کی مدد نہیں کرتا، اور ایسا راستہ درست نہیں کرتا جہاں ICMP خرابیاں صرف ایک سمت میں فلٹر ہوتی ہیں۔ ہر تبدیلی مسائل کی ایک قسم درست کرتی ہے اور باقی کو ویسا ہی چھوڑ دیتی ہے۔
لکھیں کہ آپ نے کون سی ایڈجسٹمنٹ کہاں لگائی اور کس جانچ نے فرق دکھایا، ورنہ اگلا انجینئر دونوں لگا دیتا ہے اور یہ بتانے کی صلاحیت کھو دیتا ہے کہ کون سی اہم تھی۔ اگر پابندی حقیقی اور مستقل ہے تو اسے چھپانے والی محدودیت کے بجائے اسے ظاہر کرنے والا ٹنل MTU منتخب کریں۔ اگر محدود کرنا ہی پڑے تو اصول کو محدود دائرے اور تبصرے کے ساتھ چھوڑیں، کیونکہ غیر واضح mangle اصول بطور ڈیفالٹ مستقل ہو جاتا ہے۔