হোস্ট VPN-এ যোগ দেওয়ার পর VirtualBox গেস্টের DNS ভেঙে যায়
গেস্টের নিজস্ব রিজলভার আছে এবং NAT দুইভাবে DNS-এর উত্তর দিতে পারে। অ্যাডাপ্টার মোড, রিজলভার পথ, হোস্ট রিজলভার মোড ও VPN পুনঃসংযোগে চারটি যাচাই।
VPN সংযোগ হওয়ার মুহূর্তেই Windows হোস্টে একটি অভ্যন্তরীণ অ্যাপ্লিকেশন রিজলভ হয়, অথচ VirtualBox NAT-এর পেছনের Ubuntu গেস্ট এখনও সেটি খুঁজে পায় না। গেস্টের নিজস্ব রিজলভার আছে এবং NAT অ্যাডাপ্টার DNS একাধিক উপায়ে সামলাতে পারে। গেস্টের রিজলভারকে একটি পাবলিক সার্ভার দিয়ে বদলালে সাধারণ ওয়েবসাইট চলবে আর ব্যক্তিগত নাম ব্যর্থ হবে, যা সমস্যার সমাধান না করে তা অন্যদিকে সরিয়ে দেয়। চারটি যাচাই ক্রমানুসারে করুন এবং যে প্রথমটি মেলে না সেখানেই থামুন।
আপনি কোন অ্যাডাপ্টার মোড ডিবাগ করছেন তা নিশ্চিত করুন
শুধু সাধারণ NAT মোডের অ্যাডাপ্টারই এই নিবন্ধে বর্ণিত আচরণ করে। ব্রিজড অ্যাডাপ্টার নিজের পরিচয় নিয়ে ভৌত নেটওয়ার্কে থাকে, NAT নেটওয়ার্ক নিজের DHCP ও DNS সেটিংসসহ একটি নামযুক্ত ভার্চুয়াল সুইচ, আর গেস্টের ভিতরের VPN ক্লায়েন্ট সম্পূর্ণ আলাদা একটি রিজলভার যোগ করে। পড়া চালিয়ে যাওয়ার আগে মোড নিশ্চিত করুন, কারণ এই প্রতিটি ক্ষেত্রে মেরামত আলাদা।
একটি VM বিভিন্ন মোডে দুটি অ্যাডাপ্টার বহন করতে পারে, এবং আক্রান্তটি সবসময় প্রথমটি নয়।
হোস্ট আদৌ নামটি রিজলভ করে কি না তাও নিশ্চিত করুন। টানেল চালু রেখে হোস্টে একই অ্যাপ্লিকেশন খুলুন, গেস্ট যে পূর্ণাঙ্গ নাম ব্যবহার করবে ঠিক সেই নাম দিয়ে। হোস্টও ব্যর্থ হলে দোষ গেস্টের নয় এবং কোনো ভার্চুয়াল নেটওয়ার্কিং পরিবর্তন তা সারাবে না।
গেস্টের রিজলভার দিয়ে একটি নাম অনুসরণ করুন
একটি অভ্যন্তরীণ নাম আর একটি পাবলিক নিয়ন্ত্রণ নাম বেছে নিন, তারপর দুটোই দুই জায়গায় পরীক্ষা করুন। যে পাবলিক নাম রিজলভ হয় অথচ ব্যক্তিগতটি হয় না, সেটি ত্রুটিকে সাধারণ নাম রিজলভিংয়ে নয়, বরং ব্যক্তিগত পথে স্থানান্তর করে। কেবল ব্যক্তিগত নাম পরীক্ষা করলে ভাঙা রিজলভার ও ভাঙা রুটের পার্থক্য আপনি করতে পারবেন না।
গেস্টের ভিতরে দেখুন রিজলভার আসলে কী ব্যবহারের জন্য কনফিগার করা। systemd-resolved চালানো Ubuntu গেস্টে প্রতি-লিঙ্ক স্ট্যাটাস আসা সার্ভারগুলো দেখায়, আর resolv.conf ফাইলে শুধু একটি স্টাব ঠিকানা থাকতে পারে, যা সন্দেহজনক নয় বরং সঠিক। হাতে সম্পাদিত ফাইল বা আলাদা এনক্রিপ্টেড-DNS ক্লায়েন্ট লুকআপ সম্পূর্ণ অন্য জায়গায় পাঠাতে পারে। পরিবর্তনের আগে যা পেয়েছেন তা লিখে রাখুন।
resolvectl status
resolvectl query app.internal.exampleএখানে রিজলভিংকে নাগাল থেকে আলাদা করুন। সার্ভিস যখন নাগালের বাইরে থাকে তখন আসা ঠিকানা DNS নয়, রাউটিং বা নীতির প্রশ্ন।
সেই অ্যাডাপ্টারে হোস্ট রিজলভার মোড চেষ্টা করুন
VirtualBox-এর NAT DNS অপশনগুলো ভিন্ন ভিন্ন প্রক্রিয়া বর্ণনা করে, আর হোস্টের নিজস্ব রিজলভার টানেলের সঙ্গে বদলালে এই পার্থক্যটা গুরুত্বপূর্ণ হয়। DNS প্রক্সি গেস্টের অনুরোধ তাকে দেওয়া সার্ভারগুলোতে পাঠায়। হোস্ট রিজলভার মোড অনুরোধগুলো আটকায় এবং হোস্টের DNS API ডাকে, আর VPN ক্লায়েন্টে পুনঃকনফিগার হওয়া Windows রিজলভার যে মোড অনুসরণ করে সেটিই এটি।
ভুল প্রক্রিয়া চালু করুন, কমান্ড তবুও সফল হবে অথচ আচরণ বদলাবে না, যা দুপুরবেলা নষ্ট করার এক বিভ্রান্তিকর উপায়।
VBoxManage modifyvm "work-ubuntu" --natdnshostresolver1 onVM-এর বর্তমান সেটিংস লিখে রাখুন, এটি বন্ধ করুন এবং আগে নিশ্চিত করা অ্যাডাপ্টারটিকে লক্ষ্য করুন। অপশনের শেষ অঙ্কটি ধ্রুবক নয়, অ্যাডাপ্টার নম্বর, তাই যার আক্রান্ত অ্যাডাপ্টার দ্বিতীয় এমন VM-এ এটি প্রয়োগ করা এক নীরব নিষ্ক্রিয় কাজ। গেস্ট চালু করুন এবং সত্যি যে রিজলভার কনফিগারেশন পেয়েছে তা দেখুন, কারণ গেস্টে হাতে করা সেটিং NAT স্তরের যা কিছু দেয় তার সবকিছুকে ছাড়িয়ে যায়। মনে রাখুন, হোস্ট রিজলভার মোড এটাও ধরে নেয় যে হোস্টের নিজস্ব DNS পথটিই আপনি ভাগ করতে চেয়েছিলেন।
VPN পুনঃসংযোগ জুড়ে একই পরীক্ষাগুলো আবার চালান
গেস্টে দুটি লুকআপই পুনরাবৃত্তি করুন, তারপর আসল অ্যাপ্লিকেশন খুলে সেটিকে সার্টিফিকেট নিজে যাচাই করতে দিন। কেবল ঠিকানাভিত্তিক পরীক্ষা নাম রিজলভিং আলাদা করতে কাজে লাগে এবং কার্যকর TLS সেশনের সমান নয়, তাই ping-এ থেমে যাবেন না। তারপর অনুমোদিত সময়ে হোস্ট টানেল বিচ্ছিন্ন করে আবার যুক্ত করুন এবং আরেকবার পুনরাবৃত্তি করুন। কেবল বুটের পর প্রথম সংযোগে যে আচরণ টিকে থাকে, তা ডিএনএস রহস্য নয়, রিপোর্ট করার মতো জীবনচক্র সমস্যা।
পাবলিক রিজলভিং কাজ করা প্রমাণ করে না যে ব্যক্তিগত কোয়েরিগুলো আপনার নীতির দাবি করা পথেই থেকেছে।
হোস্ট রিজলভার মোড কিছুই না বদলালে রেকর্ড করা কনফিগারেশন ফিরিয়ে দিন এবং চারটি পর্যবেক্ষণ রাখুন: হোস্ট কী ফিরিয়েছে, গেস্ট কী ফিরিয়েছে, অ্যাডাপ্টার মোড এবং রিজলভারের অবস্থা। নাগালের বাইরের অভ্যন্তরীণ সার্ভার, হাইপারভাইজার ট্রাফিক বাদ দেওয়া একটি ফিল্টার এবং গেস্টের দিকের একটি ওভাররাইড প্রতিটির জন্য আলাদা সংশোধন দরকার। অ্যাডাপ্টারকে ব্রিজে রূপান্তর করলে নেটওয়ার্ক ডিজাইন বদলে যায় এবং তা DNS রিসেট নয়।