স্প্লিট টানেল পাবলিক হোস্টকে ASA-র NAT নিয়ম থেকে মুক্তি দেয় না
একটি split-include রুট পাবলিক হোস্টকে টানেলে টেনে আনে, যেখানে ASA-কে হেয়ারপিন করতে এবং সোর্স অনুবাদ করতে হয়। দুটির যেকোনো একটি ধাপ বাদ দিলে ফ্লো বন্ধ হয়ে যায়।
স্প্লিট টানেলিংকে সাধারণত এভাবে বর্ণনা করা হয়: কর্পোরেট ট্রাফিক টানেলের ভেতরে রাখা আর ইন্টারনেটের বাকি অংশ ফায়ারওয়ালের বাইরে রাখা। এই বর্ণনার দুই অর্ধই একইভাবে ভুল। স্প্লিট টানেলিং হলো ক্লায়েন্টের নেওয়া একটি রুট সিদ্ধান্ত, আর রুট সিদ্ধান্ত প্যাকেট হেডএন্ডে পৌঁছানোর পরে তার কী হবে সে সম্পর্কে কিছুই বলে না।
পাবলিক ঠিকানায় থাকা একটি পার্টনার সার্ভিস, যা আপনার সদর দপ্তরের ঠিকানা দেখতে জোর দেয়, এই গল্প ভাঙার জন্য যথেষ্ট।
মিথ: স্প্লিট টানেল ফায়ারওয়ালকে পথ থেকে সরিয়ে দেয়
ধারণা হলো, প্রাইভেট রেঞ্জের বাইরের যেকোনো গন্তব্য স্থানীয় ইন্টারনেট সংযোগেই থাকে, ফলে ফায়ারওয়াল তা কখনো দেখে না এবং তার জন্য কখনো নিয়মের দরকার হয় না। এটি কেবল তখনই সত্য, যখন গন্তব্যটি টানেল তালিকায় থাকে না। যেই মুহূর্তে একজন অপারেটর split-include ACL-এ একটি পাবলিক হোস্ট যোগ করেন, ক্লায়েন্ট সেই ট্রাফিক টানেলে পাঠায়, আর ASA-কে তা অন্য যেকোনো ডিক্রিপ্ট করা ফ্লোর মতো রুট, ফিল্টার ও অনুবাদ করতে হয়। ক্লায়েন্টে গন্তব্য তালিকা ছাড়া কিছুই বদলায়নি।
ক্লায়েন্ট রাউটার হয়ে ওঠেনি। সে আপনার দেওয়া নীতিই অনুসরণ করেছে।
split-include রুট আসলে কী করে
Cisco ASA রিমোট-অ্যাক্সেস সেটআপে গ্রুপ পলিসি বহন করে split-tunnel-policy tunnelspecified এবং একটি split-tunnel-network-list, যা একটি স্ট্যান্ডার্ড ACL-এর নাম দেয়। সেই ACL-এর প্রতিটি permit লাইন হলো এমন গন্তব্য যা ক্লায়েন্টের টানেলে পাঠানো উচিত, আর বাকি সব স্থানীয় ডিফল্ট রুট ব্যবহার করতেই থাকে।
একটি হোস্ট যোগ করা এক লাইনের কাজ, এবং পরিবর্তনের যে অংশটি ক্লায়েন্ট দেখতে পায় সেটি কেবল এটিই: access-list RA-SPLIT standard permit host 203.0.113.20।
এরপর ক্লায়েন্ট আবার সংযোগ করুন। সংযোগের সময়েই নীতিটি বিনিময় হয়, তাই প্রতিষ্ঠিত সেশন পুরোনো তালিকা ধরে রাখে এবং পরিবর্তনটি কিছুই করেনি বলে মনে হয়।
প্যাকেট একই ইন্টারফেসে আসে ও যায়
এখন ডিক্রিপশনের পরে ফ্লো অনুসরণ করুন। প্যাকেটটি VPN টানেল দিয়ে বাইরের ইন্টারফেসে ঢুকেছে, এর গন্তব্য একটি পাবলিক ঠিকানা, আর রাউটিং টেবিল সেটিকে একই বাইরের ইন্টারফেস দিয়ে আবার ইন্টারনেটের দিকে পাঠায়। এক ইন্টারফেসে ঢুকে বেরিয়ে যাওয়া ট্রাফিক বাদ পড়ে, যদি না ASA-কে তা অনুমোদন করতে বলা হয়, এবং same-security-traffic permit intra-interface ঠিক সেটাই করে। এটি ছাড়া সংযোগটি এমনভাবে ব্যর্থ হয় যা রাউটিং সমস্যার মতো দেখায়, কিন্তু তা নয়।
এই সেটিংটি গ্লোবাল। এটি যেকোনো প্রয়োজনীয় ফ্লোর জন্য হেয়ারপিনিং অনুমোদন করে, কেবল এই পার্টনার হোস্টের জন্য নয়, তাই এটি দ্রুত পরীক্ষার বদলে পর্যালোচিত পরিবর্তনের অংশ হওয়া উচিত।
কেন গন্তব্য-সীমিত PAT ঐচ্ছিক নয়
ডিক্রিপ্ট করা প্যাকেটের সোর্স ঠিকানা এখনো ক্লায়েন্টের VPN ঠিকানা, সাধারণত 10.77.0.0/24-এর মতো একটি পুল থেকে। এই ঠিকানার পাবলিক ইন্টারনেটে কোনো রুট নেই, তাই পার্টনার হয় কখনো উত্তর দেয় না, নয়তো কোথাও না পৌঁছে উত্তর দেয়।
অনুবাদ সোর্স ঠিক করে আর গন্তব্য অপরিবর্তিত রাখে। যেহেতু অবজেক্টগুলো ইতিমধ্যে অন্যত্র সংজ্ঞায়িত, এই গন্তব্যে সীমিত একটি ম্যানুয়াল নিয়মের রূপ এমন:
same-security-traffic permit intra-interface
object network RA_POOL
subnet 10.77.0.0 255.255.255.0
object network PARTNER_HOST
host 203.0.113.20
nat (outside,outside) source dynamic RA_POOL interface destination static PARTNER_HOST PARTNER_HOSTdestination static অংশটি গুরুত্বপূর্ণ। এটি বাদ দিলে নিয়মটি একটি বিস্তৃত অনুবাদে পরিণত হয় যা উদ্দেশ্যের চেয়ে অনেক বেশি ট্রাফিকের সঙ্গে মিলতে পারে, আর ক্রমে আগে থাকা বিস্তৃত identity নিয়ম এটিকে সম্পূর্ণভাবে হারিয়ে দিতে পারে। আপনার নিয়মটিই মিলছে বলে ধরে নেওয়ার আগে show nat detail এবং সেকশনের ক্রম যাচাই করুন।
ইন্টারফেস PAT-এর অর্থ হলো পার্টনার ASA ইন্টারফেসের ঠিকানা দেখে, যা আপস্ট্রিমে আবার অনূদিত হতে পারে। চুক্তিতে কোনো ঠিকানার নাম থাকলে তা এক হপে নয়, শুরু থেকে শেষ পর্যন্ত যাচাই করুন।
সঠিক পরীক্ষার গন্তব্য দিয়ে এটি প্রমাণ করুন
সাধারণ what-is-my-ip পৃষ্ঠা নয়, পার্টনার হোস্টটিকেই ব্যবহার করুন। সেই পৃষ্ঠা প্রায় নিশ্চিতভাবে split তালিকার বাইরে, তাই এটি আপনার স্থানীয় ইন্টারনেট ঠিকানা দেখায় এবং এই পথ সম্পর্কে কিছুই বলে না। পার্টনার সার্ভিসে নতুন সংযোগ খুলে তাদের জিজ্ঞাসা করুন তারা কোন সোর্স দেখেছে, অথবা packet-tracer input outside tcp 10.77.0.10 12345 203.0.113.20 443 detailed চালিয়ে NAT ও রাউটিং ধাপগুলো লাইন ধরে পড়ুন। ক্লায়েন্ট থেকে traceroute দুর্বলতর যাচাই, কারণ এটি ইতিমধ্যে ঘটে যাওয়া পথ দেখায়, যে নীতি তা বেছে নিয়েছে তা নয়।
তারপর যাচাই করুন কী বদলানো উচিত নয়। একটি সাধারণ ওয়েবসাইটকে এখনো স্থানীয় সংযোগ দিয়েই বেরোতে হবে, আর টানেল তালিকার একটি প্রাইভেট রিসোর্সকে এখনো পৌঁছানো যেতে হবে। পার্টনার ঠিক করে এ দুটির যেকোনোটি ভাঙা পরিবর্তন হলো ভিন্ন একটি বাগ।
এই ডিজাইনের কাজ করা সংস্করণ সংক্ষিপ্ত: split ACL-এ একটি হোস্ট, হেয়ারপিন অনুমতি, গন্তব্য-সীমিত একটি PAT নিয়ম। গল্পের বাকি সবই মিথ।