Skip to main content

Command Palette

Search for a command to run...

ডিসপ্যাচ প্রক্সি ব্যবহার করে একাধিক নেটওয়ার্কের স্পিড একত্র করার সিস্টেম

Published
4 min read
ডিসপ্যাচ প্রক্সি ব্যবহার করে একাধিক নেটওয়ার্কের স্পিড একত্র করার সিস্টেম
M

Full Stack Developer, focused on web automation, open source enthusiast and contributor.

Passionate about programming, specializing in JavaScript.

আমার ৬০ এম্বিপিএস এর দুইটা শেয়ার্ড ইন্টারনেট কানেকশন। একসাথে ১২০ এম্বিপিএস নিতে পারতাম, কিন্তু দুইটা বাসার দুই পাশে ব্যবহার হয়। তার উপর মাঝে মাঝে দুইটাই ডাউন থাকলেও ইন্টারনেট কানেকশন হঠাৎ চলে গেলে বিব্রতকর পরিস্থিতি তৈরি হয়।

গ্রামান্চলে এখনো পুরোপুরি স্পিড আসেনি। একটা বাড়িতে ত ২জি ঠিকমত আসেনা। ওদিন গ্রামে গিয়ে দেখি রবির ইন্টারনেট ৩ এম্বিপিএস পাচ্ছে আর স্কিটোর স্পিড ৩ এম্বিপিএস পাচ্ছে। দুইটা একত্র করলে ৬ এম্বিপিএস ব্যবহার করতে পারবো অনায়সে।

Techdiary: article-image

এমন না যে কনসেপ্টটা একদমই নতুন।

  1. উইন্ডোজে আগে আমরা স্পিডিফাই, কানেক্টিফাই এইসব ব্যবহার করতাম। এগুলার ভিপিএন দিয়ে দুই তিনটা কানেকশন একত্র করে ফাইল ডাউনলোড করতাম, স্পিড ১২০-১৫০ এম্বিপিএস উঠতো বিডিআইএক্সগুলোতে। কিন্তু সফটওয়্যারগুলো লিনাক্সে ব্যবহার করা যেত না।
  2. সবসময় গিগাবিট ল্যান কার্ডও ব্যবহার করা যায়না সব জায়গায়, এটা পোর্টেবল না। আবার গিগাবিট লাইন দিয়ে একটা ইন্টারনেটের ব্যাকআপ দিয়ে অন্যটা চালানো যায় না।

সেটাপ

তো দেখি আমরা কিভাবে করবো।

এটা করার জন্য প্রথমে একটা ল্যাপটপ বা ডেস্কটপ লাগবে যেটাতে দুইটা বা তিনটা নেটওয়ার্ক এডাপ্টার আছে। একদমই না হলে বাজার হতে ছোট ছোট ওয়্যারলেস এডাপ্টার কিংবা ইউএসবি ল্যান কার্ড কিনে নেয়া যায়। একটা আইএসপির লাইনে কানেক্টেড থাকলে, আরেকটা হয়তো মোবাইলের হটস্পটে কানেক্ট হবে। কম্পিউটারে আমরা একই সাথে সবগুলো নেটওয়ার্কে কানেক্ট করবো।

Techdiary: এখানে দেখা যাচ্ছে আমি Wired আর ওয়াইফাই দুইটাতেই কানেক্ট করেছি।

এখানে দেখা যাচ্ছে আমি Wired আর ওয়াইফাই দুইটাতেই কানেক্ট করেছি।

কিন্তু কম্পিউটার ত বুঝতে হবে দুইটা কানেকশন একসাথে ব্যবহার করা জরুরী। ওকে বুঝাতেই আমরা ডিসপ্যাচ প্রক্সি ব্যবহার করবো।

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

