আপনার IPv6 VPN ক্লায়েন্ট ওয়ার্কলোডে পৌঁছায়, ওয়ার্কলোড টানেলের ভিতরে উত্তর দেয়, কিন্তু উত্তর কখনও পৌঁছায় না। প্রথম প্রবৃত্তি হলো ফায়ারওয়াল বা টানেলকে দোষ দেওয়া, এবং সাধারণত কোনোটিই দোষী নয়। OpenVPN যে ঠিকানা বিতরণ করে তা হলো একটি অভ্যন্তরীণ নেটওয়ার্ক যা কেবল টানেলের ভিতরেই বিদ্যমান; Google Cloud জানে না যে fd42:90::/64 নির্দিষ্ট একটি VM-এর পিছনে থাকার কথা, যতক্ষণ না আপনি তাকে বলেন।

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

পুল একটি অভ্যন্তরীণ নেটওয়ার্ক, সাবনেট নয়

OpenVPN আপনার বেছে নেওয়া একটি রেঞ্জ থেকে IPv6 ঠিকানা বিতরণ করতে পারে, এবং সেই রেঞ্জ হলো দুই টানেল প্রান্তের সম্মত একটি কল্পনা। এটি Google Cloud সাবনেট নয়, VPC সাবনেট তালিকায় দেখা যায় না, এবং VM-এর নেটওয়ার্ক ইন্টারফেস সেই ঠিকানাগুলো পায় না। তাই ক্লায়েন্টকে উত্তর দেওয়া একটি ওয়ার্কলোড এমন ঠিকানায় প্যাকেট পাঠায় যা ফ্যাব্রিক অরুটেবল মনে করে।

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

fd42:90::/64-এর মতো ইউনিক লোকাল অ্যাড্রেসিং এই অভ্যন্তরীণ নেটওয়ার্কের জন্য যুক্তিসঙ্গত পছন্দ। প্রিফিক্সটি এও মনে করিয়ে দেয় যে ডিজাইনটি স্বভাবতই ব্যক্তিগত। ULA পুলের কোনো কিছুই এটিকে পাবলিক ইন্টারনেটে বৈধ উৎস করে না।

VPC-কে একটি গন্তব্য ও পরবর্তী হপ দিন

উত্তরের জন্য এমন একটি VPC রুট দরকার যার গন্তব্য পুল এবং যার পরবর্তী হপ VPN VM। বর্তমান স্ট্যাটিক-রুট ডকুমেন্টেশন IPv6 গন্তব্য রেঞ্জ কভার করে এবং কোন ধরনের পরবর্তী হপ যোগ্য তা তালিকাভুক্ত করে, তাই পুরোনো IPv4 উদাহরণ কপি না করে আপনার টপোলজির জন্য সমর্থিত রূপটি যাচাই করুন।

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

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

gcloud compute routes create vpn6-return \
  --network=vpn-vpc \
  --destination-range=fd42:90::/64 \
  --next-hop-instance=openvpn-vm \
  --next-hop-instance-zone=europe-west1-b

ফরওয়ার্ডিং দুইবার চালু করতে হবে

একটি রুট প্যাকেটটি ইনস্ট্যান্সে পৌঁছে দেয়। এটি ইনস্ট্যান্সকে এমন কিছু ফরওয়ার্ড করতে ইচ্ছুক করে না যা তার প্রতি ঠিকানাভুক্ত নয়, এবং সেই অনুমতি দুই স্তরে বিদ্যমান।

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

sysctl -w net.ipv6.conf.all.forwarding=1

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

OpenVPN-কে বলুন কে কী মালিক

OpenVPN একটি ক্লায়েন্টের কাছে ফরওয়ার্ড করে যখন সে জানে যে ওই ক্লায়েন্ট গন্তব্যের মালিক। পুল থেকে আসা ক্লায়েন্ট ঠিকানাগুলো পুলটি সংজ্ঞায়িত করা সার্ভার নির্দেশনা পরিচালনা করে, কিন্তু ক্লায়েন্টের পিছনে থাকা সাবনেট ভিন্ন বিন্যাস এবং সেই ক্লায়েন্টের জন্য স্পষ্ট মালিকানা এন্ট্রি দরকার।

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

এই ডিজাইনের বাইরে ইন্টারনেট ইগ্রেস রাখুন

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

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

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