Proxmox-এ LXC বা VM-এ WireGuard: এটি কোথায় চলা উচিত?
WireGuard Proxmox হোস্টে, কনটেইনারে বা VM-এ চলতে পারে। সিদ্ধান্তকারী বিষয়গুলি হল কার্নেলের মালিকানা, ইন্টারফেস নিয়ন্ত্রণ এবং পুনরুদ্ধারের পথ।
WireGuard-এর ইন্টারফেসের মালিক হতে ঠিক একটি কার্নেল লাগে, আর এই সত্যটিই পারফরম্যান্স আলোচনায় আসার আগেই Proxmox-এ বসানোর বেশিরভাগ বিতর্ক মেটায়। LXC কনটেইনার হল হোস্ট কার্নেলের একটি নেমস্পেস দৃশ্য, আর VM নিজের কার্নেল বুট করে। তাই কাজের প্রশ্নটি কোন বিকল্পটি হালকা নয়, বরং আপনি কোন কার্নেল পরিবর্তন করতে রাজি এবং কোন পুনরুদ্ধার পথ নিয়ে চলতে পারবেন। এর উত্তর দিলে হোস্ট, কনটেইনার নাকি VM — এই বাছাই সাধারণত নিজেই হয়ে যায়।
LXC গেস্ট হোস্ট কার্নেলের ভেতরে কাজ করে
কনটেইনারের ভেতরে wireguard-tools ইনস্টল করলে আপনি নিয়ন্ত্রণ প্রোগ্রাম পাবেন, কোনো ব্যক্তিগত কার্নেল নয়। আপনি যে wg0 ইন্টারফেস তৈরি করেন তা হোস্টের নেটওয়ার্ক স্ট্যাকে নিবন্ধিত হয় এবং হোস্টের মডিউল তালিকায় দেখা যায়। তাই একটি কনটেইনার প্যাকেজের সব পরীক্ষা পাশ করেও প্রথম wg কমান্ডেই ব্যর্থ হতে পারে, যদি হোস্ট কার্নেলে ওই মডিউল না থাকে। এবং Proxmox কনটেইনার রেফারেন্স এই ভাগ করা কার্নেলের মডেলটি নথিভুক্ত করে, সাথে আপনি যে নেমস্পেস ও বিশেষাধিকারের সীমার ভেতরে কাজ করছেন সেগুলিও।
কর্তৃত্ব হল দ্বিতীয় সীমাবদ্ধতা। একটি ইন্টারফেস তুলে তাতে ঠিকানা যুক্ত করতে দরকার যে নেমস্পেস এটির মালিক, তার ভেতরে নেটওয়ার্ক প্রশাসনের অধিকার, আর একটি অ-বিশেষাধিকারপ্রাপ্ত কনটেইনার ওই অধিকারগুলি সরাসরি ধরে না রেখে নিজের ব্যবহারকারী নেমস্পেসের মাধ্যমে ম্যাপ করে। প্রথম উত্তর হিসেবেই পূর্ণ বিশেষাধিকারের দিকে হাত বাড়াবেন না; কনটেইনারকে আসলে কী করতে বলা হচ্ছে তা দেখুন, তারপর সেটি দিন।
হোস্টের কার্নেলও একটি ভাগ করা নির্ভরতা। একটি Proxmox কার্নেল আপডেট একসাথে প্রতিটি কনটেইনারের নিচে WireGuard-এর বাস্তবায়ন বদলে দেয়, যা সুবিধাজনক — যতক্ষণ না কোনো আপডেট আর কোনো কনটেইনারের প্রত্যাশা মিলতে অস্বীকার করে।
হোস্ট, কনটেইনার, VM: প্রতিটি বসানো আসলে কী মালিকানা রাখে
হোস্টে বসানো VPN-কে হাইপারভাইজারের নিজের নেটওয়ার্কিং-এ রাখে। রুট, ফায়ারওয়াল নিয়ম আর টানেল হোস্ট পুনরুদ্ধারের অংশ হয়ে যায়, আর সেখানে একটি ভুল ম্যানেজমেন্ট ইন্টারফেসকেও নিয়ে যেতে পারে। কনসোল দিয়ে পৌঁছানো যায় এমন হোস্টে অবকাঠামো রাউটিংয়ের জন্য এটি গ্রহণযোগ্য, আর আউট-অব-ব্যান্ড অ্যাক্সেসহীন দূরের বাক্সে এটি যন্ত্রণাদায়ক।
কনটেইনার পরিষেবাটিকে প্যাকেজড ও পুনরায় চালু করার যোগ্য রাখে, আবার হোস্ট কার্নেল ধার করে। এটি সচেতনভাবে ভাগ করা কার্নেলের পরিষেবার উপযুক্ত এবং পুনর্নির্মাণের জন্য ছোট একক দেয়। এটি স্বাধীন কার্নেল দেয় না, তাই নির্দিষ্ট মডিউল বিল্ড দরকার এমন যেকোনো কিছু এই বিকল্প থেকে দূরে নির্দেশ করে।
| Placement | Kernel owner | Typical failure mode |
|---|---|---|
| Proxmox host | Hypervisor | A routing change breaks host management access |
| LXC container | Host kernel, container namespace | Missing capability or missing module at wg0 creation |
| Virtual machine | Guest kernel | Extra maintenance and a second patch cycle |
VM বেশি মেমরি আর প্যাচ করার আরেকটি সিস্টেম খরচ করে, বিনিময়ে টানেল পায় নিজের কার্নেল, নিজের রাউটিং টেবিল আর একটি স্ন্যাপশট সীমা। যখন খারাপ পরিবর্তনের পর VPN-ই হল জিনিসটি যা আপনি ফিরিয়ে নেন, তখন ওই স্ন্যাপশট বাড়তি ভারসাম্য্যের যোগ্য।
তিনটি শর্ত যা আপনার হয়ে বেছে নেয়
যদি টানেলের এমন কার্নেল সংস্করণ বা WireGuard বৈশিষ্ট্য দরকার হয় যা Proxmox হোস্ট দেয় না, তবে এখানেই থামুন এবং VM ব্যবহার করুন। কনটেইনারে নতুন কার্নেল ইনস্টল করা যায় না, আর একটি গেস্টকে খুশি করতে হাইপারভাইজার কার্নেল বদলানো উচিত নয়।
যদি টানেল সাইটের আসল LAN প্রিফিক্সের গেটওয়ে হয়, তবে জিজ্ঞাসা করুন ফেরত রুটটি ইতিমধ্যে কার। কনটেইনার ট্রাফিক রাউট করতে পারে, কিন্তু তার ইন্টারফেসগুলি হোস্টের স্ট্যাকে বসে থাকে, তাই হোস্ট শেষ পর্যন্ত কনফিগারেশনের একটি অংশ বহন করে, আপনি পরিকল্পনা করেছিলেন বা না-ই করুন। হোস্টে বসানো এ বিষয়ে সৎ; কনটেইনারে বসানো প্রায়ই নয়।
তারপর একটি ভুলের বিস্তৃতির পরিধি মাপুন। কনটেইনার রিস্টার্ট করা সস্তা, VM স্ন্যাপশট ফিরিয়ে আনা পূর্বানুমেয়, আর হোস্ট নেটওয়ার্কিং মেরামত করতে শারীরিক বা কনসোল অ্যাক্সেস লাগতে পারে। সঠিক বাছাই হল সেটিই যার সবচেয়ে খারাপ অবস্থা আপনি ঘটনার সেই মুহূর্তেই সত্যিই পুনরুদ্ধার করতে পারেন।
চতুর্থ প্রশ্নটি খুব কমই নির্ণায়ক, তবে বলে রাখা ভালো: হোস্টে অন্য কোনো কিছু কি টানেল ইন্টারফেসটি দেখতে চায়? যদি হ্যাঁ, তবে হোস্টে বা কনটেইনারে বসানো এই দৃশ্যমানতা স্থানীয় রাখে, আর VM আপনাকে গেস্ট ও হোস্টের মধ্যে রাউট করতে বাধ্য করে।
ট্রাফিক এর মধ্য দিয়ে পাঠানোর আগে বসানোটি প্রমাণ করুন
ইনস্টল হওয়ার পর নিশ্চিত করুন কোন কার্নেলটি আসলে ইন্টারফেসটি পরিবেশন করছে এবং কনটেইনারকে তা ধরে রাখার যথেষ্ট কর্তৃত্ব দেওয়া হয়েছে কি না:
$ pct config 101 | grep -E 'unprivileged|features'
unprivileged: 1
$ pct exec 101 -- wg show
interface: wg0
listening port: 51820
$ pct exec 101 -- ip -4 addr show wg0
inet 10.60.0.2/24 scope global wg0
তারপর হোস্ট থেকে ফরওয়ার্ডিং দিকটি যাচাই করুন, কারণ একটি হ্যান্ডশেক শুধু প্রমাণ করে টানেল উঠেছে। একটি ক্লায়েন্ট ঠিকানার জন্য ip route get ব্যবহার করুন এবং নিশ্চিত করুন পরবর্তী হপ ও ইন্টারফেস ডিজাইনের সঙ্গে মেলে, আর ফেরত পথটি দূরের দিকে বিদ্যমান আছে।
স্থাপনাটি লিখিত মালিকসহ রেখে যান: কোন কার্নেল বাস্তবায়নটি বহন করে, কোন নেমস্পেস ইন্টারফেসটি ধরে রাখে, আর গেটওয়েকে কোন প্রিফিক্স ফরওয়ার্ড করার অনুমতি আছে। এই এক বাক্য তিনটি বসানোর যেকোনো বেঞ্চমার্ক তুলনার চেয়ে বেশি ঘটনা প্রতিরোধ করে।