OpenVPN সংযুক্ত হয় কিন্তু কিছুই প্রবাহিত হয় না: প্যাকেটটি কোথায় পড়ে তা খুঁজুন
সংযুক্ত টানেলের ভেতরে ট্রাফিক না থাকলে অন্তত পাঁচটি কারণ থাকে। লিসেনার প্রমাণ করুন, বাইরের প্যাকেট ক্যাপচার করুন, তারপর কাউন্টার বা ট্রেসকে নিয়মটির নাম বলতে দিন।
OpenVPN বলে সংযুক্ত, কিন্তু কোনো ট্রাফিক নড়ে না, এই বাক্যটি অন্তত পাঁচটি অসংশ্লিষ্ট ত্রুটি ঢেকে রাখে। কোন স্তর ব্যর্থ হচ্ছে তা জানার আগে ফায়ারওয়াল নিয়ম সম্পাদনা করলে অজানা বিষয়গুলো গুণিত হয় এবং পরের প্রকৌশলীকে এলোমেলো অবস্থা রেখে যায়। বরং প্রক্রিয়া থেকে বাইরের দিকে কাজ করুন, কারণ নিচের প্রতিটি ধাপ হয় একটি পর্যায় পরিষ্কার করে, নয়তো প্যাকেটটি কোথায় মারা যায় তা সংকুচিত করে। এখানে ক্রম গুরুত্বপূর্ণ: কোন ঠিকানাটি বাঁধা আছে তা জানার আগে নেওয়া ক্যাপচার কিছু প্রমাণ করবে, কিন্তু আপনার প্রয়োজনীয় বিষয়টি নয়।
সকেটটি হয় বাঁধা, নয়তো বাঁধা নয়
সক্রিয় বলে জানানো একটি সার্ভিস এমন ঠিকানা বা পরিবহনে বাঁধা থাকতে পারে যা আপনি কখনও চাননি। সকেটটিকেই জিজ্ঞাসা করুন: ss -lunp UDP লিসেনার তালিকা করে এবং ss -ltnp TCP তালিকা করে, আর পড়ার যোগ্য কলামটি হলো স্থানীয় ঠিকানা, অবস্থা নয়।
খালি উত্তর সাধারণত তিনটি বিষয়ের একটি বোঝায়: প্রক্রিয়াটি শুরু হওয়ার পর বেরিয়ে গেছে, এটি অন্য একটি কনফিগারেশন ফাইল লোড করেছে, অথবা যে ঠিকানায় ডায়াল করা হচ্ছে তার থেকে ভিন্ন ঠিকানায় শুনছে।
ss -lunp | grep 1194
ss -ltnp | grep 1194
local নির্দেশ লিসেনারকে একটি ঠিকানায় পিন করে, তাই একই হোস্টের অন্য জায়গায় লক্ষ্য করা ক্লায়েন্ট প্রত্যাখ্যাত হয়, অথচ সার্ভিসটি বাইরে থেকে সুস্থ দেখায়। একটি ইনস্ট্যান্স নামও আপনি কখনও সম্পাদনা করেননি এমন ফাইলের দিকে নির্দেশ করতে পারে, যা দুটি প্রোফাইল পাশাপাশি চালানো হোস্টে ঘটে।
বাইরের প্যাকেট ক্যাপচার করুন, টানেল নয়
ভৌত ইন্টারফেস ও প্রকৃত পোর্টে ফিল্টার করুন, নিজের ইন্টারফেস বসিয়ে: tcpdump -ni eth0 udp port 1194। ফেরত কিছু না আসা আউটবাউন্ড প্যাকেট উপরের দিকের দিকে নির্দেশ করে: প্রোভাইডার ফিল্টারিং, একটি NAT ডিভাইস, বা এমন দূরবর্তী ঠিকানা যা আপনি যেটি ভাবছেন সেটি নয়। দুই দিকেই নীরবতা ক্লায়েন্ট রাউটিং বা স্থানীয় ফায়ারওয়ালের দিকে নির্দেশ করে। টানেলে অগ্রগতি ছাড়া আসা উত্তর নিয়ন্ত্রণ চ্যানেলের দিকে নির্দেশ করে, অর্থাৎ কী বা সাইফার মিলছে না, ফিল্টারিংয়ের দিকে নয়।
দুই দিকই ক্যাপচার করুন এবং ফাইলটি ছোট রাখুন। দীর্ঘ ক্যাপচার আগ্রহের তিন সেকেন্ডকে চাপা দেয়, আর উত্তর প্রায় সবসময় প্রথম বিনিময়ে থাকে।
আগে কাউন্টার, ট্রেস কেবল যখন তারা মিথ্যা বলে
কাউন্টার দিয়ে শুরু করুন, কারণ সেগুলো কিছুই খরচ করে না। হয় nft list ruleset বা iptables -L -n -v এখানে গুরুত্বপূর্ণ একমাত্র প্রশ্নের উত্তর দেয়: নিয়মটি মিলেছে কি? ক্রম ফলাফল নির্ধারণ করে, কারণ প্রথম মিল জেতে, তাই পরবর্তী ACCEPT-এর আগে বিস্তৃত DROP সেই ACCEPT-কে মৃত করে রাখে এবং তাই নিয়ম যোগ করা এত কমই কিছু ঠিক করে।
মালিকানাও মানুষকে বিভ্রান্ত করে। কার্নেল স্থানীয়ভাবে উৎপন্ন প্যাকেটকে সেই প্রক্রিয়ার সাথে সম্পর্কিত করে যেটি সকেট খুলেছে, এবং OpenVPN সাধারণত root হিসেবে চলে, তাই সাধারণ ব্যবহারকারী ID-তে বাঁধা নিয়ম টানেলের নিজস্ব ট্রাফিক কখনও দেখে না। নিয়মটি ভুল বলে সিদ্ধান্ত নেওয়ার আগে মালিক UID পরীক্ষা করুন।
কেবল যখন কাউন্টার অস্পষ্ট থাকে তখনই লগ কোলাহলের যোগ্য, আর তখনও কেবল একটি সংকীর্ণ অংশের জন্য: একটি iptables নিয়ম যা হার সীমিত করে এবং লগ লাইনে উপসর্গ যোগ করে, অথবা meta nftrace set 1 বহনকারী nftables নিয়মের সাথে nft monitor trace চালু থাকলে। ট্রেস সেই চেইন ও নিয়মের নাম বলে যা প্যাকেট গ্রহণ বা বাদ দিয়েছে। পরে দুটোই সরান এবং পেলোড লগিং বাইরে রাখুন।
পরিবহনও পরীক্ষা করুন। TCP-তে সীমাবদ্ধ ফায়ারওয়াল সার্ভিস সেই নম্বরের UDP লিসেনার সম্পর্কে কিছুই বলে না, তাই সঠিক দেখানো নিয়মও প্রতিটি প্যাকেট বাদ দিতে পারে।
রাউটিং এবং ফেরার পথ
গ্রহণ করা প্যাকেট যদি তবুও উবে যায়, তবে গন্তব্য পথ পরীক্ষা করা দরকার। ip route get একটি ঠিকানার জন্য বেছে নেওয়া রুট জানায়, এবং রিভার্স-পাথ ফিল্টারিং এমন ইন্টারফেস দিয়ে আসা উত্তর বাদ দিতে পারে যা মূল টেবিল কখনও বেছে নিত না। লক্ষণটি হুবহু ফায়ারওয়াল বাদ দেওয়ার মতো দেখায়, তাই এই পরীক্ষাটি আরেকটি NAT নিয়মের আগে আসে।
গেটওয়েতে input চেইনের বদলে ফরওয়ার্ডিং ও forward চেইন পরীক্ষা করুন। তারপর নিশ্চিত করুন যে দূর প্রান্তটি উৎস ঠিকানায় পৌঁছানোর পথ জানে, কারণ কাজ করা আউটবাউন্ড পথে কিছু ফিরে না এলে দুই ক্ষেত্রেই নীরবতা।
রেকর্ডটি কী বলবে
প্রতিটি পরিবর্তনের জন্য পরীক্ষিত পর্যায়, পড়া প্রমাণ এবং তার দুই পাশের কাউন্টার মান লিখে রাখুন। সেই নোটটিই "এখন কাজ করছে" পরবর্তী পর্যালোচনায় টিকে থাকতে সাহায্য করে।
দুটি শর্টকাট নোটটিকে সৎ রাখে। যে প্যাকেট কখনও হোস্ট ছাড়েনি সেটি অন্য কোথাও নিয়মে বাদ পড়তে পারে না, দূর প্রান্তের কনফিগারেশন যতই বিশ্বাসযোগ্য দেখাক। যে প্যাকেট বেরিয়ে ফিরে এসেছে তা প্রশ্নটিকে নেটওয়ার্ক স্তরের উপরে নিয়ে যায়, যেখানে ফায়ারওয়াল কাউন্টারের আর কিছু বলার নেই।