আমি কিভাবে ব্যবহারকারী ব্যান্ডউইথ সীমাবদ্ধ করতে পারি?


32

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

আমি প্রতি ব্যবহারকারীর ভিত্তিতে প্রতিমাসে ব্যান্ডউইথকে কীভাবে নিরীক্ষণ এবং সীমাবদ্ধ করতে পারি?

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

আমি ডেবিয়ান লেনি ব্যবহার করছি।

আমি কীভাবে এটি করব তা নিশ্চিত নই ...

এটা কি আদৌ সম্ভব হবে? আমি এর আংশিক সমাধানের জন্যও কৃতজ্ঞ ...


আপনি কী ওএস ব্যবহার করছেন তা আমরা জানতে পারি।
স্যাম কোগান 21

ডেবিয়ান। একটি সম্পাদনায় যুক্ত করা হয়েছে।
লোকো 41211

শুধু কৌতূহল, আপনি টরেন্টফ্লাক্স ব্যবহার করছেন?
cop1152

এটি আমি চেষ্টা করছি এমন একটি। এই মুহুর্তে আমরা সম্ভবত ডিস্ক স্পেস সীমিতকরণ (যার জন্য আমাদের সমাধান রয়েছে) এবং ব্যান্ডউইথ সীমিতকরণ যা আমরা আটকে রয়েছি এমন একটি বীজবক্সের জন্য ব্যবহার করার জন্য কোনও কিছুর দিকে নজর দিচ্ছি .... এবং আমার কিছু বন্ধুরা মাসে 1 টিবি ব্যবহার করে অন্যরা মাত্র কয়েক এমবিএস। সত্যিই এই প্রতি ব্যবহারকারীকে সমানভাবে সীমাবদ্ধ করতে চাই।
লোকো 41211

উত্তর:


13

আপনি 'টিসি' ট্র্যাফিক শেপিং কমান্ডটি ব্যবহার করতে পারেন।

আপনার প্রতিটি বন্ধুকে বিট টরেন্টের জন্য আলাদা আলাদা বন্দর দিন। প্রতিটি বন্দরের জন্য iptables দিয়ে টিসিপি প্যাকেটগুলি চিহ্নিত করুন।

iptables -t mangle -A FORWARD -p tcp --sport 6881 -j MARK --set-mark 100
iptables -t mangle -A FORWARD -p tcp --dport 6881 -j MARK --set-mark 100

তারপরে প্রতিটি ব্যবহারকারীর জন্য সর্বাধিক ব্যান্ডউইথ এবং হার সেট করতে tc কমান্ডটি ব্যবহার করুন।

মাসের শেষে আপনি গণনাগুলি পুনরায় সেট করতে 'টিসি' কমান্ডগুলি মুছতে এবং যুক্ত করতে পারেন।

আপনি প্রতিটি ব্যবহারকারীর জন্য ব্যবহারগুলি পর্যবেক্ষণ করতে পারেন:

tc filter show dev ethX

আপনি যদি ডেবিয়ান ইনস্টল শোরওয়াল ব্যবহার করে থাকেন তবে iptables এর সাথে গোলমাল না করে ট্র্যাফিক শেপিং করা সত্যিই সহজ করে তোলে। আপনি কেবল / ইত্যাদি / শোরওয়াল ডিরেক্টরিতে tcdevices, tcclass এবং tcrules সম্পাদনা করুন। এখানে আরও তথ্য: http://www.shorewall.net/traffic_shaping.htm

অন্য ব্যক্তি যেমন পরামর্শ দিয়েছেন, ব্যবহারকারীর নাম দিয়ে প্যাকেট চিহ্নিত করা পোর্টের চেয়ে সম্ভবত ভাল, সেইভাবে পোর্টগুলি iptables আপডেট না করে পরিবর্তন করা যেতে পারে।


আপনি একটি সীমা নির্ধারণ সম্পর্কে একটি উদাহরণ দিতে পারেন? 100 জিবি ইনকামিং এবং আউটগোয়িং একসাথে বলবেন?
লোকো 41211

