আপনি জিজ্ঞাসা করেছিলেন: " এই সমস্যাটি প্রথম স্থানে কেন ঘটে যায় কেউ ব্যাখ্যা করতে পারেন? "
অফিসিয়াল ওপেনভিপিএন এফএকিউ-র প্রতিবেদনের উপর ভিত্তি করে আমি বাজি ধরেছি যে এটি ওপেনভিপিএন ইঞ্জিনের মধ্যে একটি রাউটিং সমস্যার কারণে ঘটেছে।
দৃশ্যের আরও ভালভাবে স্পষ্ট করতে নীচের চিত্রটি উল্লেখ করুন:
এখানে আপনি দেখতে পারেন:
- HEADQUARTER অভ্যন্তরীণ নেটওয়ার্কের সাথে সংযুক্ত একটি ওপেনভিপিএন "সার্ভার" (10.0.1.0/24)
- একটি ওপেনভিপিএন "ক্লায়েন্ট" একটি দূরবর্তী সাইটে চলমান, এবং দূরবর্তী 192.168.1.0/24 নেটওয়ার্কের সাথে সংযুক্ত
এছাড়াও
- আমরা ধরে নিচ্ছি যে ওপেনভিপিএন টানেলটি প্রতিষ্ঠিত হয়েছে এবং:
- ওপেনভিপিএন "সার্ভার" তার নিজস্ব টিউন ইন্টারফেসের মাধ্যমে 10.10.0.1 ঠিকানার মাধ্যমে পৌঁছানো যায় । এছাড়াও টি 2 পি ঠিকানা, টিউন ইন্টারফেস দ্বারা ব্যবহৃত হয় 10.10.0.2 ( এটি পরবর্তী আলোচনার জন্য গুরুত্বপূর্ণ, সুতরাং আসুন এটির উপর জোর দিন )
- ওপেনভিপিএন "ক্লায়েন্ট" এর আইপি 10.10.0.2 এর সাথে একটি সুরের ইন্টারফেস রয়েছে
এখন, ধরে নেওয়া যাক:
- ওপেনভিপিএন "ক্লায়েন্ট" এটির ডিফল্ট গেটওয়েটিকে নতুনভাবে সংজ্ঞায়িত করেছে, তাই টানেলের মধ্যে সমস্ত বহির্গামী আইপি ট্র্যাফিক পুনর্নির্দেশ করতে;
- ওপেনভিপিএন "ক্লায়েন্ট" এ আইপি_ফোরওয়ার্ডিং সক্ষম করেছে এবং এর মতো, অভ্যন্তরীণ ল্যান থেকে আগত প্যাকেটগুলি রুট করতে পারে (192.168.1.0/24) ( আমি এই বিষয়টির উপর জোর দিচ্ছি, কারণ এটি আমাদের আলোচনার জন্য গুরুত্বপূর্ণ )।
এ জাতীয় দৃশ্যধারণের জায়গায়, আসুন, বিশদভাবে পরীক্ষা করে দেখি যে আরএপসিসি 1 (192.168.1.2) এলপসিসি 1 (10.0.1.2) এ ইকো-অনুরোধের মতো একটি প্যাকেট প্রেরণ করবে তখন:
- আরএপসিসি 1 এনআইসি ছাড়ার পরে, প্যাকেটটি ওপেনভিপিএন ক্লায়েন্টে পৌঁছে;
- ওপেনভিপিএন ক্লায়েন্ট (এটি একটি সাধারণ রাউটার হিসাবে কাজ করার জন্য কনফিগার করা হয়েছে), এটির রাউটিং টেবিল অনুযায়ী এটি রুট করুন। এটির ডিফল্ট-গেটওয়েটি সুড়ঙ্গ হওয়ায় এটি প্যাকেটটি টানেলের কাছে প্রেরণ করে;
- প্যাকেট ওপেনভিপিএন সার্ভারের টিউন ইন্টারফেসে পৌঁছেছে। ওপেনভিপিএন এটি "দেখবে" এবং যেমন এটি (ওপেনভিপিএন সার্ভার) জানে যে 10.0.1.2 টি এটির ল্যান সাবনেটের একটি ঠিকানা, এটি প্যাকেটটি "টিআরএন" থেকে লুন পর্যন্ত;
- প্যাকেট L_PC1 এ পৌঁছেছে।
সুতরাং সবকিছু ঠিক আছে ...
এখন আসুন পরীক্ষা করুন যে এলএপসি 1 R_PC1 কে উত্তর দেয় এমন প্রতিধ্বনির সাথে কী হয়।
- ইকো-জবাব L_PC1 NIC ছেড়ে যায় এবং ওপেনভিপিএন সার্ভার ল্যান ইন্টারফেসে পৌঁছে (10.0.1.1);
এখন, আমরা যদি ওপেনভিপিএন সার্ভারটি প্রত্যন্ত সাইটে পৌঁছাতে সক্ষম হতে চাই, তবে আমাদের একটি "স্থির রুট" দিয়ে রাউটিংটি সংজ্ঞায়িত করতে হবে। কিছুটা এইরকম:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.10.0.2
গেটওয়ে হিসাবে ব্যবহৃত পি 2 পি ঠিকানা দয়া করে নোট করুন ।
এ জাতীয় স্থিতিশীল রুটগুলি ওএস-স্তরে পরিচালিত হবে। অন্য কথায়, অপারেটিং সিস্টেমের সঠিকভাবে প্যাকেটটি রুট করার জন্য এটি প্রয়োজন। এর অর্থ এইরকম: "দয়া করে, 192.168.1.0/24 সাবनेटকে সম্বোধন করা সমস্ত ট্র্যাফিকের ওপেনভিপিএন ইঞ্জিনে ফরোয়ার্ড করা দরকার, যার সাথে ওএস পি 2 পি ঠিকানার মাধ্যমে কথা বলতে সক্ষম হয়"। এই ধরণের স্থিতিশীল রুটের জন্য ধন্যবাদ, এখন ...
- প্যাকেটটি ওএস-রাউটিং প্রসঙ্গে ছেড়ে যায় এবং ওপেনভিপিএন-এ পৌঁছে যায়। ওপেনভিপিএন সার্ভারে চলছে ওপেনভিপিএন দৃষ্টান্ত। সুতরাং, এই মুহুর্তে, ওএসের আরও কিছু করার নেই এবং সমস্ত রাউটিং (ভিপিএন এর মধ্যে) ওপেনভিপিএন সার্ভার সফ্টওয়্যারটিতে ছেড়ে যায়।
সুতরাং, এখন, সমস্যাটি হল: কীভাবে, ওপেনভিএনপি সার্ভার সফ্টওয়্যার, এসআরসি_আইপি 10.0.1.2 এবং ডিএসআইআইপি 192.168.1.2 দিয়ে কোনও প্যাকেটের রুট নির্ধারণ করতে সক্ষম হবে ?
দয়া করে মনে রাখবেন যে ওপেনভিপিএন সার্ভারের কনফিগারেশনের উপর ভিত্তি করে এটি 192.168.1.0/24 নেটওয়ার্ক বা 192.168.1.2 হোস্ট সম্পর্কে কিছুই জানে না । এটা না একটি সংযুক্ত ক্লায়েন্ট। এটা না একটি স্থানীয় ক্লায়েন্ট। এবং তাই? VPN খুলুন, এছাড়াও, জানে যে এটা না "অপারেটিং সিস্টেম-রাউটার", তাই এটি সত্যিই চায় না (এবং .... পারেন) স্থানীয় গেটওয়েতে প্যাকেট ফেরত পাঠাতে। সুতরাং এখানে একমাত্র বিকল্পটি একটি ত্রুটি বাড়ানো। ঠিক আপনি যে ত্রুটিটি ভোগ করছেন তা ঠিক
এফএকিউ এর ভাষায় এটি বলতে: " ... এই মেশিনে প্যাকেটটি কীভাবে চালানো যায় তা এটি জানে না, সুতরাং এটি প্যাকেটটি ফেলে দেয় ... "।
কীভাবে আমরা সমস্যার সমাধান করতে পারি?
আপনি যেমন অফিসিয়াল ডকুমেন্টেশন থেকে দেখতে পাচ্ছেন , অপ্রয়োজনীয় বিকল্পটি আমাদের ক্ষেত্রের জন্য সঠিকভাবে কাজ করে:
--iroute network [netmask]
Generate an internal route to a specific client. The netmask
parameter, if omitted, defaults to 255.255.255.255.
This directive can be used to route a fixed subnet from the server
to a particular client, regardless of where the client is
connecting from. Remember that you must also add the route to the
system routing table as well (such as by using the --route
directive). The reason why two routes are needed is that the
--route directive routes the packet from the kernel to OpenVPN.
Once in OpenVPN, the --iroute directive routes to the specific
client.
সুতরাং আপনার একটি প্রয়োজন:
--iroute 192.168.1.0 255.255.255.0
প্রয়োগ করতে হবে (সার্ভারের সাথে) যখন আপনার ওপেনভিপিএন ক্লায়েন্ট সংযোগ করে, উদাহরণস্বরূপ সার্ভারে সংজ্ঞায়িত অ্যাড-হক কনফিগারেশন ফাইলের মাধ্যমে (ক্লায়েন্ট-কনফিগারেশন-ডির, ইত্যাদি)।
আপনি আশ্চর্য উচিত কেন এই সমস্যা নেই না পদক্ষেপ 2 ঘটে) সর্বোপরি, আমার বোঝার যে VPN খুলুন ক্লায়েন্ট হয় জানেন কিভাবে এটা রুট, 'কারণ এটা জানে যে VPN এর টানেল একটি ডিফল্ট-গেটওয়ে প্রত্যাবর্তন করতে হবে।
ওপেনভিপিএন সার্ভারে একই কাজ করা যায় না, কারণ সেখানে ডিফল্ট গেটওয়ে টিপিকভাবে ওভাররাইড হয় না । এছাড়াও, বিবেচনা করুন যে আপনার প্রচুর ওপেনভিপিএন ক্লায়েন্ট সহ একটি ওপেনভিপিএন সার্ভার থাকতে পারে: প্রতিটি ক্লায়েন্ট কীভাবে সার্ভারে পৌঁছতে জানেন তবে ... সার্ভার, কীভাবে ক্লায়েন্টটি কোনও অজানা সাবনেটের গেটওয়ে হিসাবে কাজ করতে পারে তা সিদ্ধান্ত নিতে পারে?
আপনার প্রথম প্রশ্ন হিসাবে ( প্রয়োজনীয় নিয়মগুলি জেনেরিক / এক-অফ উপায়ে লেখা যেতে পারে? ), আমি দুঃখিত তবে আমি আপনার খুব সমস্যা হচ্ছি না। আপনি কি আরও বিশদ বিবরণ প্রদান করতে পারেন?