কয়েক বছর আগে লিনাক্সের জন্য এমন একটা ভার্সন খুঁজতে গিয়ে আমি dispatch-proxy মডিউলটার খবর পাই। এটা দিয়ে HTTP রিকুয়েস্টগুলো সহজেই হ্যান্ডেল করা যাচ্ছিলো, উইন্ডোজে এটা অনেক ভালো কাজ করছিলো কিন্তু লিনাক্সে একটা ইন্টারফেসে সে কানেক্টই করতে পারছিলো না। আর সব কানেকশন ত HTTP হয় না, কিছু কিছু সময় HTTPS আর TCP/UDP কানেকশনও তৈরি করা লাগতে পারে। সব মিলিয়ে এটার উপর বেশ অখুশি হয়েছিলাম।

কয়েকদিন আগে আবার খোঁজ পাই go-dispatch-proxy মডিউলটার। এটা আগের মডিউলটাই নতুন করে গো দিয়ে লেখা হয়। আর মাত্র কয়েক মাস আগে লিনাক্সের সাপোর্ট আনা হয়। ফাইল সাইজও মাত্র ৬০০ কিলোবাইট। আমি খুশিতে এটা ঘাটাঘাটি শুরু করে দিলাম।

প্রথমে আমার উবুন্টু বা লিনাক্স প্লাটফর্মের জন্য releases পেজ হতে এটার বাইনারি ফাইলটা ডাউনলোড করলাম। ফাইলটা আনজিপ করলাম।

এরপর এটাকে এক্সিকিউট করার পারমিশন দিলাম। উইন্ডোজে এটা করা লাগবেনা যদিও।

chmod +x go-dispatch-proxy

এরপর আমার সবগুলা ইন্টারফেসের একটা লিস্ট করতে বললাম।

➜  ./go-dispatch-proxy --list
--- Listing the available adresses for dispatching
[+] eno2, IPv4:192.168.11.13
[+] wlo1, IPv4:192.168.10.17
[+] br-5015f3732a10, IPv4:172.18.0.1
[+] br-75c7d426f1b1, IPv4:172.19.0.1
[+] br-c1c6a8b3e54a, IPv4:172.20.0.1
[+] docker0, IPv4:172.17.0.1
[+] br-ebbde8cd162b, IPv4:172.21.0.1

এখানে eno2 হলো আমরা ল্যান কার্ড আর wlo1 হলো ওয়্যারলেস কার্ড। মোবাইল দিয়ে usb tether করলে আরো ইন্টারফেস দেখাতো এখানে।

তো, আমি ওকে বলবো একটা প্রক্সি তৈরি করার জন্য যেটা সবগুলো রিকোয়েস্ট ওই ইন্টারফেসগুলোর মধ্য দিয়ে ব্যালেন্স করবে। এটা করার জন্য আমাকে ওই ইন্টারফেসের আইপি বলে দিতে হবে। আর এই এপটাকে সবগুলা ইন্টারফেস একসেস করার জন্য প্রয়োজনীয় পারমিশন দিতে হবে।

 sudo setcap cap_net_raw=eip ./go-dispatch-proxy
 ./go-dispatch-proxy 192.168.11.13 192.168.10.17
[INFO] Load balancer 1: 192.168.11.13, contention ratio: 1
[INFO] Load balancer 2: 192.168.10.17, contention ratio: 1
[INFO] Local server started on  127.0.0.1:8080

তো, আমাকে একটা SOCKS5 সার্ভার দিলো। SOCKS সার্ভারের সুবিধা হলো এটা দিয়ে TCP/UDP কানেকশনগুলোও হ্যান্ডেল করা যায়, টরেন্ট এপগুলোতে সহজে ব্যবহার করা যায়।

ওকে এখানে বলে দিতে পারতাম কোনটা দিয়ে বেশি রিকুয়েস্ট যাবে বা কম যাবে, কোন পোর্টে প্রক্সি তৈরি করবে, এমনকি আলাদা SSH কানেকশন কিংবা প্রক্সি দিয়েও টানেল করতে পারতাম, তবে আপাতত এডভান্সড কিছুতে না যাই।