টরেন্ট (এবং প্রকৃতপক্ষে) অন্যান্য বন্দর ব্যবহার করতে পারে তাই উদাহরণস্বরূপ সমস্যাটি আসলে সমস্যার সমাধান হয় না।
সিস্টামস

যা সমাধান হিসাবে এই দুটি বিকল্প সরিয়ে দেয় ...
লোকো 41211

সিস্টামাস: বিটোরেন্ট ক্লায়েন্ট ব্যবহার করার সময় আপনি একটি পোর্ট বা একাধিক পোর্ট সেট করতে পারেন। এটি দেখুন: dessent.net/btfaq/#port
chris.moos

13

আপনি --quotaiptables এ বিকল্পটি ব্যবহার করে দেখতে চেষ্টা করতে পারেন, যা আপনাকে বাইটে একটি স্থানান্তর সীমা সেট করতে দেয়। যেহেতু আপনি একাধিক টরেন্ট ক্লায়েন্ট পরিচালনা করছেন, প্রত্যেকটি আলাদা আলাদা আলাদা নামের সাথে, আপনি --uid-ownerক্যাট্রিয়েলের পরামর্শ অনুসারে বিকল্পটির সাথে এটি একত্রিত করতে পারেন ।

এইভাবে আপনি আপনার ব্যবহারকারীর ডাউনলোডের গতি সীমাবদ্ধ না করে প্রতি সময়কাল (দিন / সপ্তাহ / মাস / ইত্যাদি) প্রতিস্থাপনের সীমাটি প্রয়োগ করতে পারেন।

প্যাকেট কাউন্টারগুলিকে অবিচলিত করার জন্য আপনাকে পর্যায়ক্রমে সেগুলি সংরক্ষণ করতে হবে (উদাহরণস্বরূপ, ক্রোন জবের মাধ্যমে), যাতে সার্ভারটি পুনরায় চালু করতে বা ফায়ারওয়াল নিয়মগুলি ফ্লাশ করার প্রয়োজনে আপনি সেগুলি পুনরুদ্ধার করতে পারেন।


মনে হচ্ছে এটি কাজ করবে। সুতরাং iptables এর সাহায্যে আমি সমস্ত ট্র্যাফিক চিহ্নিত করতে পারি যা আসে এবং সেট ব্যবহারকারীর জন্য বাইরে যায়। এবং আমি এটি একটি নির্দিষ্ট সময়ের জন্য সীমাবদ্ধ করতে পারি। পুরো সেট আপটি কেমন হবে তা এখনও আমি কাজ করতে পারি না। আগত ও বহির্গামী ট্র্যাফিক চিহ্নিত করতে আমি যে সঠিক কমান্ডটি ব্যবহার করতে পারি তা কি: "iptables -t mangle -A OUTPUT -p tcp -m مالڪ --uid-مالک someuser -j MARK --set-mark 100"? বা আমি এটা কিভাবে করব? উদাহরণস্বরূপ, 100 গিগাবাইটের মাসিক সীমা সহ আইডি 56 দিয়ে ইউজারনেম বব চিহ্নিত করতে কী হবে? আমার ধারণা, কোনও মাসিক ক্রোন জব ট্রাফিক কাউন্টারে পুনরায় সেট করবে?
লোকো 41211

12

শুধু উপরের প্রশ্ন যুক্ত করতে।

আপনি যেমন প্যাকেট রঙ করতে ব্যবহারকারী মেলে সঙ্গে iptables ব্যবহার করতে পারেন:

iptables -t mangle -A OUTPUT -p tcp -m owner --uid-owner someuser -j MARK --set-mark 100

এবং তারপরে প্রতিটি ব্যবহারকারীর ভিত্তিতে সীমাবদ্ধ করতে 'টিসি' ব্যবহার করুন।


ইউজারনেম ব্ল্যাব্লেক্সের জন্য 100 গিগা বলার সীমা নির্ধারণ করতে আপনি কীভাবে টিসি ব্যবহার করবেন তার একটি উদাহরণ দিতে পারেন? এবং কোডটির একটি উদাহরণ যা এক মাসের পরে সীমাটি পুনরায় সেট করতে ব্যবহার করা উচিত? আপনাকে ধন্যবাদ
লোকো 41211

