আইপিটিবলস - একটি নির্দিষ্ট আগত আইপি এর সীমাবদ্ধ হার


103

আমি কোনও নির্দিষ্ট পরিষেবার হার সীমাবদ্ধ করতে চাই না। আমার লক্ষ্যগুলি কেবলমাত্র আগত আইপি ঠিকানার ভিত্তিতে হার সীমাবদ্ধ করা। উদাহরণস্বরূপ সিউডো-রুল ব্যবহার:

john.domain.local (192.168.1.100) can only download from our httpd/ftp servers at "10KB/s" (instead of 1MB/s)

ইনকামিং আইপি অ্যাড্রেসের উপর ভিত্তি করে আমি আইপিটাবলস ব্যবহার করে সীমা কীভাবে রেট করতে পারি?

উত্তর:


165

আইপিটিবেলগুলি এই ধরণের কাজের জন্য তৈরি হয় না, যেখানে এই সিদ্ধান্তগুলি নেওয়ার জন্য প্রচুর এবং প্রচুর প্যাকেট বিশ্লেষণ করা দরকার। আইপিটাবলস যদিও আংশিক উত্তর!

এর প্রকৃত উত্তর হ'ল লিনাক্সের দুর্দান্ত এবং আন্ডারভুক্ত ট্র্যাফিক নিয়ন্ত্রণ সুবিধা। নোট করুন যে কী চলছে তা জেনেও এটিকে ঘিরে কাজ করার ফলে আপনি মেশিনের সাথে নেটওয়ার্ক সংযোগ হারাতে পারেন! তোমাকে সতর্ক করা হল!

ধরে নেওয়া হচ্ছে এথ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 এ কোনও স্ক্রিপ্ট চাওয়া থেকে পুরো জিনিসটি পুনরায় তৈরি করতে পারেন।


3
ভাল, আমি আপনাকে যথেষ্ট ধন্যবাদ দিতে পারি না। এটি অত্যন্ত বর্ণনামূলক এবং খুব তথ্যপূর্ণ। আমি পরে বুঝতে পারি যে টিসির জ্ঞান প্রয়োজন হবে এবং আমি তখন থেকে এটি অনুসন্ধান করা শুরু করেছি। আবার ধন্যবাদ!
জেমস

ওহ এবং সংযোগ হারাতে হিসাবে। আমি আমার ভিপিএস থেকে হোস্ট মেশিনে যাওয়ার আগে কনফিগারেশনটি ডাউন করে রেখেছি। এছাড়াও, আমার কাছে ETH0- তে ব্যক্তিগত নেটওয়ার্কে ভিপিএন অ্যাক্সেস রয়েছে। আমি কেবল ETH1 এ কাজ করব তাই তত্ত্বের ক্ষেত্রে আমার সমস্যা হবে না। কিন্তু সতর্কতা শুনলাম!
জেমস

2
আমি অনুরূপ টিউটোরিয়ালটি কতবার পড়েছি তা বলতে পারছি না, এটি প্রথম ধারণাটি তৈরি করেছে
RC1140

5
সাইডেনোট হিসাবে, নিয়ন্ত্রণ গ্রুপগুলিতে রিসোর্স সীমাবদ্ধতা (সাধারণত, এছাড়াও সম্ভব এবং অপ্রয়োজনীয় এবং দুর্দান্ত) হিসাবে এটি সাধারণত আরও উপযুক্ত কারণ আপনি সিপিইউ, মেমরি, আইও এবং নেটওয়ার্কের প্রতি অ্যাপ্লিকেশন সীমা নির্ধারণ করতে পারেন একটি কেন্দ্রীয় 'নীতি স্টোর'-এ per '। তবে এখনও এমন কোনও প্রশ্নের উত্তর দেওয়ার জন্য পোস্ট করা হচ্ছে না।
ম্যাথু ইফি 5'12

2
আপনি যদি tcসিনট্যাক্স পছন্দ না করেন আপনি tcng কে একটি চেষ্টা দিতে পারেন যা tcকমান্ড উত্পন্ন করার জন্য আরও কিছু ব্যবহারকারী বান্ধব ভাষা যুক্ত করে। আমি শেল স্ক্রিপ্ট-এ এটি পছন্দ করতে ব্যবহৃত হয়েছে: echo '... multi line tcng configuration ...' | tcng | sh
ম্যাটিয়াস ওয়াদম্যান 6'12

5

এটি রেট সীমাবদ্ধ করার নিয়ম গ্রহণ এবং -sস্যুইচ যুক্ত করার মতোই সহজ । -sসুইচ ইনকামিং আইপিগুলি সাথে মেলে। উদাহরণস্বরূপ iptables -A INPUT -s 1.1.1.1এবং তারপরে সেই নিয়মের জন্য আপনার সীমাবদ্ধ হারের পছন্দসই পদ্ধতিটি শেষ করুন।


আপনার প্রম্পট উত্তরের জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে আমার মূল সমস্যাটি এটি দ্বিতীয়ার্ধ। আমি --limit এ সন্ধান করেছি এবং আমি এমন কিছু দেখিনি যা আমাকে কেবি / এস এর উপর ভিত্তি করে সীমাবদ্ধ করতে দেয় - আপনি আমাকে নির্দেশ করতে পারেন এমন কোন দিক?
জেমস 21

1
@ জেমস আমি আপনার কাছে ফিরে চাইতাম তবে আমাকে বন্ধুর বাড়িতে যেতে হয়েছিল। সবে ফিরে এসেছি এবং আমি দেখতে পাচ্ছি যে এমআইএফ বেশ কাজ করেছে। =)
ওয়েসলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.