ল্যাপটপে একটি IPv6 ঠিকানা আছে, টানেল IPv4-এর উপরে চালু আছে, তবু প্রতিটি IPv6 পরীক্ষা ব্যর্থ হয়। আরও খারাপ, পরীক্ষাটি সফল হয় এবং ট্রাফিক কখনও টানেলে না ঢুকেই ISP-এর পথে বেরিয়ে যায়। দুই ফলই একটি অনুপস্থিত সিদ্ধান্তে ফেরে: কেউ রাউটারকে এমন প্রিফিক্স দেয়নি যা দিয়ে সে ক্লায়েন্টদের দিকে রুট করতে পারে। ক্লায়েন্ট থেকে বাইরের দিকে পথ ধরে গেলে কোন টুকরোটি নেই তা পাওয়া যায়।

ক্লায়েন্ট যেখানে বসে সেখান থেকেই শুরু করুন

সার্ভারে হাত দেওয়ার আগে ক্লায়েন্টের দিকে তাকান। ip -6 addr পুল থেকে একটি টানেল ঠিকানা দেখানো উচিত, আর ip -6 route টানেল ডিভাইসের দিকে দেখানো পুশ করা প্রিফিক্স দেখানো উচিত। ঠিকানা থাকলে কিন্তু রুট না থাকলে, পুশটাই অনুপস্থিত বা ক্লায়েন্ট সেটি উপেক্ষা করেছে। দুটোর কোনোটিই না থাকলে সার্ভার আদৌ কিছু বরাদ্দ করেনি।

তারপর দেখুন ক্লায়েন্ট বাইরের পৃথিবী সম্পর্কে কী ভাবে। টানেলের উপর দিয়ে ডিফল্ট রুট সমস্ত IPv6 ট্রাফিক দাবি করে, আর 2000::/3-এর জন্য রুট কেবল গ্লোবাল ইউনিকাস্ট দাবি করে। দুটোই সঠিক হতে পারে, এবং তারা লিক নিয়ে ভিন্ন প্রশ্নের উত্তর দেয়।

কোনো IPv6 ডিফল্টহীন ক্লায়েন্ট প্রতিটি পাবলিক পরীক্ষায় ব্যর্থ হয় যদিও টানেল নিজে পুরোপুরি সুস্থ। এটি নীতির ফাঁক, ভাঙা টানেল নয়।

সার্ভার সত্যিই যে পুল রুট করতে পারে তা যাচাই করুন

সার্ভার কেবল এমন প্রিফিক্স থেকেই ঠিকানা দিতে পারে যা সে সত্যিই নিয়ন্ত্রণ করে। ISP যদি একটি /56 ডেলিগেট করে, তবে টানেলের জন্য একটি /64 রেখে দিন আর বাকিটা LAN-এর জন্য ছেড়ে দিন। যেখানে ISP WAN-এ কেবল একটি /64 দেয় এবং আর কিছু রুট করে না, সেখানে LAN প্রিফিক্সকে ছেড়ে দিন এবং টানেলকে একটি অনন্য লোকাল রেঞ্জ দিন, এই মেনে নিয়ে যে ক্লায়েন্টদের কোনো গ্লোবাল আউটলেট থাকবে না।

পুল আর পুশ একসাথে চলে। server-ipv6 2001:db8:80:10::/64 ঠিকানা বরাদ্দ করে, আর push "route-ipv6 2000::/3" ক্লায়েন্টদের বলে টানেলে কী পাঠাতে হবে। 2000::/3 পুশ করলে গ্লোবাল ইউনিকাস্ট ঢাকা পড়ে আর লিঙ্ক-লোকাল ও মাল্টিকাস্ট রেঞ্জ টানেলের বাইরে থাকে।

বেছে নেওয়া প্রিফিক্সটি ডিপ্লয়মেন্ট রেকর্ডে লিখে রাখুন। পরেরবার ISP-এর হ্যান্ডঅফ যে বদলাবে, তাকে জানতে হবে টানেল ইতিমধ্যে কোন /64 দখল করে আছে।

দ্বিতীয় পরিবারের জন্য ফরওয়ার্ডিং চালু করুন

IPv4 ফরওয়ার্ডিং মানেই IPv6 ফরওয়ার্ডিং নয়। net.ipv6.conf.all.forwarding=1 সেট করুন এবং IPv4 FORWARD নীতি যা ইতিমধ্যে অনুমোদন করে তা হুবহু মিলিয়ে দিন। যে রাউটারের FORWARD চেইন ডিফল্টভাবে ফেলে দেয়, সেখানে নিয়মের সেট না থাকলে ঠিক মৃত টানেলের মতো দেখায়।

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

ip6tables -A FORWARD -i br0 -o tun0 -j ACCEPT
ip6tables -A FORWARD -i tun0 -o br0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -i tun0 -o wan0 -j ACCEPT

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

আপস্ট্রিম রুট না করলে প্রতিবেশী আবিষ্কারের উত্তর দিন

আপস্ট্রিম যন্ত্রপাতি কখনও কখনও ডেলিগেট করা /64-কে নিজের লিঙ্কের অংশ ভাবে এবং VPN বক্সে কোনো উপ-প্রিফিক্স রুট করতে অস্বীকার করে। তখনকার মতো কিছু একটা প্রতিটি ক্লায়েন্ট ঠিকানার জন্য আলাদাভাবে প্রতিবেশী অনুরোধের উত্তর দিতে হবে।

OpenVPN বরাদ্দ করা ঠিকানাটি client-connect হুকের কাছে প্রকাশ করে, তাই এন্ট্রিগুলো হাতে রাখা তালিকার বদলে আসল পুল অনুসরণ করতে পারে। হুকটি ip -6 neigh add proxy $ifconfig_pool_remote_ip6 dev eth0 যোগ করে, আর মিলে যাওয়া client-disconnect হুক সেটি সরিয়ে দেয়। সরানো না হলে প্রক্সি টেবিল বাসি হয়ে যায় এবং পরে আসা কোনো ক্লায়েন্ট এমন ঠিকানার এন্ট্রি উত্তরাধিকারে পেতে পারে যা সে কখনও পায়নি। ip -6 neigh show proxy দিয়ে অবস্থা নিশ্চিত করুন।

প্রক্সিকে একটি কাজ চালানোর উপায় হিসেবে দেখুন। টানেলের /64-এর জন্য রাউটারের দিকে করা স্ট্যাটিক রুট ক্লায়েন্ট বদলের মধ্যেও টিকে থাকে এবং কোনো বিশেষাধিকারপূর্ণ শেল হুকের দরকারই পড়ে না।

বাইরের দিকে পথ অনুসরণ করুন, এক হপ করে

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

টানেলের MTU খেয়াল করুন, কারণ পথের IPv6 রাউটাররা আপনার হয়ে ফ্র্যাগমেন্ট করবে না। অতিরিক্ত বড় MTU পরিষ্কার ব্যর্থতার বদলে packet-too-big ত্রুটি ও আটকে থাকা TLS হিসেবে দেখা দেয়। এটি স্পষ্টভাবে সেট করুন এবং সীমার কাছাকাছি পেলোড দিয়ে পরীক্ষা করুন।

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