FortiClient সম্পূর্ণ টানেল: শুধু অফিস সাবনেট রাউট করুন
VPN একটি ডিফল্ট রুট ইনস্টল করে আর লোকাল নেটওয়ার্ক হারিয়ে যায়। টেবিলটি পড়ুন, LAN ডিফল্ট ফিরিয়ে আনুন, অফিস প্রিফিক্স যোগ করুন, তারপর DNS ঠিক করুন।
টানেল উঠে আসে, আইকন সবুজ হয়, আর লোকাল নেটওয়ার্ক হারিয়ে যায়: প্রিন্টার, NAS আর অফিস রাউটার সবাই সাড়া দেওয়া বন্ধ করে দেয়। FortiClient ঠিক তাই করছে যা প্রোফাইল চেয়েছিল। গেটওয়ে একটি ডিফল্ট রুট পাঠিয়েছে, ক্লায়েন্ট সেটি ইনস্টল করেছে, আর এখন প্রতিটি প্যাকেটের টানেলের ভেতরে যাওয়ার পথ আছে। মেরামত হলো রাউট-টেবিলের একটি সম্পাদনা আর তার পেছনে DNS-এর একটি সম্পাদনা, এবং এই সম্পাদনাগুলোর ক্রমই ঠিক করে মেশিনটি শেষে ভালো হবে না খারাপ।
ক্লায়েন্ট কী ইনস্টল করেছে, আর LAN কেন হারিয়ে গেল
ক্লায়েন্ট ইন্টারফেসের বদলে টেবিল পড়ে শুরু করুন। macOS-এ netstat -rn পুরো টেবিল ছাপে আর route -n get default বলে দেয় কোন ইন্টারফেস ও মেট্রিক এখন জিতছে; Linux-এ জোড়াটি হলো ip route show ও ip route get 8.8.8.8। দুটোই একটি প্রশ্নের উত্তর দেয়: এমন একটি প্যাকেট কোন এন্ট্রি বহন করবে যা আরও নির্দিষ্ট কিছুর সাথে মেলে না।
টানেল ডিভাইসের নাম নির্দিষ্ট নয়। macOS-এ IKEv2 প্রোফাইল সাধারণত একটি সংখ্যাসহ utun দেখায়, SSL VPN ক্লায়েন্ট ppp0 দেখায়, আর OpenVPN tun0 দেখায়। ভিন্ন মেট্রিকসহ দুটি ডিফল্ট একই সময়ে থাকতেও পারে, আর ক্লায়েন্ট এন্ট্রি হয়তো পুনঃসংযোগের পরেই নিয়ন্ত্রণ নেবে, দেখা মাত্রই নয়। তাই পাঁচ মিনিটের ব্যবধানে নেওয়া দুটি টেবিল ডাম্প ভিন্ন গল্প বলতে পারে।
টানেল ডিফল্ট কেন আগে যেতে হবে
কার্নেল সবচেয়ে দীর্ঘ মিলে যাওয়া প্রিফিক্স বেছে নেয়, আর একই রকম নির্দিষ্ট হলে সবচেয়ে কম মেট্রিকের রুটটি বেছে নেয়। তাই যে ক্লায়েন্ট 0.0.0.0/0 আরও ভালো মেট্রিকসহ ইনস্টল করে, সে মূল ডিফল্ট না মুছেই প্রতিটি গন্তব্য জিতে নেয়; এজন্যই ফিজিক্যাল রুটটি এখনও টেবিলে আছে এবং এখনও বিঘ্নটির ব্যাখ্যা দেয়। টানেল ডিফল্ট আগে সরালেই আগের আচরণ ফিরে আসে। কেবল তখনই টানেলের ভেতর দিয়ে যাওয়া প্রিফিক্স রুট তার লেখকের উদ্দেশ্য অনুযায়ী কাজ করে।
ওই ধাপের আগে প্রিফিক্স যোগ করাই সেই ভুল যা অর্ধেক-কাজ-করা মেশিন তৈরি করে। নতুন প্রিফিক্সের ট্রাফিক টানেল অনুসরণ করে, আর তালিকায় না থাকা সবকিছুও টানেল ডিফল্ট অনুসরণ করে, তাই কেউ এমন কোনো সার্ভিস না খোলা পর্যন্ত কিছুই ভাঙা দেখায় না যা কেউ যোগ করেনি। মুছুন, ফিরিয়ে আনুন, তারপর যোগ করুন, আর মধ্যবর্তী অবস্থা অনুমানযোগ্য থাকে।
macOS ও Linux-এ ক্রমটি
macOS-এ ক্রমটি টানেল ডিফল্ট মোছে, ফিজিক্যাল ডিফল্ট ফিরিয়ে আনে, আর একটি অফিস প্রিফিক্স টানেলের ভেতরে ফেরত পাঠায়। এখানে উদাহরণের ইন্টারফেস নামগুলোর জায়গায় আপনার নিজের টেবিলের নাম বসান।
sudo route delete -net default -interface utun4
sudo route add -net 0.0.0.0 -interface en0
sudo route add -net 10.20.0.0 -netmask 255.255.0.0 -interface utun4Linux-এ একই ক্রম ভিন্ন একটি টুল ব্যবহার করে: ডিফল্টের জন্য LAN গেটওয়ে আর অফিস প্রিফিক্সের জন্য টানেল ডিভাইস। পুরোনো route কমান্ড এখনও পুরোনো সিনট্যাক্স নেয়, তবে ip route হলো বর্তমান ডকুমেন্টেশনের সঙ্গে মেলে এমন রূপ।
sudo ip route del default dev tun0
sudo ip route add default via 192.168.50.1
sudo ip route add 10.20.0.0/16 dev tun0যখন রুটের ডিভাইসের বদলে পরবর্তী হপ দরকার, ক্লায়েন্ট আউটপুট থেকে peer নিন। অনুমান দুটি ভুলের একটি দেয়, আর তাদের অর্থ আলাদা: ভুল গেটওয়ে সঙ্গে সঙ্গে network unreachable দেয়, আর ভুল টানেল লক্ষ্য দেয় টাইমআউট। আবার কমান্ড বদলানোর আগে পড়ে নিন আপনি কোনটি পেয়েছেন।
প্রিফিক্স, রিজলভার আর অন্ধকারে থাকা DMZ
একটি প্রিফিক্স খুব কমই পুরো কাজ ঢাকে। অ্যাপ্লিকেশন সার্ভার, ম্যানেজমেন্ট নেটওয়ার্ক, DMZ আর DNS সার্ভারগুলো নিজেরাই আলাদা আলাদা রেঞ্জে থাকতে পারে, তাই শুরু করার আগে যে রেঞ্জগুলোর নাম বলতে পারেন সব তালিকাভুক্ত করুন আর প্রতিটি ping-এর পাশে একটি লুকআপ পরীক্ষা করুন। পরীক্ষার মাঝপথে আবিষ্কৃত গন্তব্যই সেইটি যা পরিবর্তন-রেকর্ডে ভুলে যাওয়া হয়। যে রুট ঠিকানা অনুযায়ী উত্তর দেয় কিন্তু নাম অনুযায়ী ব্যর্থ হয়, সেটি সাধারণত রাউটিংয়ের পোশাক পরা রিজলভারের সমস্যা।
রিজলভার আলাদা একটি সিদ্ধান্ত। প্রোফাইল যখন অভ্যন্তরীণ DNS সার্ভার পাঠিয়েছে, তখন ডিফল্ট সরিয়ে নিলে ওই ঠিকানাগুলো পাবলিক নামের জন্য পৌঁছানোর বাইরে থাকতে পারে বা কেবল টানেল দিয়েই পৌঁছানো যায়, আর দুই অবস্থাই বিভ্রান্তিকর আংশিক ফল দেয়। রিজলভারের ঠিকানাগুলো টানেল দিয়ে রাউট করুন, নয়তো প্রতি-ডোমেইন রিজলিউশন কনফিগার করুন যাতে পাবলিক লুকআপ লোকাল রিজলভার ব্যবহার করে।
Linux SSL ক্লায়েন্টের একটি ফিল্ড-নির্দিষ্ট ব্যর্থতা জানার মতো: টানেল সংযোগ হয়, অফিস LAN সাড়া দেয়, আর একটি DMZ রেঞ্জ অন্ধকারে থাকে। অনুপস্থিত টুকরোটি হলো টানেল গেটওয়ে দিয়ে ওই রেঞ্জের একটি রুট, আর গেটওয়ে মেশিনভেদে আলাদা, তাই হার্ডকোড করা ঠিকানা হলো সেই উপায় যেভাবে পরের ল্যাপটপ ভাঙে। এটি ক্লায়েন্টের অবস্থা থেকে বের করুন আর কমান্ডটি স্ব-দলিলযোগ্য রাখুন:
PEER=$(ip -4 addr show dev ppp0 | awk '/peer/ {print $4}' | cut -d/ -f1)
sudo ip route add 192.168.30.0/24 via "$PEER"চালানোর আগে দুটি মান পড়ুন। peer হলো পয়েন্ট-টু-পয়েন্ট টানেলের দূর প্রান্ত, আর এটাই সেই ঠিকানা যা DMZ রুটের দরকার; রাউটেড টানেলে সমতুল্য হলো ক্লায়েন্ট যে ইন্টারফেস বা গেটওয়ে জানায়। কোনোটিই না এলে ক্লায়েন্ট আপনি যে মোড ধরে নিয়েছেন সেটিতে নেই।
পরের সংযোগের পর, আর কখন এটি লোকালে করা বন্ধ করবেন
FortiClient ঘুম বা নেটওয়ার্ক পরিবর্তনের পর আবার সংযোগ করে আর প্রোফাইল যা নির্দিষ্ট করে তা আবার ইনস্টল করে। তাই হাতে করা রুট কেবল পরের সংযোগ পর্যন্ত টেকে, আর ঠিক ওই বিরতিতেই একটি সফল পরীক্ষা সমাধানের মতো দেখাতে পারে। রাতভর হারিয়ে যাওয়া রুট প্রত্যাশিত আচরণ, নতুন কোনো ত্রুটি নয়।
দুটি টেকসই উত্তর আছে। প্রতিটি সংযোগের পর সংশোধন আবার চালানো স্ক্রিপ্ট হলো একটি সাময়িক ব্যবস্থা যা তার লেখকের চেয়ে বেশি দিন টিকতে পারে, আর গেটওয়ে প্রশাসকের কাছ থেকে স্প্লিট-টানেল প্রোফাইলই প্রকৃত সমাধান, কারণ তখন ক্লায়েন্ট কেবল সেই রেঞ্জগুলো ইনস্টল করে যেগুলো কাজের দরকার। দ্বিতীয়টি চান আর অপেক্ষার সময়েই কেবল প্রথমটি ব্যবহার করুন। লোকালে সম্পূর্ণ টানেল ভাগ করার আগে আপনি যে নীতিতে সম্মত হয়েছেন তা-ও যাচাই করুন, কারণ দূরবর্তী নেটওয়ার্ক হয়তো আপনার সব ট্রাফিক দেখার উপর নির্ভর করতে পারে।
চেকলিস্ট ছোট: টেবিল পড়ুন, টানেল ডিফল্ট মোছেন, LAN ডিফল্ট ফিরিয়ে আনুন, প্রতিটি প্রিফিক্স যোগ করুন, রিজলিউশন আলাদাভাবে ঠিক করুন, আর পুনঃসংযোগে রুটগুলো ফিরে আসবে বলে আশা করুন।