লিনাক্সে VPN চালু করলে আসলে কী ঘটে
লিনাক্সে VPN চালু করলে একটি ইন্টারফেস তৈরি হয়, রুট ইনস্টল হয় এবং রেজলভার বদলে যায়। কোন সেবা কোন ধাপের মালিক তা জানলে বেশিরভাগ সেটআপ ব্যর্থতা ব্যাখ্যা করা যায়।
কানেক্ট চাপুন, আর লিনাক্স মেশিনে তিনটি জিনিস বদলে যায়: একটি ইন্টারফেস দেখা দেয়, রুট ইনস্টল হয়, এবং রেজলভার ভিন্নভাবে উত্তর দিতে শুরু করে। বেশিরভাগ সেটআপ ব্যর্থতা আসে এই তিনটির একটি বাকিগুলো ছাড়া ঘটলে, অথবা দুটি প্রোগ্রাম তাদের মালিকানা নিয়ে একমত না হলে। ক্রমটি বুঝলে ক্লায়েন্টের লগ আউটপুট পড়ার চেয়ে দ্রুত ব্যর্থতাটি বোঝা যায়।
যেকোনো কিছু কাজ করার আগেই একটি ইন্টারফেস দেখা দেয়
একটি টানেল ক্লায়েন্ট একটি ভার্চুয়াল ইন্টারফেস খোলে এবং তাতে প্যাকেট দেয়। একটি TUN ডিভাইস IP প্যাকেট বহন করে, রাউটেড VPN-এর যা দরকার; একটি TAP ডিভাইস Ethernet ফ্রেম বহন করে, ব্রিজড ডিজাইনের যা দরকার। কার্নেল মডিউল ডিভাইসটি দেয়, এবং সেশন যতক্ষণ থাকে ক্লায়েন্ট তার মালিক।
ইন্টারফেস উঠে আসা আর টানেল কাজ করা এক নয়। পিয়ার পৌঁছানো না গেলেও ঠিকানাসহ এটি থাকতে পারে, এজন্যই ইন্টারফেস তালিকা শেষ নয়, প্রথম পরীক্ষা। যে ডিভাইস নিজেকে উঠেছি বলে জানায়, সেটি কার্নেলের একটি ভার্চুয়াল লিংকের দৃষ্টিভঙ্গি বর্ণনা করে, পিয়ারের উত্তর দেওয়ার ইচ্ছা নয়।
প্রদত্ত ইন্টারফেস মোড অপরিবর্তিত রাখুন। একটি TUN প্রোফাইল TAP-এ বদলালে একটি রাউটেড সার্ভার ব্রিজড সার্ভারে পরিণত হয় না, এবং সাধারণত এমন সংযোগ তৈরি হয় যা প্রতিষ্ঠিত হয় কিন্তু কিছুই ফরওয়ার্ড করে না।
রুট ইনস্টল করে টানেলের মালিক
রুট হলো দ্বিতীয় পরিবর্তন, এবং তাদের মালিকানা তাদের বিষয়বস্তুর চেয়ে বেশি গুরুত্বপূর্ণ। একটি NetworkManager প্রোফাইল, একটি systemd ইউনিট এবং হাতে চালানো ক্লায়েন্ট সবাই রুট ইনস্টল করতে পারে, আর তাদের দুটি একসাথে করলে এমন একটি টেবিল তৈরি হয় যা পরে কেউ ব্যাখ্যা করতে পারে না।
ip -br addr show ip route show ip -6 route show
পূর্ণ-টানেল প্রোফাইল ডিফল্ট রুট প্রতিস্থাপন করে; স্প্লিট-টানেল প্রোফাইল আরও নির্দিষ্ট রুট যোগ করে এবং ডিফল্টকে অক্ষত রাখে। দুটোই স্বাভাবিক, এবং দ্বিতীয়টিই কারণ যে দূর থেকে পরিচালিত মেশিনে ডিফল্ট রুট মুছে ফেলা খারাপ প্রথম পরীক্ষা। এটি সরানোই সেই সেশন হারানোর দ্রুততম উপায় যা আপনি সমস্যা ঠিক করতে ব্যবহার করছেন।
অনুমান না করে টেবিলটি পড়ুন। আরও নির্দিষ্ট রুট বা একটি পলিসি নিয়ম ট্র্যাফিক টানেলে পাঠাতে পারে, অথচ ডিফল্ট রুট তখনও ফিজিক্যাল ইন্টারফেসের দিকে নির্দেশ করে, যা পুরো টেবিল না পড়া পর্যন্ত পরস্পরবিরোধী মনে হয়। এই সমন্বয় স্প্লিট টানেলের জন্য স্বাভাবিক এবং যে কেউ এক লাইনে ডিজাইন বর্ণনা আশা করে তার জন্য বিভ্রান্তিকর। আপনার প্রকৃত গন্তব্যের সাথে মেলে এমন রুট খুঁজুন, ডায়াগ্রামের সাথে মেলে এমনটি নয়।
রেজলভার হাত বদলায়
DNS হলো তৃতীয় পরিবর্তন এবং এমনটি যা সম্ভবত আপনি যেখানে দেখেননি সেখানে পরিচালিত হয়। ডেস্কটপে NetworkManager প্রতি সংযোগে রেজলভার সেটিংস পাঠাতে পারে। systemd-resolved ব্যবহার করা সিস্টেমে সেটিংস প্রতি লিংকে প্রয়োগ হয় এবং /etc/resolv.conf একটি স্টাব বা সিমলিংক হতে পারে, এমন ফাইল নয় যা আপনার সম্পাদনা করা উচিত।
resolvectl status readlink -f /etc/resolv.conf cat /etc/resolv.conf
পুনরায় সংযোগের পরে রেজলভার ফাইলে হাতে করা সম্পাদনা যদি অদৃশ্য হয়ে যায়, তবে এটি সেই কম্পোনেন্ট খুঁজে বের করার সংকেত যা এটি রক্ষণাবেক্ষণ করে, এবং বদলে প্রোফাইল পরিবর্তন করুন। উৎপন্ন ফাইল সম্পাদনা করা এমন পরিবর্তন যা পুনরায় সংযোগ মুছে ফেলবে।
ব্যক্তিগত নামের সাধারণত অভ্যন্তরীণ রেজলভার এবং অপারেটরের দেওয়া সার্চ ডোমেইন দরকার। একটি পাবলিক রেজলভার প্রতিস্থাপন করলে যে সম্পদটির জন্য VPN বিদ্যমান সেটিই ভেঙে যেতে পারে, এবং লক্ষণটি DNS ব্যর্থতার বদলে রাউটিং ব্যর্থতার মতো দেখায়। নাম ও ঠিকানা আলাদাভাবে পরীক্ষা করুন, কারণ একটি কাজ করা আর অন্যটি ব্যর্থ হওয়া ঠিক কোথায় দেখতে হবে তা বলে দেয়। এই একটি তুলনাই এক ঘণ্টার রুট ডিবাগিং বাঁচায়।
প্রতি সংযোগে একজন ম্যানেজার
প্রোফাইল ফরম্যাট ঠিক করে কোন প্রোগ্রাম এটি ব্যবহার করতে পারে। একটি OpenVPN প্রোফাইলে OpenVPN বা একটি সামঞ্জস্যপূর্ণ প্লাগইন দরকার, আর একটি WireGuard কনফিগারেশনের নিজস্ব ফরম্যাট আছে পিয়ার কী ও অনুমোদিত প্রিফিক্সসহ। ফাইলের এক্সটেনশন যা-ই ইঙ্গিত করুক, একটি ইমপোর্ট ডায়ালগ একটিকে অন্যটিতে অনুবাদ করে না।
একটি ম্যানেজার বেছে নিন এবং সংযোগের মালিকানা তাকেই দিন। একই টানেল দুটি টুল দিয়ে তোলা রুট টেবিল ও পুনঃসংযোগের আচরণকে অস্পষ্ট করে, এবং সাধারণত যে দ্বিতীয়টি শুরু হয় সে এমনভাবে জেতে যা পুনরুৎপাদন করা কঠিন।
আপনার ডিস্ট্রিবিউশন যে প্যাকেজ সমর্থন করে তা ইনস্টল করুন এবং অপারেটরের কাছ থেকে প্রোফাইল নিন। এটিকে একটি ক্রেডেনশিয়াল হিসেবে দেখুন, কারণ এতে সাধারণত একটি প্রাইভেট কী বা সমতুল্য উপাদান থাকে, এবং আপনার বাকি গোপনীয়তা যেখানে থাকে সেখানে রাখুন। ডাউনলোড ফোল্ডারে ফেলে রাখা প্রোফাইল হলো ডেস্কে ফেলে রাখা চাবি।
উঠে গেছে কিন্তু কাজ করছে না—তখন কী পরীক্ষা করবেন
ইন্টারফেস উঠে গেছে এবং ক্লায়েন্ট সফলতা জানাচ্ছে—এমন অবস্থায় বাইরের দিকে এগোন: রুট টেবিল কি গন্তব্যের জন্য টানেল বেছে নেয়, রেজলভার কি ব্যক্তিগত নামের উত্তর দেয়, এবং অপর প্রান্তের কি ফিরতি পথ আছে। প্রতিটির আলাদা কমান্ড ও আলাদা মালিক আছে।
nmcli connection show --active nmcli device status wg show
nmcli রেফারেন্স সম্পূর্ণ সেট দরকার হলে স্ট্যাটাস ও সংযোগের কমান্ড নথিভুক্ত করে। এখানে গুরুত্বপূর্ণ হলো একটি প্রোফাইল সক্রিয় থাকা আর একটি ডিভাইস ট্র্যাফিক বহন করার মধ্যে পার্থক্য, কারণ দুটি ভিন্নমত পোষণ করতে পারে।
সেটআপ শেষ বলার আগে একই ম্যানেজার দিয়ে একবার পুনরায় সংযোগ করুন, এবং সংযোগ বিচ্ছিন্নের পরে DNS এখনও কাজ করে কি না পরীক্ষা করুন। যে কনফিগারেশন কেবল প্রথম নেটওয়ার্ক পরিবর্তন পর্যন্ত কাজ করে তা শেষ নয়, এটি কেবল এই মুহূর্তে কাজ করছে।