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

প্রতিটি ফ্ল্যাগ ডিফল্ট রুটে কী করে

কোনো ফ্ল্যাগ না থাকলে অপশনটি সাধারণ ডিফল্ট রুট সরিয়ে টানেলকে তার জায়গায় বসায়, ফলে সংযোগ চালু থাকা অবস্থায় পুরনো গেটওয়ে টেবিল থেকে হারিয়ে যায়। def1 যোগ করুন এবং সেই ডিফল্ট তালিকায় থাকে, বরং দুটি সংকীর্ণ রুট কাজটি করে। bypass-dhcp যোগ করুন এবং DHCP রুটও টিকে থাকে, যা এমন নেটওয়ার্কে গুরুত্বপূর্ণ যেখানে ক্লায়েন্টকে এখনো স্থানীয় DHCP সার্ভারে পৌঁছাতে হয়। OpenVPN 2.6 ম্যানুয়াল পৃষ্ঠার ফ্ল্যাগ তালিকাটি একবার পড়ার মতোই ছোট, আর প্রতিটি এন্ট্রি বদলে দেয় কোন রুটগুলো টেবিলে থাকবে।

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

def1 আপনার ডিফল্ট না ছুঁয়েই নির্দিষ্টতার জোরে জেতে

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

প্রোফাইল নয়, টেবিলটি পড়ুন, কারণ কেবল টেবিলই দেখায় আপনি ওই কোন ক্ষেত্রে আছেন। সেগুলো আলাদা করতে দুটি লাইনই যথেষ্ট:

ip route show default
ip route show | grep -E '^(0\.0\.0\.0/1|128\.0\.0\.0/1)'

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

টানেলের প্রান্তবিন্দু পৌঁছানোর যোগ্য রাখুন

ক্লায়েন্টের টানেলের দূর প্রান্ত পর্যন্ত এমন একটি রুট দরকার যা নিজে টানেল দিয়ে যায় না। OpenVPN অন্য কিছু বদলানোর আগেই সেই হোস্ট রুট ইনস্টল করে, আর হাতে রুট সম্পাদনা বা দ্বিতীয় VPN ক্লায়েন্ট সেটি সরিয়ে নিতে পারে। পরে লক্ষণ হলো এমন সংযোগ যা সংযুক্ত বলে জানায় এবং তারপর কিছুই পাস করে না।

টানেল চালু থাকা অবস্থায় কার্নেলকে জিজ্ঞাসা করুন এটি প্রান্তবিন্দুর ঠিকানার জন্য কোন ইন্টারফেস ব্যবহার করবে। উত্তরটিতে ভৌত ইন্টারফেস ও তার গেটওয়ে থাকতে হবে, কখনো tun0 নয়:

ip route get 198.51.100.20

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

IPv6 ট্রাফিক নিজের টেবিলই ব্যবহার করে চলে

IPv4 পুনর্নির্দেশ করলে IPv6 অপরিবর্তিত থাকে, আর দুই পরিবার ভিন্ন ফ্ল্যাগে বদলায়। কার্যকর v6 ডিফল্ট থাকা ডুয়াল-স্ট্যাক হোস্টে v4 ট্রাফিক সম্পূর্ণ টানেলের ভিতরে থাকতে পারে, অথচ v6-সক্ষম প্রতিটি গন্তব্য ভৌত লিঙ্ক দিয়ে বেরোয়। যে হোস্ট এক টেবিলে ঠিক দেখায় সে অন্য টেবিলে ফাঁস করে।

সংযোগের পর v6 টেবিল দেখুন, টানেল ঢেকে দিয়েছে বলে ধরে নয়। নির্দেশিকাটি ঠিক এই কারণেই ঠিকানা-পরিবার ফ্ল্যাগ বহন করে, আর যে প্রোফাইল সেগুলো বাদ দেয় সে প্ল্যাটফর্ম ডিফল্টে যা করে তা উত্তরাধিকার পায়:

ip -6 route show default
ip -6 route get 2001:db8::10

কোন ইন্টারফেস কোন অ্যাপ ব্যবহার করছে তা প্রমাণ করুন

সংযুক্ত অবস্থা কোনো ব্লক নয়, আর রুট পরিবর্তন কোনো কিল সুইচ নয়। যদি টানেল ব্যর্থ হলে সরাসরি ট্রাফিক থামতে হয়, সেই নীতি ফায়ারওয়ালে থাকে এবং তার নিজের পরীক্ষা দরকার।

প্রোফাইল যে পথ বর্ণনা করে তা নয়, অ্যাপ্লিকেশন সত্যিই যে পথ নেয় তা পরীক্ষা করুন। আগে রুট চান, তারপর প্রতিটি ইন্টারফেসে পালাক্রমে একটি অনুরোধ বাঁধুন এবং দূর পক্ষ কী জানায় তা তুলনা করুন:

ip route get 203.0.113.10
curl -s --interface tun0 https://ifconfig.me
curl -s --interface eth0 https://ifconfig.me

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

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