লিনাক্সে Tailscale ক্লায়েন্ট কেন বিজ্ঞাপিত সাবনেট রুট উপেক্ষা করে
সারণি 52-ই ইঙ্গিত: লিনাক্সে Tailscale ক্লায়েন্ট কেবল --accept-routes-এর পরে একটি বিজ্ঞাপিত সাবনেট রুট ইনস্টল করে, আর ডিভাইস অনুমোদন আলাদা গেট।
আপনি একটি লিনাক্স ল্যাপটপে আছেন, tailscale status অন্য মেশিনগুলো তালিকাভুক্ত করে, তবু 10.80.0.25-এর NAS সময় শেষ হয়ে যায়। tailnet সুস্থ, সাবনেট রাউটার অনলাইন, আর ক্লায়েন্টের আউটপুটে কিছুই বলে না কেন এর পেছনের LAN-এ পৌঁছানো যাচ্ছে না। নিচের বিবরণ ওই লক্ষণ থেকে বাইরের দিকে এগোয়: এই ক্লায়েন্টের ফ্ল্যাগ, তারপর রাউটারে বিজ্ঞাপন, তারপর অনুমোদন, তারপর নীতি, আর শেষে গন্তব্যটি নিজে। প্রতিটি গেট একই সময়-সীমায় ব্যর্থ হয়, তাই ক্রম কমান্ডের চেয়ে বেশি গুরুত্বপূর্ণ।
লিনাক্স ক্লায়েন্ট কী ইনস্টল করতে অস্বীকার করছে
লিনাক্সে Tailscale ক্লায়েন্ট বিজ্ঞাপিত সাবনেট রুট গ্রহণ করে না, যদি না আপনি তা চান। ওই সেটিং ছাড়া ক্লায়েন্ট tailnet-এ যোগ দেয় ও পিয়ার ঠিকানায় পৌঁছায়, অথচ রাউটার যে প্রতিটি প্রিফিক্স বিজ্ঞাপন করে তা অব্যবহৃত থাকে। ডিফল্টটি ইচ্ছাকৃত, আর সেজন্যই লক্ষণটি ভাঙা রাউটারের মতো দেখায়, স্থানীয় সিদ্ধান্তের মতো নয়।
এখানে দুটি আলাদা জিনিসকে রাউটিং বলা হচ্ছে, আর তার মধ্যে কেবল একটি আপনার। রাউটার tailnet-এ একটি প্রিফিক্স বিজ্ঞাপন করে; আপনার মেশিন ঠিক করে তা ইনস্টল করবে কি না। যেকোনোটিতে ব্যর্থতা একই সময়-সীমা তৈরি করে, তাই অনুমান একটি দুপুর নষ্ট করে। কিছু সম্পাদনার আগে কোন পক্ষ অস্বীকার করছে তা খুঁজে বের করুন।
এই মেশিনে রুট গ্রহণ চালু করুন
ক্লায়েন্টে পছন্দটি সেট করুন, তারপর কমান্ড কাজ করেছে ধরে না নিয়ে কী বদলেছে তা দেখুন। বর্তমান রূপটি লগইন প্রবাহ পুনরাবৃত্তি না করে সেটিং প্রয়োগ করে, যা সেশনের মাঝখানে থাকলে গুরুত্বপূর্ণ।
sudo tailscale set --accept-routes
tailscale status
ip route show table 52
Tailscale লিনাক্সে গৃহীত রুট তার নিজস্ব সারণিতে ইনস্টল করে, তাই সারণি 52-এ কোনো প্রিফিক্স দেখা মানে এই ক্লায়েন্ট বিজ্ঞাপনটি ইনস্টল করেছে—এটি সরাসরি প্রমাণ। আপনার রেঞ্জ ওই সারণিতে না থাকলে থামুন: সমস্যাটি স্থানীয় এবং রাউটারে যতই কাজ করুন তা বদলাবে না।
পুরোনো ক্লায়েন্ট একই পছন্দ লগইন কমান্ডের ফ্ল্যাগ হিসেবে দেয়, তাই tailscale set না থাকলে sudo tailscale up --accept-routes হলো বিকল্প। রুট হাতে সম্পাদনার বদলে এটি ব্যবহার করুন, কারণ ডেমন নিজের সারণি পুনর্লিখন করে এবং পরের পুনঃসংযোগে আপনার সম্পাদনা মুছে যায়। পুরোনো পোস্ট থেকে কমান্ড কপি করার আগে সংস্করণ দেখে নিন।
বিজ্ঞাপন ও অনুমোদন আলাদাভাবে যাচাই করুন
সাবনেট রাউটারে প্রিফিক্সটি বিজ্ঞাপিত হতে হবে, আর কার্নেলকে ইন্টারফেসের মধ্যে প্যাকেট ফরোয়ার্ড করতে হবে। ফরোয়ার্ডিং ছাড়া বিজ্ঞাপন আপনাকে একটি অনুমোদিত রুট দেয় যা নিঃশব্দে ট্রাফিক ফেলে দেয়, আর এটিই সবচেয়ে সাধারণ অর্ধসম্পূর্ণ সেটআপ।
sudo tailscale up --advertise-routes=10.80.0.0/24
sysctl net.ipv4.ip_forward
ip -br addr
বিজ্ঞাপিত প্রিফিক্সটি আপনি যে ঠিকানায় সত্যিই পৌঁছাতে চাইছেন তার সঙ্গে অক্ষর ধরে ধরে মিলিয়ে দেখুন। 10.70.0.0/24 ঘোষণা করা রাউটার 10.80.0.25-এর NAS সম্পর্কে কিছুই বলে না, আর এই অমিল প্রতিটি স্ট্যাটাস আউটপুটে অদৃশ্য, কারণ দুটি সংখ্যাই সমান বিশ্বাসযোগ্য দেখায়। ভাঙা রুটের অধিকাংশ প্রতিবেদন এখানেই শেষ হয়। নিচের দিকে কিছু স্পর্শ করার আগে বিজ্ঞাপনটি ঠিক করুন।
অনুমোদন পরের গেট, আর রাউটার শেল থেকে কনফিগার করা হলে এটি বাদ দেওয়া সহজ। অন্য মেশিন ব্যবহারের আগে অ্যাডমিন কনসোলে ওই ডিভাইসের জন্য বিজ্ঞাপন চালু করতে হবে। ক্লায়েন্টে রুট গ্রহণ কোনোকিছু অনুমোদন করে না এবং কোনো প্রবেশ নিয়ম বাতিল করে না।
হোস্টনামের আগে প্রাইভেট ঠিকানা পরীক্ষা করুন
রাউটারের নিজস্ব tailnet ঠিকানায় সফল সংযোগ প্রমাণ করে tailnet কাজ করে, যা আপনি আগেই জানতেন। দরকারি পরীক্ষা হলো আপনি যে সেবাটি সত্যিই চান তা, প্রথমে প্রাইভেট ঠিকানার বিরুদ্ধে, যাতে DNS ব্যর্থতা রাউটিং ব্যর্থতার ছদ্মবেশ নিতে না পারে।
tailscale ping 10.80.0.1
ping -c 2 10.80.0.25
nc -vz 10.80.0.25 445
getent hosts nas.internal.example
ঠিকানা সাড়া দিলে কিন্তু হোস্টনাম না দিলে, আপনার নাম সমাধানের সমস্যা আছে এবং এটি রুট সমস্যা হিসেবে ধরা বন্ধ করুন। কোনোটিই সাড়া না দিলে এক বিভাগ পিছিয়ে গিয়ে নিশ্চিত করুন বিজ্ঞাপনটি ঠিকানাটি ঢেকে রাখে। দুটি ব্যর্থতাই অ্যাপ্লিকেশন থেকে একই রকম দেখায় এবং ভিন্ন জায়গায় ঠিক হয়।
tailnet-কে দোষ দেওয়ার আগে একটি স্থানীয় পরীক্ষা করা মূল্যবান। যখন আপনার বর্তমান LAN দূরবর্তী সাবনেটের মতো একই প্রিফিক্স ব্যবহার করে, কার্নেল সরাসরি সংযুক্ত রুটকে অগ্রাধিকার দেয় এবং ট্রাফিক কখনো মেশিন ছাড়ে না; বাড়ি ও অফিস দুটোই 192.168.1.0/24 বেছে নিলে ঠিক এটিই ঘটে।
কেন ক্লায়েন্ট ফ্ল্যাগ রাউটার সেটিং নয়
এগুলো ভিন্ন চাহিদার ভিন্ন ভূমিকা, আর ক্লায়েন্ট ফ্ল্যাগ রাউটারে কপি করাই একটি কার্যকর tailnet-এ লুপ আনে। যে মেশিন রুট বিজ্ঞাপন করে তার ফরোয়ার্ডিং, ফরোয়ার্ড করা ট্রাফিকের অনুমতি দেওয়া ফায়ারওয়াল নিয়ম এবং কোন প্রিফিক্স ঘোষণা করবে তার সিদ্ধান্ত দরকার। এর কোনোটিই --accept-routes থেকে অনুমিত হয় না।
সাবনেট রাউটার ডকুমেন্টেশন সতর্ক করে যে একই প্রিফিক্স ঘোষণা করা অতিরিক্ত রাউটারে রুট গ্রহণ চালু করা উচিত নয়, কারণ স্ট্যান্ডবাই নোড ইতিমধ্যে স্থানীয় ট্রাফিক সক্রিয় নোড দিয়ে বাইরে ঠেলে দিতে পারে। HA জোড়া চালালে এটিকে পাদটীকা নয়, ডিজাইন সীমাবদ্ধতা হিসেবে নিন, এবং দুটিতেই অনুমোদনের আগে কোন নোড প্রিফিক্সটির মালিক তা ঠিক করুন। একক রাউটারে একই সতর্কতা মনে করিয়ে দেয় যে গ্রহণ ক্লায়েন্টদের কাছে, বিজ্ঞাপন দেওয়া মেশিনের কাছে নয়। কোন গেট বন্ধ ছিল তা লিখে রাখুন।
সাধারণ ক্লায়েন্টের জন্য ক্রমটি শেষ হয় শুরুর ব্যর্থ অ্যাপ্লিকেশন পরীক্ষায়। রাউটারের জন্য ফরোয়ার্ডিং, বিজ্ঞাপন, অনুমোদন ও ফায়ারওয়াল এই ক্রমে পর্যালোচনা করুন, কারণ প্রথম অনুপস্থিতটিই ঠিক সেই সময়-সীমা তৈরি করে যা দিয়ে আপনি শুরু করেছিলেন।