TUN کیا کرتا ہے، اور VPN پروٹوکول کو ابھی کیا کرنا ہے
TUN کرنل اور کسی پروگرام کے درمیان IP پیکٹ منتقل کرتا ہے۔ ترسیل، توثیق اور خفیہ کاری اُس پروٹوکول کی ہے جو وہ پروگرام بولتا ہے۔
tun0 اور VPN پروٹوکول کو ایک ہی چیز سمجھنا لوگوں کو غلط لاگ تک پہنچاتا ہے۔ انٹرفیس ایک مقامی حد ہے جہاں صارف کی فضا میں موجود پروگرام کرنل کے ساتھ IP پیکٹوں کا تبادلہ کرتا ہے۔ پروٹوکول وہ ہے جو وہ پروگرام پیکٹوں کو ملنے کے بعد اُن کے ساتھ کرتا ہے: ترسیل، توثیق، خفیہ کاری اور ایک ہم منصب۔ ڈیوائس بنانا اِن میں سے کچھ بھی منتخب نہیں کرتا۔
دو اجزا، ایک پیکٹ راستہ
کرنل ڈیوائس میں ایک IP پیکٹ لکھتا ہے، اور پروگرام اُسے فائل ڈسکرپٹر سے پڑھتا ہے۔ مخالف سمت میں پروگرام پیکٹ واپس لکھتا ہے اور کرنل اُسے یوں روٹ کرتا ہے جیسے وہ کسی حقیقی انٹرفیس پر آیا ہو۔ TUN IP لے جاتا ہے، جبکہ TAP ایتھرنیٹ فریم لے جاتا ہے۔ اُس حد پر پیکٹ پڑھنا فریمنگ دکھاتا ہے، اور ڈیوائس بالکل اِسی لیے ہے۔
اُس حد سے آگے سب کچھ پروگرام کا کام ہے۔ دو پروگرام ایک ہی انٹرفیس تصور استعمال کر کے پیکٹوں کے ساتھ بالکل مختلف کام کر سکتے ہیں۔ ڈیوائس خود اِس بارے کوئی رائے نہیں رکھتی کہ آگے کیا ہوگا۔ فائل ڈسکرپٹر ہی وہ واحد ہینڈل ہے جو پروگرام کے پاس کرنل کی طرف ہے۔
ڈیوائس بنائیں، پھر حد کا مشاہدہ کریں
حد کی جانچ کرتے وقت جان بوجھ کر ڈیوائس بنائیں۔ مستقل ڈیوائس اُس عمل کے بعد بھی رہتی ہے جس نے اُسے بنایا، یہ تجربات کے لیے مفید ہے اور بعد میں الجھن کا عام ذریعہ بنتی ہے۔ VPN کو مورد الزام ٹھہرانے سے پہلے جھنڈیاں اور مالک دیکھیں۔
sudo ip tuntap add dev tun9 mode tun user alice
ip -d link show tun9لنک کی تفصیلات ڈیوائس کی قسم اور منسلک مالک دکھاتی ہیں۔ اگر کوئی عمل اُسے کھلا نہ رکھے تو اُس میں لکھے گئے پیکٹ کہیں نہیں جاتے۔ منسلک عمل کے بغیر ڈیوائس لنک فہرست میں صحت مند دکھ سکتی ہے جبکہ کچھ بھی آگے نہیں بھیجتی۔
انٹرفیس کا نام کیا وعدہ نہیں کر سکتا
انٹرفیس کا نام خفیہ کاری یا توثیق کے بارے کچھ نہیں کہتا۔ پروگرام پیکٹوں کو TLS میں، اپنے پروٹوکول میں، IPsec میں یا کسی بھی چیز میں لپیٹ سکتا ہے۔ TAP کی بجائے TUN چننا حد پر فریمنگ بدلتا ہے، سلامتی کا ڈیزائن نہیں۔ فریمنگ کا انتخاب حقیقی ہے، اور یہ سلامتی کے سوال سے بہت چھوٹا ہے۔
شناخت بھی اِسی طرح کام کرتی ہے: مشاہد تار پر بیرونی پروٹوکول دیکھتا ہے، کوئی لیبل نہیں جو بتائے کہ کون سی مقامی ڈیوائس نے اُسے بنایا۔ کسی اور چیز جیسی دکھنے والی سرنگ یہ اپنے بیرونی پروٹوکول کی وجہ سے کرتی ہے، اپنے انٹرفیس کے نام کی وجہ سے نہیں۔ مشاہد یہ نہیں دیکھ سکتا کہ کون سی مقامی ڈیوائس نے پیکٹ بنایا، صرف یہ دیکھ سکتا ہے کہ پیکٹ کیسا لگتا ہے۔ مصنوعات کا موازنہ کرتے وقت اِن دو سوالوں کو الگ رکھیں، کیونکہ ایک جواب کبھی دوسرے کا مطلب نہیں ہوتا۔
اصلاح کو ناکام ہونے والے مرحلے سے ملائیں
جب کچھ بگڑے تو ناکامی کے مراحل الگ کریں۔ غائب ڈیوائس، اجازت کی خرابی اور مسترد شدہ لاگ اِن مختلف شہادتیں اور مختلف اصلاحات دیتے ہیں۔ پہلے مقامی حالت پڑھیں، پھر پروگرام کا اپنا لاگ، پھر ہم منصب کا نقطۂ نظر۔ کچھ بھی بدلنے سے پہلے تینوں پڑھیں۔
ip -d link show tun0
journalctl -u openvpn-client@corp --since '10 min ago'اگر ڈیوائس موجود ہو اور کوئی عمل اُسے تھامے ہوئے ہو تو مقامی حد کام کر رہی ہے اور مسئلہ مزید آگے ہے۔ اگر ڈیوائس نہ ہو تو کسی بھی اسناد کی جانچ مدد نہیں کرے گی۔ جس مرحلے کو آپ نام دے سکتے ہیں وہی مرحلہ آپ جانچ سکتے ہیں۔ TUN/TAP دستاویزات حد اور ڈیوائس ماڈل بیان کرتی ہیں۔