আইপিটিবেলগুলি এই ধরণের কাজের জন্য তৈরি হয় না, যেখানে এই সিদ্ধান্তগুলি নেওয়ার জন্য প্রচুর এবং প্রচুর প্যাকেট বিশ্লেষণ করা দরকার। আইপিটাবলস যদিও আংশিক উত্তর!
এর প্রকৃত উত্তর হ'ল লিনাক্সের দুর্দান্ত এবং আন্ডারভুক্ত ট্র্যাফিক নিয়ন্ত্রণ সুবিধা। নোট করুন যে কী চলছে তা জেনেও এটিকে ঘিরে কাজ করার ফলে আপনি মেশিনের সাথে নেটওয়ার্ক সংযোগ হারাতে পারেন! তোমাকে সতর্ক করা হল!
ধরে নেওয়া হচ্ছে এথ0 বহির্গামী ডিভাইস আপনার একটি শ্রেণিভিত্তিক ট্র্যাফিক কন্ট্রোল সারি তৈরি করতে হবে যা ডিফল্টরূপে 'দ্রুত' সারিটির মাধ্যমে সর্বাধিক ট্র্যাফিক আউটপুট আনে এবং নির্দিষ্ট ধরণের লোককে 'ধীর' কাতারে রাখবে।
এর সৌন্দর্য হ'ল আপনি এমন পরিস্থিতি তৈরি করতে পারবেন যার মাধ্যমে ধীর ব্যবহারকারীর জন্য আপনি প্রচুর আউটবাউন্ড ট্র্যাফিকের অনুমতি না দিলে যদি না ওভাররাইডিং ক্লাস ব্যান্ডউইদথ না চায় তবে এই উদাহরণটি এটি করে না (ধীর ব্যবহারকারীদের সর্বদা 10 কেবিপিএস সরবরাহ করবে)। সারিবদ্ধ সিস্টেমটি এরকম কিছু দেখবে:
Inbound traffic
+
|
|
v
+------------------+
| Class 1:1 |
|------------------|
| Root (all flows)|
| 100mbit |
+-----+-----+------+
| |
| |
| |
| |
| |
+----------+ | | +----------+
| 1:11 +-----+ +-----+ 1:12 |
|----------| |----------|
| Default | | Slow |
|100mb-80kb| | 80kb |
+----------+ +----------+
এটি করার জন্য, প্রথমে আপনাকে কার্নেলের মধ্যে সারি সারি শৃঙ্খলা সেটআপ করতে হবে। নিম্নলিখিত আপনার জন্য এটি করবে .. আপনার অবশ্যই এটি পুরো স্ক্রিপ্ট হিসাবে চালানো উচিত
#!/bin/bash
tc qdisc add dev eth0 parent root handle 1: hfsc default 11
tc class add dev eth0 parent 1: classid 1:1 hfsc sc rate 100mbit ul rate 100mbit
tc class add dev eth0 parent 1:1 classid 1:11 hfsc sc rate 99920kbit ul rate 100000kbit
tc class add dev eth0 parent 1:1 classid 1:12 hfsc sc rate 80kbit ul rate 80kbit
tc qdisc add dev eth0 parent 1:11 handle 11:1 pfifo
tc qdisc add dev eth0 parent 1:12 handle 12:1 pfifo
"ডিফল্ট 11" গুরুত্বপূর্ণ কারণ এটি কার্নেলকে জানিয়েছে যে শ্রেণিবদ্ধ নয় ট্র্যাফিকের সাথে কী করা উচিত।
এটি হয়ে গেলে, আপনি নির্দিষ্ট আইনের সাথে মেলে এমন প্যাকেটগুলিকে শ্রেণীবদ্ধ করার জন্য একটি আইপটবেবল বিধি সেটআপ করতে পারেন। যদি আপনি এই ধীর নিয়মে প্রচুর এবং প্রচুর লোক রাখার পরিকল্পনা করেন তবে একটি আইপসেট নিয়ম আরও উপযুক্ত (যা বিশ্বাস করি রেল 6 এ উপলব্ধ হওয়া উচিত)।
সুতরাং, এর বিপরীতে মিলটি করার জন্য একটি আইপসেট ডাটাবেস তৈরি করুন ...
ipset create slowips hash:ip,port
তারপরে ম্যাচটি করার জন্য iptables নিয়ম তৈরি করুন ..
iptables -t mangle -I OUTPUT -m set --match-set slowips dst,src -j CLASSIFY --set-class 1:12
এটি কার্নেলকে নির্দেশ দেয় যে আপনি যদি সেট থেকে উত্স পোর্টের সাথে গন্তব্য আইপিটির সাথে মেলে, তবে ট্র্যাফিক নিয়ন্ত্রণের মাধ্যমে সেটআপ করা ধীর কাতারে শ্রেণিবদ্ধ করুন।
এখন, অবশেষে যখনই আপনি কোনও আইপি ধীর করতে চান আপনি সেটগুলিতে আইপি যুক্ত করতে আইপসেট কমান্ডটি ব্যবহার করতে পারেন:
ipset add slowips 192.168.1.1,80
ipset add slowips 192.168.1.1,21
...
"Tc -s class show dev eth0" কমান্ডটি ব্যবহার করে এটি পরীক্ষা করে দেখতে পারেন এবং সেখানে স্ট্যাটাসটি দেখবেন যে প্যাকেটগুলি ধীর কাতারে পুনঃনির্দেশিত করা হচ্ছে।
এটির একমাত্র আসল প্রতিক্রিয়াটি এটিকে পুনরায় বুট থেকে বাঁচিয়ে তুলছে making আমি মনে করি না যে রিবুট ডাম্পগুলি থেকে আইপসেটগুলি তৈরি করার জন্য কোনও আরআইআই স্ক্রিপ্ট উপলব্ধ রয়েছে (এবং সেগুলি আইপটবেলসের বিধিগুলির আগেও তৈরি করা আবশ্যক ) এবং আমি নিশ্চিত যে পুনরায় বুটের উপর ট্র্যাফিক নিয়ন্ত্রণের নিয়মগুলি পুনরায় সেটআপ করার জন্য কোনও আরআইপি স্ক্রিপ্ট নেই। যদি আপনার বিরক্ত না হয়, আপনি কেবল rc.local এ কোনও স্ক্রিপ্ট চাওয়া থেকে পুরো জিনিসটি পুনরায় তৈরি করতে পারেন।