প্রতিবার আইপি দিতে গেলে বড়ই ঝামেলা হবে বলে আমি একটু ছোট স্নিপেট লিখে ফেললাম।

sudo ./go-dispatch-proxy $(./go-dispatch-proxy -list | grep -E "eno|wlo" | awk '{split($0, a, ":");print a[2]}')

এই কোডটা করবে কি, লিস্ট eno আর wlo এর ইন্টারফেসগুলোর আইপি নিয়ে নিজে থেকেই কানেক্ট করে নিবে। এটা অবশ্য অত্যাবশ্যক না। আমি এটাকে একটা .sh ফাইলে সেভ করে রাখি যেন পরে ব্যবহার করা যায়।

ব্যবহার

আচ্ছা প্রক্সি ত পেলাম, এটাকে ব্যবহার করবো কিভাবে?

ফায়ারফক্সে Preferences এ গিয়ে Network Settings এ যেতে হবে। এরপর SOCKS host এ নিচের মত করে বসাতে হবে। খেয়াল রাখতে হবে SOCKS v5 যেন সিলেক্ট করা থাকে এবং HTTP প্রক্সি সহ বাকিগুলো খালি থাকে।

Techdiary: article-image

ক্রোমে একটু জটিল। আমরা Proxy SwitchyOmega এক্সটেনশনটি ব্যবহার করতে পারি। এখানে নিচের মত করে প্রক্সি সেট করে Apply Changes বাটন প্রেস করতে হবে।

Techdiary: article-image

এরপর আমরা এটাকে সিলেক্ট করে দিবো।

Techdiary: article-image

আর সরাসরি উবুন্টুতে প্রক্সি সেট করতে গেলে, Network settings এ গিয়ে ম্যানুয়ালি প্রক্সি সেট করতে পারবো।

Techdiary: article-image

এরপর যাই ব্রাউজ করতে যাবো, ও যে কিভাবে রিকুয়েস্ট ব্যালেন্স করছে, তা দেখতে পাবো।

➜  sudo ./go-dispatch-proxy $(./go-dispatch-proxy -list | grep -E "eno2|wlo1" | awk '{split($0, a, ":");print a[2]}')
[INFO] Load balancer 1: 192.168.11.13, contention ratio: 1
[INFO] Load balancer 2: 192.168.10.17, contention ratio: 1
[INFO] Local server started on  127.0.0.1:8080
[DEBUG] github.com:443 -> 192.168.11.13:0
[DEBUG] github.githubassets.com:443 -> 192.168.10.17:0
[DEBUG] github.githubassets.com:443 -> 192.168.11.13:0
[DEBUG] camo.githubusercontent.com:443 -> 192.168.11.13:0
[DEBUG] avatars.githubusercontent.com:443 -> 192.168.10.17:0
[DEBUG] browser.events.data.microsoft.com:443 -> 192.168.10.17:0

এখানে দেখা যাচ্ছে একটা রিকুয়েস্ট ১৩ দিয়ে যাচ্ছে আরেকটা রিকুয়েস্ট ১৭ দিয়ে যাচ্ছে।

এভাবে আমরা ডিসপ্যাচ প্রক্সি ব্যবহার করতে পারলাম। স্পিডিফাই, ক্র্যাক সফটওয়্যার, উইন্ডোজ ডিপেন্ডেন্সি এগুলো নিয়ে চিন্তা করার কোন মানেই নেই।

S

OMG, superb bro

More from this blog

৯০ হাজার ডেভেলপারের কাছে থেকে জেনে নিন টেক জগতের বর্তমান অবস্থা

