আপনি টানেল সংযোগ করেন, ip route চালান, আর মূল ডিফল্ট গেটওয়ে তখনও সেখানেই আছে। পরের ভাবনা হলো ক্লায়েন্ট রুটটি দখল করতে পারেনি, তাই আপনি ডিফল্টটি হাতে মুছে ফেলেন এবং সংযোগ পুরোপুরি হারান। ওই এন্ট্রিটির থাকার কথা। redirect-gateway def1-এর সাথে OpenVPN সাধারণ ডিফল্টকে প্রতিস্থাপন না করে তার চেয়ে বেশি নির্দিষ্ট দুটি রুট ইনস্টল করে। পুরোনো গেটওয়ে থেকে যায় এবং আপনি যে ট্রাফিক পরীক্ষা করছিলেন তা বহন করা বন্ধ করে।

def1 আসলে কী করে

ফ্ল্যাগটি 0.0.0.0/1 এবং 128.0.0.0/1 যোগ করে, দুটোই টানেলের দিকে। 0.0.0.0/1 প্রথম অক্টেট 0 থেকে 127 পর্যন্ত প্রতিটি ঠিকানা নেয়, আর 128.0.0.0/1 নেয় 128 থেকে 255 পর্যন্ত, তাই প্রতিটি IPv4 গন্তব্যের পুরোনো ডিফল্টের চেয়ে বেশি নির্দিষ্ট মিল থাকে। কোন রুট জিতবে তা মেট্রিক নয়, প্রিফিক্সের দৈর্ঘ্যই ঠিক করে।

মূল ডিফল্টটি যথাস্থানে রাখা ইচ্ছাকৃত। ক্লায়েন্টকে মনে রাখতে হয় না সে কী প্রতিস্থাপন করেছে, আর সে VPN সার্ভারের সঙ্গে নিজের সংযোগ বহনকারী রুটটি পুনর্লিখন করে না। সংযোগ বিচ্ছিন্ন হলে এটি দুটি অর্ধ-রুট সরিয়ে দেয় এবং টেবিলটি আগের অবস্থায় ফিরে যায়।

কেন /1, /0 নয়

রাউটিং সবচেয়ে দীর্ঘ মিলে যাওয়া প্রিফিক্স বেছে নেয়, সর্বনিম্ন মেট্রিক নয়, তাই ডিফল্টের মেট্রিক যা-ই বলুক, একটি /1 একটি /0-কে হারায়। দুটি অর্ধাংশই আছে কারণ একটি /1 কেবল অর্ধেক জায়গা ঢাকে; কেবল 0.0.0.0/1 থাকলে 128.0.0.0 থেকে ওপরের সবকিছু পুরোনো ডিফল্ট অনুসরণ করে, ফলে বিভ্রান্তিকর উপসর্গ দেখা যায়: কিছু সাইট কাজ করে, কিছু করে না।

পুরোনো ডিফল্টের মেট্রিক বাড়ানো বা কমানো কিছুই বদলায় না, আর অন্য ইন্টারফেসে কম মেট্রিকের ডিফল্টও ট্রাফিক চুরি করে না। প্রথমে প্রিফিক্সের দৈর্ঘ্যই সিদ্ধান্ত নেয়, আর কেবল সমান প্রিফিক্সেই মেট্রিকে ফেরা হয়।

একটি বাস্তব রাউটিং টেবিল পড়ুন

সংযুক্ত একটি হোস্ট তিনটি এন্ট্রিই একসঙ্গে দেখাতে পারে, যেখানে টানেল অর্ধাংশ দুটি বহন করে আর মূল গেটওয়ে তখনও তালিকায় থাকে। ঠিকানাগুলো কপি করার কনফিগ নয়, উদাহরণ, কারণ ইন্টারফেসের নাম, টানেল টপোলজি ও অতিরিক্ত রুট প্ল্যাটফর্ম ও ক্লায়েন্টভেদে বদলায়।

default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0

গুরুত্বপূর্ণ হলো সম্পর্কটি: একটি সাধারণ ডিফল্টের উপরে দুটি নির্দিষ্ট অর্ধাংশ। পুরোনো গেটওয়ের লাইনটি থাকে কারণ কিছুই তা প্রতিস্থাপন করেনি।

প্যাকেট সত্যিই কোন রুট নেয় তা দেখুন

আরও নির্দিষ্ট রুট তখনও জিততে পারে: ব্যক্তিগত রেঞ্জ, স্থানীয় সাবনেট বা VPN সার্ভারের নিজের ঠিকানার রুট /1-এর চেয়ে দীর্ঘ। টানেলের নিজের সার্ভারে যাওয়ার বাইরের পথ দরকার, আর ওই সংযোগ আবার টানেলে পাঠালে তা সঙ্গে সঙ্গে ভেঙে যাবে। Linux-এ টেবিল চোখে না পড়ে কার্নেলকে জিজ্ঞাসা করুন: আপনার আগ্রহের গন্তব্য নিয়ে ip route get নির্বাচিত রুট, ইন্টারফেস ও সোর্স ছাপে। পলিসি রাউটিং কনফিগার করা থাকলে নিয়মগুলোও দেখুন, কারণ একটি নিয়ম মূল টেবিল দেখার আগেই অন্য টেবিল বেছে নিতে পারে।

IPv4-এর কেবল একটি অংশ খারাপ আচরণ করলে নিশ্চিত করুন দুটি অর্ধাংশই ইনস্টল হয়েছে, তারপর ব্যর্থ গন্তব্যের সঙ্গে মেলে এমন ব্যতিক্রম খুঁজুন। পুরোনো ডিফল্ট মুছে ফেলা কোনো সমাধান নয়, আর এটি ক্লায়েন্টের টানেল পরিষ্কারভাবে ভাঙতে প্রয়োজনীয় রুটটিও সরিয়ে দেয়।

def1 কী ঢাকে না

দুটি IPv4 এন্ট্রি IPv6 সম্পর্কে কিছুই বলে না: IPv6 সংযোগযুক্ত হোস্ট নিজের ডিফল্টই ব্যবহার করে চলে, যতক্ষণ না কিছু ওই পরিবারটিকে আলাদাভাবে ঘুরিয়ে দেয়, তাই ডুয়াল-স্ট্যাক নেটওয়ার্কে কিছু ট্রাফিক টানেল এড়িয়ে যাওয়ার মতো দেখায়। অন্য ক্লায়েন্ট ও নেটওয়ার্ক ম্যানেজার পূর্ণ-টানেল রাউটিং ভিন্নভাবে বাস্তবায়ন করে, আর তাদের টেবিল মিলবে না। এখানে বর্ণিত def1 আচরণ OpenVPN-এর নথিভুক্ত ফ্ল্যাগের, মেশিনের প্রতিটি VPN-এর নয়।

কিল সুইচ অন্য প্রশ্নের উত্তর দেয়: টানেল পড়ে গেলে মেশিন কী করে। রুটের অগ্রাধিকার ঠিক করে টানেল চালু থাকা অবস্থায় ট্রাফিক কোথায় যায়; পরে ফায়ারওয়াল কী করবে তা ঠিক করে না। কাজের ক্রম: টেবিল পড়ুন, দুটি অর্ধাংশ আছে নিশ্চিত করুন, ব্যর্থ গন্তব্যের জন্য ip route get চালান, পলিসি নিয়ম দেখুন, তারপর IPv6 আলাদাভাবে দেখুন। পুরোনো ডিফল্ট যেখানে আছে সেখানেই রাখুন।

সম্পর্কিত নিবন্ধ