পুরোনো অ্যাপ্লায়েন্সের প্রোটোকলের সাথে Linux VPN ক্লায়েন্ট মেলান
অ্যাপ্লায়েন্সের প্রকাশিত পোর্ট পড়ুন, তারপর মানানসই ক্লায়েন্ট ইনস্টল করুন: GRE-র উপর pppd, IKEv1 XAuth-এর জন্য strongSwan, বা পোর্টালের জন্য openconnect।
চারটি প্রোটোকল পরিবার এখনও র্যাকে থাকা প্রায় প্রতিটি অ্যাপ্লায়েন্স কভার করে, আর Linux-এ প্রতিটি ভিন্নভাবে ব্যর্থ হয়। দূর প্রান্তের প্রকাশিত পোর্ট আর কনফিগার করা প্রস্তাব আপনার প্যাকেজ ঠিক করে, আপনি যে ডিস্ট্রিবিউশন চালাচ্ছেন তা নয়। ফোরামের পোস্টে যা আছে তা ইনস্টল করে তারপর কিছু একটা কানেক্ট হওয়া পর্যন্ত সম্পাদনা করা — এইভাবেই একটা দুপুর হারিয়ে যায়। অ্যাপ্লায়েন্স পড়ুন, তারপর ইনস্টল করুন, তৃতীয়ে যাচাই করুন।
দূর প্রান্ত যা প্রকাশ করে তা লিখে রাখুন
প্যাকেজ ম্যানেজার খোলার আগে অ্যাপ্লায়েন্স যে প্রোটোকল, পোর্ট ও প্রমাণীকরণ আশা করে তা লিখুন। চারটি পরিবার বেশিরভাগ পুরোনো সরঞ্জাম কভার করে, আর নিচের সারণিটিই পুরো সিদ্ধান্ত এক স্ক্রিনে।
| Family | Ports | Linux side |
|---|---|---|
| PPTP | TCP 1723 plus GRE, IP protocol 47 | pppd with a peer file |
| L2TP/IPsec | UDP 500, 4500, 1701 | NetworkManager plugin over strongSwan |
| IKEv1 aggressive with XAuth | UDP 500 | native strongSwan connection |
| AnyConnect-style portal | TCP 443 | openconnect with a TUN device |
ম্যানুয়াল আর অ্যাপ্লায়েন্সের নিজের ফায়ারওয়াল নিয়ম তার লগইন পাতার প্রোটোকল নামের চেয়ে বেশি নির্ভরযোগ্য। IPsec ঘোষণা করা একটি ডিভাইস হয়তো কেবল IKEv1-ই বলে, আর কেউ প্রয়োগ না করা একটি ফার্মওয়্যার রিলিজই হয়তো পরে IKEv2 যোগ করে। ডেটা পথ এবং সেটআপ পোর্ট দুটোই নিশ্চিত করুন, কারণ এখানেই পুরোনো সরঞ্জাম আর আধুনিক নেটওয়ার্কের মতভেদ। এই ধাপে ভুল করা মানে আপনার ক্লায়েন্টকে এমন বৈশিষ্ট্যের বিপরীতে ডিবাগ করা যা অপর প্রান্তে কখনোই ছিল না।
PPTP: pppd সম্পাদনার আগে GRE প্রমাণ করুন
Linux-এ PPTP কোনো ডেমন নয় যা আপনি চালু করেন, বরং একটি pppd আহ্বান, আর সংযোগের প্যারামিটার থাকে একটি নামযুক্ত peer ফাইলে যা pppd ডাকা হলে পড়ে। ডিস্ট্রিবিউশনগুলো এখনো এটি প্যাকেজ করে, যদিও প্রোটোকলের পরিচিত দুর্বলতাগুলো এটিকে সংবেদনশীল কিছুর জন্য অনুপযুক্ত করে, তাই এটি কেবল এমন অ্যাপ্লায়েন্সের জন্য রাখুন যা আর কিছু দেয় না। ক্লায়েন্ট দর কষাকষির সময় GRE লক্ষ্য করুন, অনুমানের বদলে সংক্ষিপ্ত ক্যাপচার দিয়ে। সবচেয়ে বেশি সময় নষ্ট করা ব্যর্থতাটি প্রমাণীকরণ নয়, বরং অনুপস্থিত ডেটা পথ।
pppd call branch-office
tcpdump -ni any proto gre -c 5
সেটআপ শেষ হলে আর লিংক কখনো ট্রাফিক বহন না করলে, শংসাপত্রে হাত দেওয়ার আগে GRE পথ সন্দেহ করুন। ক্লাউড সিকিউরিটি গ্রুপের প্রোটোকল 47-এর জন্য স্পষ্ট নিয়ম দরকার, আর কিছু নেটওয়ার্ক এটি দৃশ্যমান ত্রুটি ছাড়াই পুরোপুরি ব্লক করে। আপনি সত্যিই যে নেটওয়ার্ক ব্যবহার করবেন সেখান থেকেই পরীক্ষা করুন, সব কিছু অনুমোদন করা কোনো ল্যাব থেকে নয়।
L2TP/IPsec: একটি মিলে যাওয়া প্রস্তাব দশটি চেষ্টাকে হারায়
ডেস্কটপ ডায়ালগের বদলে ডেমন লগ পড়ুন, কারণ ডায়ালগ কয়েকটি আলাদা ব্যর্থতাকে এক বার্তায় মিলিয়ে দেয়। NO_PROPOSAL_CHOSEN ত্রুটি প্রথম ধাপের: ক্লায়েন্ট এমন এনক্রিপশন, হ্যাশ বা Diffie-Hellman গ্রুপ দিয়েছে যা সার্ভার গ্রহণ করবে না। অ্যাপ্লায়েন্স কী সমর্থন করে তা তালিকাভুক্ত করুন আর তার সাথে মেলে এমন একটি প্রস্তাব লিখুন, কারণ এলোমেলো সমন্বয় সাধারণত একই ত্রুটি আরও ধীরে দেয়। ডেস্কটপে ব্যবহারিক ক্লায়েন্ট হলো NetworkManager L2TP প্লাগইন, নিচে strongSwan বা Libreswan নিয়ে।
একটি প্রস্তাব স্ট্রিং ডেস্কটপ প্লাগইনের কাছে যা বোঝায়, যে ডেমনকে কাজটি হস্তান্তর করা হয় তার কাছে তা অন্য কিছু বোঝাতে পারে, তাই আপনি যে স্তর সম্পাদনা করছেন তার সাথে মানানসই সিনট্যাক্স রাখুন। অ্যাপ্লায়েন্স যদি টানেল সিক্রেটও দাবি করে, তবে সেটি IPsec কী থেকে আলাদা ধাপ। ইন্টারফেস কোনটি চাইছে তা নিশ্চিত করুন, তারপর কিছু টাইপ করুন।
XAuth সহ আক্রমণাত্মক IKEv1, এবং পোর্টালের ক্ষেত্র
FortiGate-ধরনের এন্ডপয়েন্ট সাধারণত চায় XAuth সহ আক্রমণাত্মক মোড এবং কনফিগার্ড-মোড ঠিকানা, যা একটি গ্রাফিক্যাল প্লাগইন আদৌ নাও দেখাতে পারে। নেটিভ ডেমন এটি সামলায়, আর নিচের ব্লকটি সম্পূর্ণ ফাইল নয়, ওই কনফিগারেশনের আকার। প্রস্তাবের মানগুলোর জন্য ভেন্ডরের সাম্প্রতিক ডকুমেন্টেশন দেখুন।
conn branch
keyexchange=ikev1
aggressive=yes
leftauth=psk
leftauth2=xauth
leftsourceip=%config
right=203.0.113.10
পুরোনো strongSwan সংস্করণে xauth=client ব্যবহৃত হতো যেখানে সংস্করণ 5-এ leftauth2=xauth, তাই কপি করা স্নিপেট কেবল সিনট্যাক্সেই ব্যর্থ হতে পারে। TLS পোর্টালের জন্য AnyConnect প্রোটোকল বলা openconnect Cisco আর বেশিরভাগ রিব্র্যান্ড সামলায়, আর এর জন্য TUN ডিভাইস এবং তা কনফিগার করার অধিকার দরকার। পোর্টালের ঠিকানা ব্রাউজার যেভাবে দেখায় ঠিক সেভাবেই দিন, অ্যাপ্লায়েন্স যে পথ আশা করে তা সহ, তারপর তার পিছনে কিছু পরীক্ষা করার আগে বরাদ্দ ঠিকানাটি দেখুন। আগে থেকে ইন্টারফেস তৈরি করা সেটআপের সময় এক ধরনের অপ্রত্যাশিততা দূর করে।
sudo ip tuntap add dev tun0 mode tun
sudo openconnect --protocol=anyconnect vpn.example.com
সংযোগ করুন, তারপর নির্দিষ্ট ক্রমে যাচাই করুন
একসাথে ঠিক একটি VPN ম্যানেজার চালান, কারণ একটি NetworkManager প্রোফাইল আর হাতে চালানো ডেমন রুট আর DNS নিয়ে লড়াই করবে। ম্যানুয়াল সংযোগ পরীক্ষার আগে প্রোফাইল নামিয়ে দিন, আর নিশ্চিত করুন পুরোনো টানেল ইন্টারফেস টিকে নেই। তারপর এই ক্রমে যাচাই করুন: টানেল ঠিকানা, আপনার দরকারি একমাত্র অভ্যন্তরীণ হোস্টের রুট, নাম সমাধান, এবং শেষে একটি প্রকৃত অনুরোধ। সবুজ আইকন প্রমাণীকরণ প্রমাণ করে, আর কিছুই নয়।
ip -4 addr show tun0
ip route get 10.20.30.10
getent hosts app.internal
কোনো ধাপ ব্যর্থ হলে পরেরটি পরীক্ষা না করে সেখানেই থামুন, কারণ ভাঙা রুটের নিচের দিকে DNS ব্যর্থতা আপনাকে কিছুই শেখায় না। পরীক্ষা করার আগে কাজ করা প্রোফাইলের একটি কপি রাখুন, কারণ মুছে ফেলা সংযোগ ফাইল হারানো সহজ আর পুনর্গঠন ক্লান্তিকর। প্রস্তাবের মানগুলো অ্যাপ্লায়েন্স মডেল ও ফার্মওয়্যার সংস্করণের সাথে একই নোটে রাখুন, কারণ বাক্সটি বদলালে ওই নোটই মাইগ্রেশন আর প্রত্নতত্ত্ব প্রকল্পের মধ্যে পার্থক্য।