مکمل سرنگ OpenVPN: سرور کی طرف انٹرنیٹ اخراج شامل کریں
ڈیفالٹ راستہ پش کرنا مکمل سرنگ سروس کا صرف آدھا حصہ ہے۔ سرور کو آگے بھیجنا، محدود آگے بھیجنے کا قاعدہ اور پول کے لیے واپسی کا راستہ بھی درکار ہے۔
ایک کلائنٹ تصدیق کرتا ہے، پول سے پتہ حاصل کرتا ہے اور VPN ہوسٹ پر موجود خدمات تک پہنچتا ہے، پھر بھی ہر عوامی منزل وقت ختم ہونے پر رک جاتی ہے۔ بغیر اخراج کے سرنگ ایسی ہی دکھائی دیتی ہے، اور یہ اسی طرح رہتی ہے جب تک چار الگ باتیں درست نہ ہوں۔ کلائنٹ کو ڈیفالٹ راستہ قبول کرنا ہوگا، سرور کو آگے بھیجنا ہوگا، فائر وال کو گزرگاہ کی اجازت دینی ہوگی، اور جوابات کو پول تک واپسی کا راستہ چاہیے۔ چاروں ناکامیوں کی ایک ہی علامت ہے، اس لیے ہر کوشش میں ایک چیز بدلیں اور نتیجہ لکھیں۔
ڈیفالٹ راستہ پش کریں اور تصدیق کریں کہ کلائنٹ نے کیا نصب کیا
سرور کی طرف کی سطر مختصر ہے، اور یہ صرف ان کلائنٹس پر اثر انداز ہوتی ہے جو پش کیے گئے اختیارات قبول کرتے ہیں. def1 شکل موجودہ ڈیفالٹ کو حذف کرنے کے بجائے دو آدھے ڈیفالٹ راستے نصب کرتی ہے، جو موجودہ کنکشن کو زندہ رکھتی ہے اور پھر بھی ہر منزل کو پکڑ لیتی ہے۔
push "redirect-gateway def1"
دوبارہ جڑنے کے بعد پروفائل پر بھروسا کرنے کے بجائے کلائنٹ کی روٹنگ جدول پڑھیں۔ Linux پر دو /1 اندراج اصل ڈیفالٹ کے ساتھ نمودار ہوتے ہیں، اور Windows وہی جوڑا 0.0.0.0/1 اور 128.0.0.0/1 کے طور پر دکھاتا ہے۔ پش کیے گئے اختیارات کو نظر انداز کرنے والا کلائنٹ، یا وہ جو انہیں مسترد کرنے کے لیے ترتیب دیا گیا ہو، اپنا پرانا ڈیفالٹ برقرار رکھتا ہے اور کبھی انٹرنیٹ ٹریفک سرنگ میں نہیں بھیجتا۔ سرور پر کچھ بھی بدلنے سے پہلے یہ سوال حل کریں، کیونکہ سرور کی طرف کا کوئی قاعدہ اس کی تلافی نہیں کر سکتا۔
آگے بھیجنا سرور کی ترتیب ہے، VPN کی ترتیب نہیں
روٹنگ کو چھونے سے پہلے آگے بھیجنے کا جھنڈا پڑھیں۔ وہاں صفر کا مطلب ہے کہ کرنل کلائنٹ کا پیکٹ وصول کرتا ہے اور اسے آگے بھیجنے سے انکار کرتا ہے، جو دور کے سرے سے فائر وال کی روک جیسا ہی دکھائی دیتا ہے۔ قدر کو سسٹم کی ترتیب کی ڈائریکٹری کے ذریعے مقرر کریں تاکہ یہ دوبارہ شروع ہونے کے بعد بھی رہے۔
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
پھر تصدیق کریں کہ میزبان کے پاس خود انٹرنیٹ اخراج تک کام کرنے والا راستہ ہے۔ سرور کے شیل سے کی گئی درخواست ثابت کرتی ہے کہ اوپر کا راستہ قابل استعمال ہے اور کلائنٹ کے پیکٹ کو آگے بھیجنے کے بارے میں کچھ نہیں کہتی، اس لیے انہیں دو الگ امتحان سمجھیں۔ اگر سرور منزل تک نہ پہنچ سکے تو آگے بھیجنے کی ترتیب کتنی ہی ہو، مدد نہیں کرے گی۔
صرف اسی گزرگاہ کی اجازت دیں جس کا آپ ارادہ رکھتے ہیں، اور کسی اور کی نہیں
آگے بھیجے گئے پیکٹ forward راستہ عبور کرتے ہیں؛ VPN ہوسٹ ہی کو مخاطب ٹریفک input راستہ عبور کرتی ہے۔ یہ الگ فیصلے ہیں، اور input راستہ کھولنے سے مشین کے اندر سے گزرنے کی اجازت نہیں ملتی۔ انہیں خلط ملط کرنا ہی سب سے عام وجہ ہے کہ فائر وال سب کچھ اجازت دیتا دکھائی دیتا ہے جبکہ کلائنٹ اب بھی وقت ختم ہونے پر رک جاتے ہیں۔
کم از کم پالیسی پول سے اخراج انٹرفیس کی طرف نئے کنکشن قبول کرتی ہے اور قائم شدہ بہاؤ سے تعلق رکھنے والے جوابات قبول کرتی ہے۔ اسے اسی قواعد کے مجموعے کے مالک کے پاس رکھیں جو آپ کی تقسیم استعمال کرتی ہے، ہر بوٹ پر نقلی قاعدہ شامل کرنے کے بجائے؛ نقلی قواعد جمع ہوتے جاتے ہیں اور شمارندے بے معنی ہو جاتے ہیں۔
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.90.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ہر زنجیر کو قبول پر بدلنا امتحان پاس کرا دیتا ہے اور فائر وال کے وجود کی وجہ ختم کر دیتا ہے۔ دائرہ پول اور اخراج انٹرفیس تک رکھیں، اور غیر متعلق آگے بھیجنے کو چھیڑیں نہیں۔
جوابات کو جانے کی جگہ دیں
پول کے پتے نجی ہیں، اس لیے عوامی سرور انہیں براہ راست جواب نہیں پہنچا سکتا۔ یا تو VPN ہوسٹ باہر جاتے وقت ماخذ پتہ تبدیل کرتا ہے، یا اوپر کا آلہ پول تک واپسی کا راستہ رکھتا ہے۔
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
بالکل ایک ترجمے کی تہہ شامل کریں۔ مزید اوپر دوسرا NAT پہلے کو چھپا دیتا ہے اور بعد میں کچھ خراب ہونے پر دونوں لاگ تقریباً بیکار کر دیتا ہے۔ اگر اوپر کا روٹر پول کو پہلے ہی واپس روٹ کرتا ہے تو میزبان پر ترجمہ شامل کرنا زائد ہے، اور واپسی کا راستہ پھر آپ کی نہیں، اسی روٹر کی ترتیب پر منحصر ہوتا ہے۔
کلاؤڈ مثالوں میں ایک اور دروازہ شامل ہوتا ہے، کیونکہ کچھ پلیٹ فارم ایسے پیکٹ گرا دیتے ہیں جن کا ماخذ پتہ مثال کا اپنا نہ ہو، جب تک وہ جانچ نرم نہ کی جائے۔ وہ ترتیب مہمان سے باہر ہے اور مقامی آزمائشی مشین کے چلنے پر بھولنا آسان ہے۔
اسے سرور کے شیل سے نہیں، کلائنٹ سے ثابت کریں
عددی IPv4 درخواست سے شروع کریں، پھر نام کی تلاش، پھر ایپلیکیشن۔ ping آگے بھیجنے اور ترجمے کو ثابت کرتا ہے؛یہ نام کے حل کے بارے میں کچھ ثابت نہیں کرتا، کیونکہ DNS اختیارات اسی وقت نافذ ہوتے ہیں جب کلائنٹ کا انضمام انہیں نصب کرے۔
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
تبدیلیاں اور واپسی کا مرحلہ چلتے چلتے لکھیں، تاکہ امتحان ناکام ہونے پر اخراج کی پالیسی ایک ہی عمل میں واپس لی جا سکے۔ یہ ترکیب صرف IPv4 کو محیط ہے؛ یہ دعویٰ کرنے سے پہلے کہ تعیناتی ساری ٹریفک اٹھاتی ہے، IPv6 کی الگ فہرست بنائیں۔