একটি ক্লায়েন্ট প্রমাণীকরণ করে, পুল থেকে ঠিকানা পায় এবং 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 আলাদাভাবে তালিকাভুক্ত করুন।

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