VPN টানেল কখনো সংযুক্ত হয় না: প্যাকেটগুলো আসলে কোথায় থামে
যে টানেল কখনো তৈরি হয় না, তা দুই প্রান্তেই একটি খালি লগ রেখে যায়। GRE, ESP বা UDP 4500 বাদ পড়ছে কি না তা অনুসরণ করুন, এবং সার্ভার সম্পাদনার আগে ক্যারিয়ার NAT শনাক্ত করুন।
ক্লায়েন্ট বারবার আবার চেষ্টা করে, হ্যান্ডশেক শেষ হওয়ার আগেই লগ থেমে যায়, আর সার্ভার একেবারেই কিছু লিখে রাখে না। এই ধরনটি শংসাপত্র থেকে দূরে সরিয়ে পথের দিকে নির্দেশ করে: দুই প্রান্তের মধ্যে কিছু একটা টানেলের প্রয়োজনীয় প্রোটোকল বহন করতে অস্বীকার করছে। যেকোনো একটি কনফিগারেশন স্পর্শ করার আগেই ঠিক করুন প্যাকেট কোথায় থামছে, কারণ ফিল্টার করা প্রোটোকল আর ভুল পাসওয়ার্ড বেশিরভাগ ক্লায়েন্টে একই বন্ধুত্বপূর্ণ ত্রুটি দেয়। পরীক্ষাগুলো খরচ অনুসারে সাজানো, সবচেয়ে সস্তাটি প্রথমে।
ট্রাফিক কোথায় থামে তা প্রমাণ করুন
ক্লায়েন্টের আউটবাউন্ড ইন্টারফেসে এবং সার্ভারে একই সময়ে ক্যাপচার করুন। যা গেছে তার সঙ্গে যা এসেছে তা তুলনা করুন, এবং পার্থক্য কোন দিকে দেখা যাচ্ছে তা লিখে রাখুন।
সার্ভারে কিছু না থাকার অর্থ পথ বা প্রথম NAT ট্রাফিক ফেলে দিচ্ছে, আর উত্তর ছাড়া আগমন সার্ভারের ফায়ারওয়াল বা অস্তিত্বহীন ফিরতি রুটের দিকে ইঙ্গিত করে। যে রাউটার প্রায়ই টানেল টার্মিনেট করে তার কাছে সাধারণত কাজের লগ থাকে না, তাই ক্যাপচারটাই রেকর্ড হয়ে যায়। গন্তব্য পোর্ট ও প্রোটোকল নম্বর লিখে রাখুন, কারণ দুটি ব্যর্থতাই ক্লায়েন্ট ডায়ালগে একইভাবে দেখা যায়।
প্রোটোকল 47 ছাড়া PPTP মরে যায়
PPTP নিয়ন্ত্রণ বহন করে TCP 1723-এ এবং তার ডেটা GRE-এর ভিতরে, যা পোর্ট নম্বর নয় বরং IP প্রোটোকল 47। শুধু 1723 ফরওয়ার্ড করলে চিরাচরিত ফলাফল আসে: সংযোগ প্রমাণীকরণ করে, তারপর চুপ হয়ে যায়, কারণ পেলোড বহনকারী প্রোটোকলের জন্য কোনো নিয়ম নেই। ক্লায়েন্ট এটি প্রত্যাখ্যাত পাসওয়ার্ড থেকে আলাদা করতে পারে না, তাই ক্যাপচার কনফিগারেশন সম্পাদনার আগে আসতেই হবে।
পাসথ্রু ইনবাউন্ড ফরওয়ার্ডের বিপরীত দিকে চলে, আর ফার্মওয়্যার প্রায়ই দুটির জন্য একই লেবেল ব্যবহার করে, সবাইকে বিভ্রান্ত করার যথেষ্ট। লিনাক্স ক্লায়েন্টে স্থানীয় ফায়ারওয়াল রাউটার জড়িত হওয়ার অনেক আগেই GRE ফেলে দিতে পারে, তাই প্রোটোকল 47-এর নিজস্ব নিয়ম দরকার এবং conntrack হেল্পার লোড করতে হবে। উবুন্টুর ufw এই নিয়মগুলো before ফাইলে রাখে, কারণ সাধারণ allow নিয়ম প্রোটোকল নম্বর প্রকাশ করতে পারে না। পরে মেশিন রিবুট না করে ফায়ারওয়াল রিলোড করুন।
# /etc/ufw/before.rules, inside *filter
-A ufw-before-input -p gre -j ACCEPT
sudo ufw allow 1723/tcp
sudo modprobe nf_conntrack_pptp
sudo conntrack -L | grep greদুই NAT-এর পিছনে L2TP ও IPsec
L2TP IPsec-এর ভিতরে কী বিনিময়ের জন্য UDP 500, NAT শনাক্ত হলে UDP 4500, এবং প্রোটোকল 50 হিসেবে ESP দরকার। এর প্রত্যেকটি স্বতন্ত্রভাবে ফিল্টার হয়, তাই একটিকে অনুমোদনকারী নিয়ম অন্য দুটি সম্পর্কে কিছুই প্রমাণ করে না। দুইটি রাউটার ধারাবাহিকভাবে প্রতিটি প্যাকেট দুইবার অনুবাদ করে, আর প্রান্তগুলো আর মিলে না কী নিয়ে সমঝোতা হয়েছে।
বাইরের মডেম ব্রিজ করুন, অথবা ভেতরের রাউটারে NAT বন্ধ করুন, যাতে পাবলিক ঠিকানাটি টানেল টার্মিনেট করা ডিভাইসে পৌঁছায়। যেখানে কোনোটিই সম্ভব নয়, সেখানে টানেল ডাবল NAT সীমার ভেতর থেকেই শুরু করতে হবে, সেখানেই টার্মিনেট নয়।
ক্যারিয়ার নেটওয়ার্ক ও ঠিকানা ভাগাভাগি
WAN ঠিকানা 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 বা 100.64.0.0/10-এর মধ্যে থাকার অর্থ রাউটারের কোনো পাবলিক ঠিকানা নেই এবং ইন্টারনেট থেকে কোনো ইনবাউন্ড ফরওয়ার্ড এতে পৌঁছাতে পারে না। ক্যারিয়ার-গ্রেড NAT অতিরিক্তভাবে যে প্রোটোকল প্রত্যাশা করে না তা ফিল্টার করে, আর মোবাইল লিংকে GRE প্রায়ই ক্ষতিগ্রস্ত হয়। রাউটারের নিজের WAN ঠিকানার সঙ্গে তুলনা করুন, তার পিছনের কোনো ক্লায়েন্টের জন্য লুকআপ সাইট যে ঠিকানা জানায় তার সঙ্গে নয়।
একই রাউটার একটি তারযুক্ত লাইনে চালালে একটি পরীক্ষাতেই ক্যারিয়ার সংক্রান্ত ফলাফলকে কনফিগারেশন ত্রুটি থেকে আলাদা করা যায়। যেখানে ক্যারিয়ার প্রোটোকল প্রত্যাখ্যান করে, সেখানে বাকি বিকল্প হলো 443-এ ভিন্ন ট্রান্সপোর্ট বা ভেতর থেকে শুরু করা টানেল।
পোর্ট বন্ধ করার আগে লিসেনার তালিকা পড়ুন
উদ্বেগজনক পোর্ট স্ক্যান প্রায়ই শুধু সেই ফিচার সেট যা চালু অবস্থায় আসে। লিসেনারগুলোর তালিকা করুন, প্রতিটি সকেটকে একটি ফিচারের সঙ্গে মিলিয়ে দিন, তারপর পোর্ট ব্লক করার বদলে ফিচারটি বন্ধ করুন, যাতে দুটি দৃষ্টিভঙ্গি আলাদা হয়ে না যায়।
ss -lntup
systemctl list-units --type=service --state=running | grep -i vpn
nc -vz 203.0.113.10 1723
nc -vzu 203.0.113.10 4500SoftEther-এর ডিফল্টগুলো ভালো উদাহরণ: TCP 443, 992 ও 5555, সঙ্গে L2TP/IPsec ও DNS-টানেল ফিচার তাদের নিজস্ব সকেট যোগ করে। ওই ফিচারগুলো বন্ধ করলে লিসেনারগুলো লুকানো নয়, সরিয়ে ফেলা হয়, আর বাইরের হোস্ট থেকে প্রোব বলে দেয় ক্যারিয়ার আদৌ পোর্টটি পার হতে দেয় কি না। স্থানীয়ভাবে উত্তর দেওয়া লিসেনারও আপস্ট্রিমে বন্ধ থাকতে পারে, তাই রাউটারের নিজের WAN ঠিকানার সঙ্গে বাইরের সেবা যা জানায় তার তুলনা করুন।