এটি ব্যবহারকারীকে একটি স্থায়ী ভিত্তিতে সীমাবদ্ধ করবে এবং সময়সীমার কোটায় নয়
কাত্রিয়েল

8

আপনি প্রতি মাসে প্রতিটি ব্যবহারকারীর জন্য কত মাসিক ট্রাফিকের অনুমতি দিতে চান তার উপর নির্ভর করে আপনি অন্যান্য ব্যবহারকারীদের দ্বারা প্রস্তাবিত কিছু সরঞ্জাম ব্যবহার করে সেই অনুযায়ী একটি ব্যান্ডউইথ সীমা নির্ধারণ করতে পারেন।

উদাহরণস্বরূপ, ধরা যাক যে আপনি 250 গিগাবাইট / মাসের সর্বোচ্চ ডাউনলোড সীমাটি সেট করতে চান । এখন, আপনি যদি মাসে এক ঘন্টার সংখ্যায় (30 730) ভাগ করে এবং তারপরে 3600 দিয়ে ভাগ করেন তবে আপনি সর্বাধিক ডাউনলোডের হার পাবেন যা এই উদাহরণস্বরূপ 100 কেবি / সেকেন্ড হয়

তারপরে, আপনি যদি 100 কেবি / সেকেন্ডের সর্বাধিক ডিএল রেট নির্ধারণ করেন তবে আপনি স্বয়ংক্রিয়ভাবে আপনার 250 জিবি / মাসের ডাউনলোড সীমাটি প্রয়োগ করছেন (অবশ্যই আপনার ট্র্যাফিক শ্যাপার সঠিকভাবে কাজ করছে বলে ধরে নেওয়া)। যদি আপনার ব্যবহারকারীরা 100 কেবি / সেকেন্ডের চেয়ে দ্রুত ডাউনলোড করতে না পারেন তবে তারা 250 জিবি / মাসের বেশি ডাউনলোড করতে পারবেন না।

ডাউনলোডের হারটি আপনি ব্যবহার করতে পারেন tcবা উল্লেখ করা হয়েছে এমন কয়েকটি সরঞ্জামের সীমাবদ্ধ করার জন্য । আপনি যদি সরাসরি ডিল করতে না চান tc, আপনি cbq.init ব্যবহার করতে পারেন যা সেট আপ করা বেশ সহজ। এই স্ক্রিপ্টটি দেবিয়ান এচে-তে উপস্থিত ছিলshaper প্যাকেজ তবে মনে হয় এটি পরে মুছে ফেলা হয়েছে। যাইহোক, এটি কেবল একটি সরল স্ক্রিপ্ট যা আপনি সোর্সফর্স থেকে ডাউনলোড করতে পারেন।

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


আমরা আমাদের পিসিগুলিতে কেবল বীজবক্স ব্যবহারের মূল কারণটি এটি অনেক দ্রুত, কারণ দুঃখজনকভাবে এটি সমস্যার সমাধান করে না ... যাইহোক ধন্যবাদ
লোকো 41211

7

আমি জানি এটি একটি পুরানো পোস্ট তবে এমনকি আমি আজ উত্তরগুলির সন্ধানে এটিতে হোঁচট খেয়েছি এবং অবশেষে এমন কিছু একসাথে পেয়েছি যা আমার পক্ষে পুরোপুরি কার্যকর হয়। আমার একটি 25 এমবিএস ডাউনলিংক এবং 2.5 এমবিএস আপলিংক রয়েছে এবং এখানে 4 জন লোক এবং 5 টি সার্ভার এই লিঙ্কটি ভাগ করছে। সার্ভারগুলির সাথে আপলিংক ব্যান্ডউইথ সমালোচিত তবে ডাউনলিংকটি 4 জন ব্যক্তির সাথে উপযোগী যাতে কেউ এগুলিকে হোগ করে না।

