কম্পিউটার টিউটোরিয়াল

KVM ব্রিজড নেটওয়ার্কিং: ধাপে ধাপে সম্পূর্ণ গাইড

এতক্ষণে আপনি KVM-র সাথে বেশ পরিচিত হয়ে উঠেছেন। আমরা ইতিমধ্যে несколько টিউটোরিয়াল দেখেছি—বেসিক পরিচিতি, ইন্টারমিডিয়েট সেটআপ ও ব্যবহার, নেটওয়ার্ক ও স্টোরেজ কনফিগারেশন, এবং VirtualBox-এর পাশাপাশি KVM সেটআপ। এরপর হলো ব্রিজড নেটওয়ার্কিং শিখা, যাতে ভার্চুয়াল মেশিনগুলোকে ব্যবহারযোগ্য এক্সটার্নাল IP ঠিকানা দিয়ে পোর্ট ফরোয়ার্ডিং বা অন্যান্য কাজ করা যায়।

আজ আমি আপনাকে যা দেখাবো, সেটা বেশিরভাগ টিউটোরিয়াল থেকে আলাদা। সাধারণত ব্রুট-ফোর্স পদ্ধতি দেখানো হয়, কিন্তু আমি দুটি বিকল্প পদ্ধতি দেখাবো যাতে ভার্চুয়াল মেশিনগুলো বাহিরের dünyায় এক্সপোজ করা যায়। এতে একটি পদ্ধতি হ্যাক-এর মতো, কিন্তু অত্যন্ত গৌরবময়—আপনি কখনো এটা দেখেননি! সাথে সাথেই লিমিটেশন এবং সম্ভাব্য সমস্যাগুলোও আলোচনা করব।

প্রাথমিক প্রস্তুতি

সচেতন থাকুন: ব্রিজড নেটওয়ার্কিং কিছুটা জটিল এবং লিনাক্স কমান্ড লাইনের জানালা দরকার। তবুও, সার্ভার চালাতে হলে এটা বাধ্যতামূলক। যদি ভার্চুয়াল মেশিনের ভিতরে কোনো সার্ভার চালান চান, তবে সেটাকে এক্সটার্নাল IP দিয়ে অন্য হোস্টরা সরাসরি যোগাযোগ করতে পারবে।

উদাহরণস্বরূপ: আপনার রাউটার 10.0.0.X রেঞ্জে ঠিকানা দেয়। ফিজিক্যাল হোস্ট ব্যবহার করে 10.0.0.4, কিন্তু ভার্চুয়াল মেশিন চলছে 192.168.2.133 দিয়ে। নেটওয়ার্ক সেটিংস পরিবর্তন না করা পর্যন্ত 10.0.0 নেটওয়ার্কের ক্লায়েন্টরা 192.168.2 নেটওয়ার্কের ক্লায়েন্টদের সাথে কথা বলতে পারবে না।

ব্রিজিং ব্যবহার করে এই সমস্যা সমাধান করা যায়। এতে ভার্চুয়াল মেশিনগুলো রাউটারের সাথে সংযুক্ত হয়ে এক্সটার্নাল IP ঠিকানা পায়। এখানে 'এক্সটার্নাল' মানে আপনার ফিজিক্যাল হোস্ট যেই রেঞ্জ ব্যবহার করছে, সেটা—প্রাইভেট ঠিকানা নাও হতে পারে।

ডিফল্টভাবে KVM নিজস্ব ব্রিজ তৈরি করে: 192.168.122.1। এটা ভার্চুয়াল রাউটারের ম냥 কাজ করে এবং 192.168.122.x রেঞ্জে IP বণ্টন করে। কিন্তু আমরা চাই মেশিনগুলো বাহিরের রেঞ্জ (এই টিউটোরিয়ালে 192.168.2) থেকে লীজ নেয়।

দুটি বিকল্প সমাধান

দুটি পথে এটা করা যায়:

পদ্ধতি ১: একটি ব্রিজ তৈরি করা। ফিজিক্যাল ডিভাইস eth1 এবং ভার্চুয়াল ডিভাইস vnet0 ব্রিজ করব। ব্রিজ কাজ করছে কিনা যাচাই করার পর কনফিগারেশন ফাইলে সেভ করব। ভার্চুয়াল মেশিনগুলো রাউটার থেকে IP লীজ নেবে। এটি VirtualBox-এ করা পদ্ধতির মতো। এই পদ্ধতিই এখানে আলোচনা করা হয়েছে।

