একই হোস্টে দুটি ম্যানেজমেন্ট এন্ট্রি, একটি সার্ভিস পোর্ট এবং এমন একটি নীতি-নিয়ম যা দুটিতেই সাহায্য করার কথা ছিল। নিয়মটি সোর্স পোর্ট 22-এর সাথে মেলে, লুকআপটি এমন একটি টেবিলে পাঠায় যা কেবল WAN ডিফল্ট জানে, আর VPN এন্ট্রি নতুন লগইনের উত্তর দেওয়া বন্ধ করে দেয় যখন সরাসরি এন্ট্রি কাজ চালিয়ে যায়। সিলেক্টরটি ঠিকভাবে পড়া হলে এর কিছুই রহস্যময় নয়। সোর্স পোর্ট একটি সার্ভিসকে চিহ্নিত করে, সংযোগটি যে পথ দিয়ে এসেছে তা নয়।

দুটি এন্ট্রি, একটি সার্ভিস পোর্ট

হোস্টটির একটি LAN-পাশের ঠিকানা এবং একটি VPN ঠিকানা আছে, আর sshd দুটিতেই শোনে। তাই সরাসরি সেশন ও টানেল সেশন একই সার্ভিস পোর্ট ভাগ করে নেয় এবং কেবল কোন লোকাল ঠিকানা সংযোগটি গ্রহণ করে সেই বিষয়ে আলাদা হয়।

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

প্রতিটি এন্ট্রিকে নিজস্ব পোর্ট দেওয়াও কাজ করত, আর এটিকে একটি আবশ্যকতা ধরা SSH-এর ধর্ম নয়, বরং একটি নকশা-সিদ্ধান্ত।

নিয়মটি পড়ুন, তারপর টেবিলটি পড়ুন

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

তারপর সেই নিয়মটি যে টেবিলের দিকে ইশারা করে সেটি পড়ুন, কারণ সফলভাবে নিষ্পত্তি হওয়া নিয়ম আর উপকারীভাবে নিষ্পত্তি হওয়া নিয়ম এক নয়। কেবল একটি ডিফল্ট রুট থাকা টেবিল VPN-উৎস উত্তরটি WAN ইন্টারফেস দিয়ে পাঠায়। পরের টেবিলের আরও নির্দিষ্ট রুট কখনো দেখা হয় না, তাই দ্বিতীয় টেবিল যোগ করা এতবার কিছুই বদলায় না। নির্বাচিত টেবিলটিই পরীক্ষা করার জিনিস।

ip -4 rule show
ip route show table 100
ip route show table main

এই দুটি আউটপুট একসাথে ফলাফলটি ব্যাখ্যা করে; যেকোনো একটি একা ভুল সিদ্ধান্তে আমন্ত্রণ জানায়।

নিয়মটি আপনার বোঝানো প্রবাহে সীমাবদ্ধ করুন

দুটি এন্ট্রিকে আলাদা করা বৈশিষ্ট্যটি হলো লোকাল সোর্স ঠিকানা। সেই ঠিকানার সাথে মেলা নিয়ম কেবল টানেল সেশনগুলোকে প্রাইভেট টেবিলে পাঠায় এবং সরাসরি সেশনগুলোকে মেইন টেবিলে রাখে।

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

sudo ip rule add from 10.90.0.1 lookup 100 priority 100
sudo ip route add 10.90.0.0/24 dev wg0 table 100
ip route get 10.90.5.20 from 10.90.0.1

যদি দুটি এন্ট্রিকেই একই লোকাল ঠিকানায় অনুবাদ করা হয়, তবে সেই পার্থক্য মুছে যায় এবং নকশাটির বদলে সংযোগ-সচেতন অবস্থা দরকার।

লিসেনার, অনুমতি ও উত্তর-নির্বাচন আলাদা রাখুন

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

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

এমন একটি পুনরুদ্ধার চ্যানেল রাখুন যা আপনি যে পথ পরিবর্তন করছেন তার উপর নির্ভর করে না, কারণ এখানে একটি ভুল সংশোধনটিকেই আটকে দেয়।

এটি পুরোনো নয়, নতুন একটি সেশনে প্রমাণ করুন

প্রতিষ্ঠিত টার্মিনাল কিছুই প্রমাণ করে না, কারণ এটি পরিবর্তনের আগেই অনুমোদিত হয়েছিল। প্রতিটি অভীষ্ট এন্ট্রি দিয়ে একটি নতুন সেশন খুলুন।

ss -ltnp | grep ':22'
sudo sshd -T | grep -i listenaddress
ssh -v [email protected] true
sudo journalctl -u ssh -n 30

তারপর VPN পুনঃসংযোগ পুনরাবৃত্তি করুন এবং আবার চেষ্টা করুন, কারণ পুনঃসংযোগ টিকে থাকা রুট আর পুনঃসংযোগ যে টেবিলটি খালি করে সেখানে যোগ করা রুট এক নয়। প্রত্যাখ্যাত উৎসগুলো অনুমোদিতগুলোর থেকে আলাদাভাবে পর্যবেক্ষণ করুন, যাতে একটি অবরুদ্ধ প্রচেষ্টা কাজ করা সেশনের আড়ালে লুকিয়ে না থাকে। ফলাফলের পাশে লোকাল ঠিকানা, নিয়ম ও টেবিল সংরক্ষণ করুন। যদি বদলে পোর্টগুলো ভাগ করেন, তবে এটি SSH-এর সীমাবদ্ধতা নয়, পরিচালনগত সিদ্ধান্ত হিসেবে লিখে রাখুন।

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