প্রথমবার হুকটি কাজ করে, আর তিনবার পুনরায় সংযোগের পর চেইনে একই নিয়মের তিনটি কপি জমা হয়। সশব্দে কিছুই ব্যর্থ হয়নি; স্ক্রিপ্ট প্রতিবার চলার সময় শুধু যা বলা হয়েছিল তাই করেছে। একটি VPN হুক হলো একটি কনফিগারেশন অপারেশন যা একাধিকবার চলতে পারে, তাই এর একটি মালিক, একটি কাঙ্ক্ষিত অবস্থা এবং একটি ক্রমিক পরিবর্তন দরকার। এই ক্রমে এগিয়ে যান, আর নকলগুলো থেমে যাবে।

কোনো নিয়ম লেখার আগে নিয়মগুলোর একটি মালিক দিন

একটি নিয়ম লেখার আগেই ঠিক করুন এই ইন্টিগ্রেশন কোন চেইন বা টেবিলের মালিক। হুক যে নিজস্ব চেইন তৈরি ও খালি করে, সেটিই মালিকানার সবচেয়ে স্পষ্ট রূপ, কারণ পরিষ্কার করা তখন অন্য কারও নীতি স্পর্শ না করেই সেই চেইনটি সরাতে পারে। যদি শেয়ার করা চেইনে নিয়ম যোগ করতেই হয়, তবে সেগুলোতে মন্তব্য বসান যাতে পরে কোনো অনুসন্ধান ঠিক আপনারগুলোই খুঁজে পায়। মালিকানাই টিয়ারডাউনকে নিরাপদ করে, আর টিয়ারডাউনই সেই অংশ যা নীরবে ব্যর্থ হয়।

iptables -N VPN_HOOK 2>/dev/null || true
iptables -C INPUT -j VPN_HOOK 2>/dev/null || iptables -I INPUT -j VPN_HOOK
iptables -S VPN_HOOK

এখানে মন্তব্য কোনো সাজসজ্জা নয়। এটি আপনার নিয়ম সরানো আর হঠাৎ দেখতে মিলে যাওয়া কোনো নিয়ম সরানোর মধ্যে পার্থক্য গড়ে, এবং এটি সংরক্ষিত নিয়মসেটে টিকে থাকে। মন্তব্যটি একবার একটি ভেরিয়েবলে লিখুন এবং যোগ, পরীক্ষা বা মুছে ফেলা প্রতিটি কমান্ডে একই স্ট্রিং ব্যবহার করুন।

আবার যোগ না করে কাঙ্ক্ষিত অবস্থা পরীক্ষা করুন

টানেল চালু থাকার সময় কী থাকা উচিত তা লিখে রাখুন: কোন ইন্টারফেস, কোন উৎস ও গন্তব্য, কোন প্রোটোকল ও কোন পোর্ট। তারপর প্রতিটি নিয়মকে একটি পরীক্ষা ও তারপর একটি সন্নিবেশ হিসেবে প্রকাশ করুন, যাতে দ্বিতীয়বার চললে নিয়মটি পাওয়া যায় এবং কিছুই করা না হয়। চেক কমান্ড নিয়মটি থাকলে শূন্য দিয়ে শেষ হয়, এবং স্ক্রিপ্টের ঠিক এই সংকেতটিই দরকার। iptables রেফারেন্স এখানে ব্যবহৃত চেক, অ্যাপেন্ড ও ইনসার্ট রূপগুলো নথিভুক্ত করে।

iptables -C VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT ||
  iptables -A VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT

অবস্থান নিয়ে সতর্ক থাকুন। একটি নিয়ম পরীক্ষা করে মাথায় সন্নিবেশ করা আগে আসা একটি ইচ্ছাকৃত প্রত্যাখ্যানের সামনে অনুমোদন সরিয়ে দিতে পারে, ফলে দ্বিতীয়বার চলা কিছু যোগ না করেও আচরণ বদলে দেয়। নিজের চেইনের ভেতরে শেষে যোগ করুন, আর সেই চেইনে লাফের অবস্থান দিয়ে ক্রম নিয়ন্ত্রণ করুন। যদি চেইনের ভেতরে ক্রম গুরুত্বপূর্ণ হয়, নিয়ম ধরে ধরে তালি না দিয়ে একটি জানা তালিকা থেকে চেইনটি নতুন করে গড়ুন।