পদ্ধতি ২ (হ্যাক): যদি নেটওয়ার্ক অ্যাডাপ্টার আউট-অফ-দ্য-বক্স ব্রিজিং সাপোর্ট করে, তবে সরাসরি সেটা ব্যবহার করা যেতে পারে। শুধু KVM-এ ভার্চুয়াল ব্রিজের জন্য একটি ছোট সাবনেট বরাদ্দ করতে হবে, যা ফিজিক্যাল হোস্টদের IP রেঞ্জের সাথে ওভারল্যাপ না করে।

লিমিটেশন ও সমস্যা

অনেক কিছু ভুল যেতে পারে: রাউটার ব্রিজিং সাপোর্ট নাও করতে পারে, নেটওয়ার্ক ইন্টারফেস সাপোর্ট নাও করতে পারে, IP লীজের পুল সীমিত হতে পারে, ফায়ারওয়াল বাধা দিতে পারে। বিশেষ করে Ubuntu-তে Network Manager ব্রিজড ইন্টারফেস ম্যানেজ করলে দ্বন্দ্ব হতে পারে।

আরো পড়ার জন্য:

  • Linux Foundation-এ ব্রিজ সেটআপ
  • KVM Networking - Ubuntu Community Documentation

এখন আপনি জানেন কী কী আসছে। ব্রিজিং সহজ নয়। কিছু বিষয় বিবেচনা করতে হবে: প্রথম, নেটওয়ার্ক অ্যাডাপ্টার ব্রিজিং সাপোর্ট করে কিনা? (অনেক ল্যাপটপের ওয়ায়ারলেস অ্যাডাপ্টার সাপোর্ট করে না)। دوم, নেটওয়ার্ক সেটিংস নিয়ে কাজ করার অভ্যাস আছে কিনা? তৃতীয়, আপনি আসলে কী অর্জন চান? NAT কি আপনার জন্য যথেষ্ট?

বেসিক নেটওয়ার্কিং কনসেপ্ট

আমার টেস্ট বক্স Ubuntu, কিন্তু এই টিউটোরিয়াল ডিস্ট্রো-অগনস্টিক রাখতে চাই। Ubuntu KVM কমিউনিটি ডকুমেন্টেশন ডেবিয়ান-বেসড সিস্টেমের জন্যই কাজ করে। তাই RedHat এবং SUSE সিস্টেমের জন্যও প্রযোজ্য নেটওয়ার্কিং কনসেপ্ট আলোচনা করব।

ডেবিয়ান-বেসড সিস্টেমে (Ubuntu) পারসিস্টেন্ট নেটওয়ার্ক কনফিগারেশন থাকে /etc/network/interfaces-এ। RedHat-বেসড এবং SUSE-এ কনফিগারেশন থাকে /etc/sysconfig/network-এর অধীনে আলাদা ফাইলগুলোতে, সাধারণত ifcfg-ethX বা ifcfg-eth-MAC-address প্রিফিক্সে। আপনার সিস্টেমে ifconfig কমান্ড দিয়ে ইন্টারফেসের নাম দেখে নিন।

brctl ইউটিলিটি দিয়ে কমান্ড লাইন থেকে ব্রিজ তৈরি করা যায়, ফাইল এডিট ছাড়া। কিন্তু নেটওয়ার্ক সার্ভিস রিস্টার্ট করলে সেটিংস হারিয়ে যাবে। তাই প্রথমে কমান্ড লাইন দিয়ে টেস্ট করুন, তারপর ফাইলে সেভ করুন। ব্যাকআপ নেওয়া فرামوش نکنید। আরও ডিটেলের জন্য আমার লিনাক্স কমান্ডস আর্টিকেল দেখুন।

ব্রিজ তৈরি করা

এখন শুরু করা যাক। brctl, ifconfig, dhclient কমান্ডগুলো ব্যবহার করব। ধাপগুলো (sudo বা root হিসেবে)—মান লক্ষ্য br0, ফিজিক্যাল/ভার্চুয়াল ডিভাইস eth0/eth1, এবং রাউটার/স্যুইচ থেকে DHCP লীজ:

ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
dhclient br0

নোট: ভার্চুয়াল অ্যাডাপ্টার (vnet0) ভার্চুয়াল মেশিন তৈরি ও স্টার্ট করার আগে উপলব্ধ নাও হতে পারে। তাই এখনই এড করতে হবে না। KVM অ্যাডভান্সড অপশনে ব্রিজড নেটওয়ার্কিং সিলেক্ট করলে সেটা অটোমেটিক্যালি অ্যাড করবে।

