টানেল পড়ে যায়, কিল সুইচ জানায় যে এটি সক্রিয় হয়েছে, আর একটি ডাউনলোড চলতে থাকে। IPv4 নিয়মে কিছুই ভাঙেনি। অ্যাপটি কেবল এমন একটি পথে সরে গেছে, যার জন্য ওই নিয়মগুলো কখনও লেখা হয়নি।

ডুয়াল-স্ট্যাক ডিভাইসে বেরোনোর দুটি স্বাধীন পথ থাকে। একটিতে ব্লক মানে অর্ধেক ব্লক।

দুটি নিয়মের সেট, দুটি ডিফল্ট

Linux-এ iptables ও ip6tables আলাদা নীতি নিয়ে আলাদা টেবিল। IPv4 টেবিলের INPUT ও OUTPUT চেইন DROP-এ সেট করলে IPv6 টেবিলে কিছুই বদলায় না, যেখানে ডিফল্ট সাধারণত ACCEPT। একই বিভাজন nftables-এ আছে, যেখানে একটি পরিবার দেখে বোঝা যায় যে কেবল একটিতেই আপনার নিয়মগুলো আছে। এই অসামঞ্জস্য স্বাভাবিক, এবং পুরো সমস্যাটাই তা।

এই কারণেই একটি কিল সুইচ পুঙ্খানুপুঙ্খ দেখাতে পারে অথচ আংশিকভাবে কাজ করতে পারে। যে স্ক্রিপ্টটি IPv4 নিয়ম লিখেছিল সেটি চলেছে, কাউন্টার বাড়ছে, লগ লাইন দেখা যাচ্ছে, আর একটি IPv6 প্যাকেট ভৌত ইন্টারফেস দিয়ে সম্পূর্ণ অক্ষত অবস্থায় বেরিয়ে যাচ্ছে।

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

ইন্টারফেস কনফিগারেশন আপনাকে কী বলে

wg-quick-এর ম্যান পেজ উদাহরণ কনফিগারেশনে IPv6 নিয়ম অন্তর্ভুক্ত করে, আর কারণটা ঠিক এই ফাঁক। উদাহরণটি সাজসজ্জা নয়। এটি আছে কারণ কেবল IPv4 নিয়ম দ্বিতীয় পরিবারটিকে খোলা রেখে দিত।

উদাহরণের অর্ধেক কপি করলে নীতির অর্ধেক তৈরি হয়। এটাই এই লিকের সবচেয়ে সাধারণ উৎস। একটি ব্লগ পোস্ট দৈর্ঘ্যের জন্য উদাহরণটি ছেঁটে দিয়েছিল। তারপর ছাঁটা সংস্করণটিই সবার পুনরায় ব্যবহার করা টেমপ্লেট হয়ে গেল।

# what is actually installed, per family?
sudo iptables -S OUTPUT | head -20
sudo ip6tables -S OUTPUT | head -20

# nftables: inspect each family separately
sudo nft list ruleset inet | head -40

# does this host even have a usable IPv6 path?
ip -6 route show default

যদি দ্বিতীয় কমান্ড অনুমোদনকারী নীতি ছাপায় আর প্রথমটি DROP ছাপায়, তবে ক্লায়েন্ট স্পর্শ না করেই আপনি উত্তর পেয়ে গেছেন। এই অসামঞ্জস্যই বাগ।

কেন একটি লুকআপই পুরো গল্প নয়

একটি নাম একসাথে A রেকর্ড ও AAAA রেকর্ড ফেরত দিতে পারে, আর সব অ্যাপ একইভাবে বেছে নেয় না। নেটওয়ার্ক IPv6 দিলে ব্রাউজার সেটি পছন্দ করে ব্যর্থ হলে ফিরে আসতে পারে, অন্যদিকে কোনো ব্যাকগ্রাউন্ড সিঙ্ক বা আপডেটার নিজের রিজলভার ও নিজের পছন্দ ব্যবহার করে। তাই IPv4-এর উপর একটি সফল পরীক্ষা একটি পথ প্রমাণ করে, নীতিটি নয়।

নেটওয়ার্ক পরিবর্তনও উত্তর বদলে দেয়। অন্য একটি Wi-Fi নেটওয়ার্কে যোগ দেওয়া, ঘুম থেকে ফেরা বা সেলুলারে যাওয়া ডিভাইসকে নতুন IPv6 প্রিফিক্স দিতে পারে, আর অফিস LAN-এ যথেষ্ট মনে হওয়া নীতিটি সেটি নাও কভার করতে পারে।

টানেল বন্ধ থাকা অবস্থাটি পরীক্ষা করুন

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

# with the tunnel stopped, does anything still leave?
ip -6 route get 2606:4700:4700::1111
curl -6 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv6.example.net/
curl -4 -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://ipv4.example.net/

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

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

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