আমি রাউটার হিসাবে সেন্টোস 6.3 চালাচ্ছি তবে এই আদেশগুলি কোনও লিনাক্সে কাজ করা উচিত। এথ0 সরবরাহকারীর কাছে আমার আপলিংক এথ 1 আমার ল্যানটি 24 পোর্ট স্যুইচ এবং ওয়াইফাই অ্যাক্সেস পয়েন্টের মাধ্যমে ডাউনলোডগুলি 25 এমবিএসের (প্রায় 500KB / সেকেন্ড) সীমাবদ্ধ করে আমি আপলোডগুলি 200Kbit (প্রায় 25KB / সেকেন্ড) এ সীমাবদ্ধ রাখি

tc qdisc add dev eth0 root handle 1:0 htb default 99
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 100Mbit ceil 100Mbit
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 200Kbit ceil 200Kbit prio 2
tc qdisc add dev eth0 parent 1:11 handle 10: sfq perturb 10

tc qdisc add dev eth1 root handle 2:0 htb default 99
tc class add dev eth1 parent 2:0 classid 2:1 htb rate 100Mbit ceil 100Mbit
tc class add dev eth1 parent 2:1 classid 2:11 htb rate 5Mbit ceil 5Mbit prio 2
tc qdisc add dev eth1 parent 2:11 handle 20: sfq perturb 10

তারপরে ব্যবহারকারীদের সীমাবদ্ধ করতে আপনি ব্যবহারকারী প্রতি 2 iptables লাইন ব্যবহার করেন

আপলোডগুলি সীমাবদ্ধ করতে:

iptables -t mangle -A POSTROUTING -o eth0 -p tcp -s 192.168.0.100 -j CLASSIFY --set-class 1:11

ডাউনলোড সীমাবদ্ধ

iptables -t mangle -A POSTROUTING -o eth1 -p tcp -d 192.168.0.100 -j CLASSIFY --set-class 2:11

আপনি কাকে সীমাবদ্ধ রাখতে চান তা মেলাতে কেবল আপনার আইপি ঠিকানা এবং নৈতিক পোর্টগুলি পরিবর্তন করুন


3

সম্পূর্ণতার জন্য, সেখানে একটি ইউজারস্পেস ডেমন বলা হয় trickle। এটি একটি একক প্রক্রিয়ার ব্যান্ডউইথকে সীমাবদ্ধ করতে ব্যবহার করা যেতে পারে। ব্যবহার খুব সহজ: ফি প্রবণতা দ্বারা ব্যবহৃত ব্যান্ডউইদথ সীমাবদ্ধ করতে, আপনি লিখতে পারেন: trickle -d 10 aptitude install wesnothতবে এটি LD_PRELOAD ব্যবহার করে কাজ করে, এটি শেল অ্যাক্সেস সহ কোনও ব্যবহারকারী সহজেই ওভাররাইড করতে পারে।


আমার ছাড়া অন্য কারওও শেল অ্যাক্সেস নেই। এছাড়াও, ব্যান্ডউইথ সীমাবদ্ধতার সাথে আমার প্রতি মাসে অর্থ হয় বা সময়সীমা নির্ধারিত হয়। এটা কি সম্ভব হবে?
লোকো 41211

1
না, ট্রিকল সেকেন্ডে গতি সীমাবদ্ধ করে।
লাইওরি

2

কটাক্ষপাত useripacct কার্নেল প্যাচ (এই আসলে বেশ দীর্ঘ হয়ে গেছে ইতিহাস )। ইন পুরোনো সংস্করণ এর জন্য দস্তাবেজ এটি পাশাপাশি কোটা প্রয়োগকারী প্রদান পর্যবেক্ষণ হিসাবে প্রদর্শিত হবে, এবং এটা আপনার নিজের নীতি স্ক্রিপ্ট প্রদান করা সম্ভব।

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


এটি কিছুটা ওভারকিল হিসাবে এটি সার্ভারের সংস্থানগুলি নিকাশ করবে .. তবে ধারণাটির জন্য আপনাকে ধন্যবাদ!
লোকো 41211
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.