যদি ব্রিজ ইন্টারফেস DHCP সার্ভার (হোম ইউজারের কেসে রাউটার) থেকে এক্সটার্নাল ঠিকানা লীজ নিতে পারে, তবে আপনি সঠিক পথে আছেন। ডায়রেক্ট ইন্টারনেট কানেকশন থাকলে ISP একাধিক IP দিতে পারে না।

ব্রিজ ইন্টারফেস আপ হলে নেটওয়ার্ক ফাংশনালিটি চেক করুন। /etc/resolv.conf এডিট করতে হয়তে পারে এবং রাউটিং টেবিল ফিক্স করতে হয়তে পারে।

যদি সব কাজ করে, তবে নেটওয়ার্ক কনফিগারেশন ফাইলে চেঞ্জস কমিট করুন। উদাহরণ জেনেরিক, কমিউনিটি ডকুমেন্টেশনের মতো। Spanning Tree Protocol (STP) ইনেবল করতে হয়তে পারে মাল্টিপল হপ বা সাইক্লিক রুট হ্যান্ডেল করার জন্য।

আমাদের কেসে /etc/network/interfaces এডিট করে br0 যোগ করব। STP লাগলে bridge_stp off কে bridge_stp on করুন। brctl show কমান্ড দিয়ে ব্রিজের স্ট্যাটাস যাচাই করুন।

KVM ব্রিজড নেটওয়ার্কিং: ধাপে ধাপে সম্পূর্ণ গাইড

KVM ব্রিজড নেটওয়ার্কিং: ধাপে ধাপে সম্পূর্ণ গাইড

ভার্চুয়াল মেশিন তৈরি করা

এটা আমরা আগে শিখেছি। ফাইনাল স্টেজে, Advanced Options-এ নেটওয়ার্ক অ্যাড্রেস অ্যাসাইনমেন্ট চেঞ্জ করুন এবং ভার্চুয়াল অ্যাডাপ্টারের MAC ঠিকানা ইউনিক রাখুন যাতে কোনো конф্লিক্ট না হয়।

KVM ব্রিজড নেটওয়ার্কিং: ধাপে ধাপে সম্পূর্ণ গাইড

KVM ব্রিজড নেটওয়ার্কিং: ধাপে ধাপে সম্পূর্ণ গাইড

ভাগ্য ভাল থাকলে স্পেশাল ব্রিজিং সেটআপ লাগবে না—নেটওয়ার্ক অ্যাডাপ্টার আউট-অফ-দ্য-বক্স সাপোর্ট করবে। কিন্তু সাধারণত একটু কঠোর পরিশ্রম লাগে।

সব ঠিক কাজ করছে কিনা যাচাই করতে:

KVM ব্রিজড নেটওয়ার্কিং: ধাপে ধাপে সম্পূর্ণ গাইড

পিং করলে কাজ করছে বুঝতে পারবেন। এটি VirtualBox-এ করা পদ্ধতির 거의 সমান। এখন সার্ভিস এক্সপোজ করুন, ডেটা শেয়ার করুন—য่า ইচ্ছা করুন।

বিকল্প সেটআপ (হ্যাক—হয়তো কাজ করবে, কিন্তু বুদ্ধিমত্তাপূর্ণ)

Network Manager সহযোগিতা নাও করতে পারে, অন্য অনেক সমস্যা হতে পারে। তখন একটি আলাদা ভার্চুয়াল নেটওয়ার্ক অ্যাডাপ্টার তৈরি করে সেটাকে একটি ফিজিক্যাল ডিভাইসের সাথে রুট করুন যেটা আউট-অফ-দ্য-বক্স ব্রিজিং সাপোর্ট করে। কনফ্লিক্টিং IP ঠিকানার খেয়াল রাখুন।

একदम ডার্টি হ্যাক: আপনার নেটওয়ার্কের সাথে একই /24 স্পেস শেয়ার করে একটি ভার্চুয়াল নেটওয়ার্ক তৈরি করুন। উদাহরণস্বরূপ, রাউটার 192.168.2.0 নেটওয়ার্কে থাকলে, ভার্চুয়াল নেটওয়ার্ক 192.168.2.160 থেকে শুরু করে ছোট একটি রেঞ্জ (যেমন ১৬ টি ঠিকানা) দিন। রাউটার কখনো সেই রেঞ্জের ঠিকানাগুলো অন্য ক্লায়েন্টদের দেবে না—DHCP অ্যাসাইনমেন্ট লিমিট করুন।

