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

ক্লায়েন্ট কী পেতে পারে আর কী পারে না, তা দিয়ে শুরু করুন

সংযুক্ত ক্লায়েন্ট থেকে পাবলিক ইন্টারনেটে থাকা একটি পাতা লোড করুন এবং লক্ষ্য করুন এটি সঙ্গে সঙ্গে ব্যর্থ হয়, নাকি মাঝপথে আটকে যায়। তারপর VPN সার্ভারের নিজের ব্যক্তিগত ঠিকানায় একটি রিসোর্স খুলুন এবং দুই ফলাফল মিলিয়ে দেখুন।

যে টানেল ঠিকানা ping-এর উত্তর দেয় অথচ পাবলিক সাইট সময় পেরিয়ে যায়, সেটি ফরওয়ার্ডিং বা অনুবাদের সমস্যার লক্ষণ, ভাঙা হ্যান্ডশেকের নয়। ক্লায়েন্টের নিজের স্টেটাস প্যানেল এই দুটির পার্থক্য করতে পারে না, কারণ এটি কেবল জানে যে কন্ট্রোল চ্যানেল চালু আছে। সার্ভারে টানেল ইন্টারফেসটি এটি দিয়ে যাচাই করুন: ip -br addr show tun0 এবং নিশ্চিত করুন যে ক্লায়েন্টকে দেওয়া ঠিকানাটি আপনার কনফিগার করা পুলের ভিতরে পড়ে। পুল আর ক্লায়েন্ট ঠিকানা না মিললে আগে সেটিই ঠিক করুন, কারণ নিচের প্রতিটি নিয়ম পুলের সঙ্গে মেলে।

এরপর সার্ভারকে জিজ্ঞাসা করুন কোন ইন্টারফেস দিয়ে সে একটি পাবলিক ঠিকানায় পৌঁছাবে। ip route get 203.0.113.9 তার প্রথম লাইনে নির্বাচিত ডিভাইস ও সোর্স ছাপে। ডিভাইসের নামটি লিখে রাখুন, কারণ NAT নিয়মে ঠিক এই মানটিই থাকতে হবে।

যে নিয়ম ঠিক করে প্যাকেট বেরোবে কি না, সেটি পড়ুন

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

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

ip -br addr show tun0
ip route get 203.0.113.9
sudo iptables -t nat -S POSTROUTING

একসময় Ethernet ব্যবহার করত এবং এখন Wi-Fi ব্যবহার করে এমন Raspberry Pi-তে পুরোনো নামটিই প্রায় সবসময় পুরো গল্প। ইনস্টলার সেটআপের সময় যে ডিভাইস ছিল তা লিখে রেখেছিল, আর সংরক্ষিত নিয়মসমষ্টি প্রতিটি বুটে সেটি আবার চালায়। অন্য কিছু বদলানোর আগে রুট অনুসন্ধান থেকে পাওয়া ডিভাইসটিকে নিয়মের ডিভাইসটির সঙ্গে মেলান। দুটি মিললে ইন্টারফেস আপনার সমস্যা নয় এবং আপনার শেষ অংশের কাউন্টারগুলিতে যাওয়া উচিত। দুটি না মিললে সমাধান হল স্থায়িত্ব ফাইলে এক শব্দের সম্পাদনা।

সংরক্ষিত নিয়মসমষ্টি ঠিক করুন, কেবল চলমানটিই নয়

কেবল লাইভ টেবিল সম্পাদনা পরের রিবুট পর্যন্ত টেকে, যা আপনাকে সমস্যা সমাধান হয়েছে বলে বিশ্বাস করানোর জন্য ঠিক যথেষ্ট। বুটে ফিরে আসা নিয়মগুলি একটি ফাইলে থাকে যা একটি ফায়ারওয়াল স্থায়িত্ব প্যাকেজ পুনরায় লোড করে। Debian-ভিত্তিক Pi ইমেজে সেই ফাইলটি সাধারণত /etc/iptables/rules.v4।

ছোঁয়ার আগে একটি কপি নিন, তারপর MASQUERADE লাইনের আউট-ইন্টারফেসটি আপনি লিখে রাখা ডিভাইস দিয়ে বদলান, উদাহরণস্বরূপ -o wlan0 এর বদলে -o eth0। সোর্স রেঞ্জটি যেমন আছে তেমন রাখুন, যদি না আপনার ক্লায়েন্ট পুল বদলে থাকে। পুনরায় লোড করুন এবং নিশ্চিত করুন যে নিয়মটি এখন সঠিক ডিভাইসের নাম বলে:

sudo cp /etc/iptables/rules.v4 /root/rules.v4.bak
sudo iptables-restore < /etc/iptables/rules.v4
sudo iptables -t nat -L POSTROUTING -v -n

পাশাপাশি দুটি সেটিং সহজেই ভুলে যাওয়া যায়। sysctl net.ipv4.ip_forward কে 1 রিপোর্ট করতে হবে, এবং আপস্ট্রিম রাউটার নিজে থেকে ব্যক্তিগত সোর্স ঠিকানা ফিল্টার করছে না এমন হতে হবে।

নিয়মটি কাজ করে তা প্রমাণ করুন, তারপর এখনও কী ধীর তা আলাদা করুন

কাউন্টারই একমাত্র সৎ প্রমাণ যে একটি নিয়ম মিলেছে। বিস্তারিত তালিকা চালান, ক্লায়েন্টে একটি ডাউনলোড শুরু করুন, আবার চালান। আপনার নিয়মের পাশের প্যাকেট ও বাইট কলাম বাড়া উচিত, আর শূন্যে থাকা নিয়ম এখনও মেলেনি। কাউন্টার নড়লেও পাতা ব্যর্থ হতে থাকলে, সোর্স রেঞ্জটিকে প্রকৃত পুলের সঙ্গে এটি দিয়ে মিলিয়ে দেখুন grep -n "^server " /etc/openvpn/server.conf। কাউন্টার নড়লে ও পাতা লোড হলে কিন্তু থ্রুপুট খারাপ হলে, অনুবাদ শেষ এবং বাকি সমস্যা অন্যত্র।

একই ক্লায়েন্ট থেকে দুটি স্থানান্তর তুলনা করুন, একটি স্থানীয় নেটওয়ার্কের হোস্টে আর একটি টানেল দিয়ে সেই একই হোস্টে। দুই ক্ষেত্রেই ধীর হলে তা Pi-এর আপলিংক বা Wi-Fi লিঙ্কের দিকে ইঙ্গিত করে, VPN-এর দিকে নয়। কেবল টানেল দিয়ে ধীর হলে তা MTU ও পুনঃপ্রেরণের দিকে ইঙ্গিত করে, যা আপনি এটি দিয়ে দেখতে পারেন ip -s link show tun0 কোনো ক্রিপ্টো সেটিং বদলানোর আগে।

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

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