স্ট্যাকওভারফ্লো ২০২৩ সার্ভের সারাংশ গত মাসে স্ট্যাকওভারফ্লো সারা বিশ্বের ১৮৫ দেশের প্রায় ৯০ হাজার ডেভেলপারের কাছ থেকে একটা সার্ভে নেয়, বাংলাদেশ থেকে এই সার্ভেতে ৪৯০ জন ডেভেলপার অংশ নেয়, যেখানে বিভিন্ন টুলস, টেকনোলোজি, স্যালারি সহ অনেক বিষয়ে আলোচনা কর...

Jun 20, 202325 min read
৯০ হাজার ডেভেলপারের কাছে থেকে জেনে নিন টেক জগতের বর্তমান অবস্থা

রিমোট জবের আলটিমেট গাইড - কি, কেন, কিভাবে?

রিমোট জব, এখনকার একটা বাজওয়ার্ড। ঘরে বসে দেশে রেমিটেন্স আনার একটা উপায়। অফিসে না গিয়ে অফিস করার একটা উপায়। রাস্তার জ্যাম ঠেলে অফিস যাওয়ার সময় নষ্ট না করার একটা উপায়। আরো কত রকম সুবিধা দিয়ে রিমোট জব, রিমোট অফিস, ফ্রিল্যান্সিং নাম দিয়ে আমাদের দেশে রিমো...

Jul 2, 202225 min read
রিমোট জবের আলটিমেট গাইড - কি, কেন, কিভাবে?

৭০ হাজার ডেভেলপারের কাছ থেকে জেনে নিন টেক ইন্ডাস্ট্রির বর্তমান অবস্থা

স্ট্যাকঅভারফ্লোর এবারের ডেভেলপার সার্ভেতে যা এসেছে তা নিয়ে বিশদ আলোচনা করে সারাংশ তুলে ধরলাম। এই সার্ভেতে প্রায় ৭০ হাজার+ ডেভেলপার এই অংশ নিয়েছিলেন যার বেশিরভাগই আমেরিকা, কানাডা সহ বড় বড় রাষ্ট্রের ডেভেলপার। ডেভেলপার প্রফাইল এই সেকশনে আলোচনা করা হয়েছে...

Jun 27, 202210 min read
৭০ হাজার ডেভেলপারের কাছ থেকে জেনে নিন টেক ইন্ডাস্ট্রির বর্তমান অবস্থা

রিয়েল প্রজেক্ট অভারভিউ - থ্রাইভডেস্কের টেক স্ট্যাক

থ্রাইভডেস্ক হলো কাস্টমারদের সাপোর্ট দেয়ার একটা টুলস। আজ আমরা এই সিস্টেম তৈরি করতে কি কি ব্যবহার করা হয়েছে তা নিয়ে সংক্ষেপে আলোচনা করবো যেন একটা রিয়েল প্রজেক্টে কি থাকে তা নিয়ে আমরা ধারণা করতে পারি। থ্রাইভডেস্ক ছোটখাট কোন বিজনেস থাকলে তাতে কাস্টমারদের...

May 18, 20226 min read
রিয়েল প্রজেক্ট অভারভিউ - থ্রাইভডেস্কের টেক স্ট্যাক

ফান্ডামেন্টাল শক্ত না করলে প্রোগ্রামার হতে পারবেন না

আমাকে ভার্সিটির একজন টিচার বলেছিলেন, ও তো সি পারে না, ও আবার কিসের প্রোগ্রামার? আমার খুব রাগ উঠেছিলো। আজব, আমি পিএইচপি, পাইথন, জাভাস্ক্রিপ্ট সহ কত কিছু পারি। এগুলো কি প্রোগ্রামিং ল্যাঙ্গুয়েজ না? স্যার কিন্তু বলেন নাই ওর ফান্ডামেন্টাল দূর্বল, জাস্ট বল...

Feb 17, 202217 min read
ফান্ডামেন্টাল শক্ত না করলে প্রোগ্রামার হতে পারবেন না

তাহেরর প্রযুক্তি ব্লগ

8 posts

প্রযুক্তি নিয়ে কিছুটা যুক্তিবিদ্যার একটা জায়গা।