উদাহরণ: আমি 192.168.2.160/28 নেটওয়ার্ক তৈরি করলাম। রাউটার সেটা লীজ দেবে না বলে আশা করি, কিন্তু DHCP লিমিট করে নিশ্চিত করলাম। তারপর ভার্চুয়াল নেটওয়ার্ককে ফিজিক্যাল ডিভাইসের (এখানে ওয়ায়ারলেস eth1) সাথে রুট করলাম।

ভার্চুয়াল মেশিন তৈরি করে eth1-এ রুট করুন। অনলাইন হলে দেখবেন: হোস্ট .102, ভার্চুয়াল NIC virbr1 .161, ভার্চুয়াল মেশিন .168 ঠিকানা পেয়েছে।

একই নেটওয়ার্কের একটি ফিজিক্যাল Windows 7 মেশিন (.103) থেকে Ubuntu Lucid বক্সের ভার্চুয়াল অ্যাডাপ্টার (.161) পিং করা গেল—দুটোই ওয়ায়ারলেস, একই রাউটারের মাধ্যমে। এই সেটআপ কতটা স্মার্ট! সব সময় কাজ নাও করতে পারে, কিন্তু করলে জিনিসটা जिनিয়াস।

এক্সিস্টিং ভার্চুয়াল মেশিনগুলো

পূর্বে তৈরি ভার্চুয়াল মেশিনগুলোও /etc/libvirt/-এ XML কনফিগারেশন এডিট করে ব্রিজড নেটওয়ার্কিং-এ আনা যায়। প্রতিটি মেশিনের আলাদা .xml ফাইল থাকে। চেঞ্জস নেওয়ার জন্য মেশিনগুলো পাওয়ার সাইকেল করুন। উদাহরণ:

<interface type='bridge'>
<mac address='00:11:22:33:44:55'/>
<source bridge='br0'/>
</interface>

উপসংহার

KVM ব্রিজড নেটওয়ার্কিং সেটআপ সহজ নয়। VirtualBox ২-৩ বছর আগে যেভাবে ছিল, প্রায় তেমনই। কিন্তু ম্যানেজ করা যায়—মূল লিমিটেশন হচ্ছে নেটওয়ার্ক টপোলজির বোঝাপড়া এবং ফাংশনালিটি। সময়ের সাথে সাথে এটা আরো ভালো হবে।

ভাগ্য ভাল থাকলে নেটওয়ার্ক অ্যাডাপ্টার আউট-অফ-দ্য-বক্স ব্রিজিং সাপোর্ট করবে। না হলে ব্রিজ অ্যাডাপ্টার তৈরি করে ফিজিক্যাল ও ভার্চুয়াল ডিভাইস অ্যাসাইন করতে হবে। তারপর DNS, DHCP বা রাউটিং সমস্যা সমাধান করুন। চরম উপায় হিসেবে সাবনেট ভেতর সাবনেট তৈরি করে (IP ওভারল্যাপ না হয় সাবধানে) ভার্চুয়াল অ্যাডাপ্টারকে ফিজিক্যাল ডিভাইসের সাথে রুট করার হ্যাক চেষ্টা করুন।

এই টিউটোরিয়াল বেসিক হলেও একটু ট্রিকি। আরও অনেক সমস্যা থাকতে পারে। প্রশ্ন, সাজেশন বা কঠিন নেটওয়ার্ক সেটআপে টিপস দরকার হলে মেইল করুন—হয়তো সিকোয়েল লিখব।

চিয়ার্স।

  1. ভার্চুয়ালবক্স ব্রিজড নেটওয়ার্কিং ইস্যু: কেন বন্ধ হয় এবং কীভাবে ফিক্স করবেন

  2. ভার্চুয়ালবক্স NAT নেটওয়ার্কিং কনফিগারেশন একাধিক VM-এর জন্য

  3. KVM স্টোরেজ ম্যানেজমেন্ট আয়ত্ত করা: একটি ব্যাপক টিউটোরিয়াল

  4. VirtualBox মাস্টার করুন: ডিস্ক ইমেজ ক্লোনিং-র ধাপে ধাপে গাইড