যে নিয়মটি দরকার তা যদি স্থিতিশীল পরীক্ষা হিসেবে প্রকাশ করা না যায়, তবে থামুন। এর অর্থ সাধারণত কাঙ্ক্ষিত অবস্থা এখনো অস্পষ্ট।

টিকে থাকার আশা না করে পরিবর্তনটি ক্রমিক করুন

হুকের দুটি আহ্বান ওভারল্যাপ করতে পারে, এবং কোনোটিই যোগ করার আগে দুটোই একটি অনুপস্থিত নিয়ম দেখতে পারে। xtables-এর অপেক্ষা অপশন একটি কমান্ডকে লকের জন্য অপেক্ষা করায়, কিন্তু দুটি কমান্ড জুড়ে পরীক্ষা-তারপর-যোগ ক্রমকে পারমাণবিক করে না। পুরো অপারেশনটি নিজের লক দিয়ে ক্রমিক করুন, বা এমন একটি ম্যানেজার ব্যবহার করুন যা ঘোষিত ব্যাচকে একটি লেনদেন হিসেবে প্রয়োগ করে। nftables পরেরটি করতে পারে, আর যেখানে এটি পাওয়া যায় সেখানে হোস্টে এটিকে প্রাধান্য দেওয়ার একটি কারণ এটিই।

flock /run/vpn-hook.lock /usr/local/sbin/vpn-firewall-apply
nft -f /etc/nftables/vpn-hook.nft

যে প্রক্রিয়াই বেছে নিন, সমালোচনামূলক অংশটি ছোট রাখুন এবং পুনঃপ্রবেশযোগ্য করুন: যে হুক মাঝপথে ব্যর্থ হয় তা আবার চালানো নিরাপদ হওয়া উচিত। ফলাফল লগ করুন যাতে বারবার চলা নিয়মের সংখ্যা থেকে অনুমান না করে জার্নালে দেখা যায়। যদি দুই ভিন্ন সুপারভাইজার হুকটি আহ্বান করতে পারে, আগে সেটিই ঠিক করুন; কোনো লক দুই মালিককে সারায় না।

শুধু নিজের মালিকানার জিনিস ভাঙুন

টিয়ারডাউনকে একটি প্রতিস্থাপন সংযোগকে সে যেটি অবসর দিয়েছে তার থেকে আলাদা করতে হবে, এবং এমন ঘটনা পেরোতে হবে যা কখনোই ভদ্র পরিষ্কার পায় না। যে শনাক্তকারী দিয়ে যোগ করেছিলেন সেগুলো দিয়েই মুছুন, আর পরিষ্কার সহজ করতে কখনো শেয়ার করা চেইন খালি করবেন না। কঠিন থামার পর, ডাউন হুক চলেছে ধরে না নিয়ে পরের শুরুতে একটি পুনর্মিলন পাস চালান।

iptables -D VPN_HOOK -i tun0 -p tcp --dport 443 -j ACCEPT
iptables -F VPN_HOOK
ip -brief link show type tun

ইন্টারফেসের আয়ুষ্কালও নকশার অংশ। পুনরায় সংযোগ ভিন্ন নামের একটি ডিভাইস তৈরি করতে পারে, ফলে দ্বিতীয় টানেলের নাম হার্ডকোড করা নিয়মটি বৈধ দেখতে দেখতে পুরোনো হয়ে যায়। সংযোগ যে পরিচয় নিজেই প্রকাশ করে সেটিকেই প্রাধান্য দিন, আর প্রতিবার চালানোর সময় তা আবার পড়ুন। তিনটি ঘটনা আলাদাভাবে পরীক্ষা করুন: পুনরাবৃত্ত সংযোগ, প্রতিস্থাপন সংযোগ এবং শাটডাউন। অনুমোদিত ট্রাফিক তিনটিই নকল ছাড়া পেরোবে, আর অসম্পর্কিত সেবা অক্ষত থাকবে।

হুকের একটি মালিক, সে যে প্রতিটি নিয়ম যোগ করে তার জন্য একটি পরীক্ষা, একটি ক্রমিক পথ এবং কেবল নিজের অবস্থা সরানো একটি টিয়ারডাউন হয়ে গেলেই এই হাঁটাপথ শেষ হয়। যে হুক দুইবার চালানো নিরাপদ, তা একবার চতুর হুকের চেয়ে বেশি মূল্যবান।

সম্পর্কিত নিবন্ধ