Linux VPS-এ কীভাবে Tor relay সেটআপ করবেন
আপনার Linux VPS-এ একটি guard বা middle Tor relay কনফিগার করার সঠিক নিয়ম জানুন। bandwidth accounting, nyx মনিটরিং এবং নতুন relay-এর slow consensus ramp সংক্রান্ত সমস্যার সমাধান দেখুন।
VPS-এ Tor relay কী কাজ করে
Tor relay হলো একটি পাবলিক IP অ্যাড্রেসযুক্ত মেশিনে চলমান Tor daemon, যা অন্য ব্যবহারকারীদের জন্য এনক্রিপ্ট করা ট্রাফিক ফরোয়ার্ড করে। Directory authorities এটিকে প্রকাশ করে এবং Tor ক্লায়েন্টরা এর মাধ্যমে সার্কিট তৈরি করে। একটি guard বা middle relay শুধুমাত্র অন্য একটি relay-এর কাছে ট্রাফিক পাঠায়, তাই এটি কখনোই কোনো অপরিচিত ব্যক্তির হয়ে সরাসরি কোনো ওয়েবসাইটের সাথে সংযোগ স্থাপন করে না। এই একটি কারণেই এটি কোনো ধরনের abuse mail পায় না এবং সাধারণ VPS-এর জন্য এটি একটি উপযুক্ত অবদান।
এর কাজ খুবই সামান্য: একটি প্যাকেজ, পনেরো লাইনের কনফিগারেশন, একটি ফায়ারওয়াল রুল এবং একটি রিস্টার্ট। এই গাইডের বাকি অংশটি সেই বিষয়গুলো নিয়ে, যেখানে সাধারণত ভুল হয়। এর মধ্যে রয়েছে metered plan-এ ব্যান্ডউইথ হিসাব করা এবং কেন একটি সম্পূর্ণ সুস্থ নতুন relay প্রথম এক সপ্তাহ অকেজো মনে হতে পারে তার কারণ।
Guard, middle, bridge বা exit: ইনস্টল করার আগেই বেছে নিন
একটি daemon-ই এই চারটি ভূমিকার যেকোনো একটি পালন করতে পারে। আপনার কনফিগারেশন এবং directory authorities নির্ধারণ করবে আপনি কোন ভূমিকা পালন করবেন।
- Middle relay: এটি একটি guard থেকে ট্রাফিক গ্রহণ করে এবং অন্য একটি relay-তে পাঠিয়ে দেয়। এটি কখনোই সরাসরি গন্তব্য সাইটের সাথে যোগাযোগ করে না। প্রতিটি নতুন relay এখান থেকেই যাত্রা শুরু করে।
- Guard relay: এটি একই কনফিগারেশন, তবে এর সাথে একটি অতিরিক্ত flag থাকে। directory authorities সেইসব relay-কে Guard flag দেয় যারা দীর্ঘ সময় ধরে দ্রুত এবং স্থিতিশীল থাকে। আপনি এটি নিজে বেছে নিতে পারেন না। এটি অর্জন করতে হয় এবং নিচের কনফিগারেশনটিই তা অর্জনে সহায়তা করে।
- Bridge: এটি এমন একটি relay যা ইচ্ছাকৃতভাবে পাবলিক ডিরেক্টরি থেকে দূরে রাখা হয় এবং যেসব জায়গায় Tor ব্লক করা, সেখানে ব্যবহারকারীদের ব্যক্তিগতভাবে দেওয়া হয়। এই চারটির মধ্যে এটিই সবচেয়ে কম দায়বদ্ধতার কাজ: কম ব্যান্ডউইথ, কোনো পাবলিক লিস্টিং নেই এবং আপনার পরিকল্পনা যদি ছোট হয় তবে এটিই প্রথম সঠিক পদক্ষেপ।
- Exit relay: এটি শেষ ধাপ, যা গন্তব্য সাইটের সাথে সংযোগ স্থাপন করে। ব্যবহারকারীর প্রতিটি অনুরোধ আপনার IP address থেকে যায়, তাই অপব্যবহারের রিপোর্ট এবং পুলিশের অনুসন্ধান সেই ঠিকানার মালিকের কাছেই পৌঁছায়।
Exit relay এমন একটি ভূমিকা যা সাধারণ VPS-এ রাখা উচিত নয়। শুধুমাত্র এমন প্রোভাইডারের কাছেই Exit relay চালান যারা আগে থেকেই এই ধরনের ট্রাফিক গ্রহণ করতে সম্মত হয়েছে, যাদের নিজস্ব IP address আছে এবং যাদের abuse contact প্রকাশিত আছে। বেশিরভাগ সাধারণ হোস্টিংয়ের শর্তাবলীতে এটি নিষিদ্ধ এবং এটি উপেক্ষা করলে সাধারণত সার্ভার সাসপেন্ড হয় এবং IP address হারিয়ে যায়। একটি guard বা middle relay একই ব্যবহারকারীর ট্রাফিক বহন করে কিন্তু তাতে এই ধরনের কোনো ঝুঁকি থাকে না।
নিচের সবকিছু একটি guard/middle relay তৈরির জন্য। ExitRelay 0 হলো সেই লাইন যা এটিকে এই ভূমিকায় সীমাবদ্ধ রাখে।
শুরু করার আগে VPS-এর যা প্রয়োজন
Tor Project রিলে চালানোর জন্য কিছু কঠোর শর্তাবলী প্রকাশ করেছে। 2026 সালের আগস্ট মাস অনুযায়ী এগুলো হলো: রিলের জন্য একটি পাবলিক IPv4 অ্যাড্রেস, প্রতিটি দিকে অন্তত 10 Mbit/s ব্যান্ডউইথ (16 Mbit/s সুপারিশকৃত), মাসে অন্তত 100 GB আউটবাউন্ড ট্রাফিক, এবং 40 Mbit/s-এর নিচে গতির জন্য 512 MB RAM অথবা তার বেশি গতির জন্য 1 GB RAM। আপটাইমের কোনো নির্দিষ্ট নিয়ম নেই, তবে দিনে দুই ঘণ্টার কম সময় চলে এমন রিলে নেটওয়ার্কের জন্য খুব একটা কার্যকর নয়।
10 Mbit/s সংখ্যাটি লাইনের সক্ষমতা নির্দেশ করে, সেটিংস নয়। আপনার এমন একটি পোর্ট প্রয়োজন যা এই গতি দিতে সক্ষম। আপনি রিলেকে লাইনের কতটা ব্যবহারের অনুমতি দেবেন তা একটি আলাদা সিদ্ধান্ত, যা মাসিক ডেটা ট্রান্সফার লিমিটের ওপর ভিত্তি করে নিতে হয়। কনফিগারেশনে হাত দেওয়ার আগে আপনার প্ল্যানটি পড়ে নিন। আপনি যদি এখনো সার্ভার নির্বাচন করে থাকেন, তবে প্রতি মাসে একটি VPS-এর প্রকৃত খরচ অংশে দেখুন কীভাবে ট্রান্সফার লিমিট বিক্রি করা হয়, এবং একটি VPS-এর প্রকৃত নেটওয়ার্ক থ্রুপুট পরিমাপ অংশে দেখুন কীভাবে বিক্রয় পৃষ্ঠার তথ্যের ওপর নির্ভর না করে iperf3 ব্যবহার করে লাইনের প্রকৃত সক্ষমতা যাচাই করা যায়।
প্রথমে মেশিনটিকে সুরক্ষিত করুন। একটি রিলে পাবলিক অ্যাড্রেসে থাকা পাবলিক সার্ভিস, এবং প্রকাশিত হওয়ার কয়েক মিনিটের মধ্যেই এই অ্যাড্রেস স্ক্যান করা শুরু হয়। SSH-কে কী-এর মাধ্যমে সীমাবদ্ধ করা এবং sshd কনফিগারেশন হার্ডেন করা কাজটি করতে দশ মিনিট সময় লাগে এবং রিলে লাইভ করার আগেই এটি সম্পন্ন করা উচিত, পরে নয়।
Tor Project repository থেকে Tor ইনস্টল করা
ডিস্ট্রিবিউশনের প্যাকেজের পরিবর্তে Tor Project-এর নিজস্ব apt রিপোজিটরি ব্যবহার করুন। Relay কোড স্ট্যাবল রিলিজের চেয়ে দ্রুত আপডেট হয়, তাই বাগ ফিক্সগুলো এই রিপোজিটরিতে আগে পৌঁছায় এবং ডিস্ট্রিবিউশন প্যাকেজগুলো রিলিজের ক্ষেত্রে পিছিয়ে থাকে।
sudo apt update
sudo apt install -y apt-transport-https gnupg wgetপ্রথমে সাইনিং কি (signing key) যোগ করুন, তারপর রিপোজিটরি যোগ করুন। কোডনেমটি মেশিন থেকে স্বয়ংক্রিয়ভাবে পড়া হয়, তাই একই কমান্ড Ubuntu 24.04 (noble) এবং Debian 13 (trixie)-এর ক্ষেত্রে কাজ করবে।
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null
CODENAME=$(. /etc/os-release && echo "$VERSION_CODENAME")
echo "$CODENAME"
sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $CODENAME
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring
tor --versiontor --version কমান্ডটি আপনার ইনস্টল করা ভার্সনটি দেখাবে। যদি apt update কমান্ডটি NO_PUBKEY এরর দেয়, তবে বুঝতে হবে dearmored কি-টি Signed-By: লাইনে উল্লিখিত পাথে নেই, যার ফলে apt-এর কাছে রিলিজ ফাইল যাচাই করার মতো কোনো কি নেই। deb.torproject.org-keyring প্যাকেজটি পরবর্তীতে গুরুত্বপূর্ণ ভূমিকা পালন করে: এটি সাইনিং কি-কে একটি সাধারণ প্যাকেজ হিসেবে সরবরাহ করে, ফলে কি রোটেশন হলেও apt সঠিকভাবে কাজ চালিয়ে যেতে পারে।
স্বয়ংক্রিয় আপগ্রেড চালু করুন এবং নতুন অরিজিন সম্পর্কে সিস্টেমকে অবহিত করুন।
sudo apt install -y unattended-upgrades apt-listchangesUbuntu-তে, /etc/apt/apt.conf.d/50unattended-upgrades ফাইলের Allowed-Origins ব্লকে Tor অরিজিন যোগ করুন:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"TorProject:${distro_codename}";
};Debian-এ একই ফাইলে Origins-Pattern ব্যবহৃত হয়, যেখানে "origin=TorProject"; লাইনটি যোগ করতে হবে। sudo unattended-upgrade --debug --dry-run কমান্ড দিয়ে ফলাফল যাচাই করুন, যা কোন কোন অরিজিনের ওপর কাজ করবে তা দেখাবে এবং কোনো আউটপুট না দিলে বুঝতে হবে কনফিগারেশন সঠিক আছে।
যে torrc ফাইলটি গুরুত্বপূর্ণ
প্যাকেজটি একটি দীর্ঘ এবং প্রচুর মন্তব্যসহ /etc/tor/torrc ইনস্টল করে। একটি রিলে-র জন্য মাত্র কয়েকটি লাইন গুরুত্বপূর্ণ। ফাইলটির শেষে সেগুলো যোগ করুন।
Nickname mynicerelay
ContactInfo relay-ops[at]example.com
ORPort 9001
ExitRelay 0
SocksPort 0Nickname হলো 1 থেকে 19 অক্ষরের একটি নাম, যাতে কেবল বর্ণ ও সংখ্যা থাকতে পারবে। এটি নেটওয়ার্কে অনন্য নয় এবং এটি আপনার পরিচয়ও নয়; আপনার পরিচয় হলো ফিঙ্গারপ্রিন্ট। সার্চ বক্সে নিজের রিলে খুঁজে পাওয়ার জন্য এটি ব্যবহৃত হয়, তাই এমন কিছু বেছে নিন যা ফোনে বলা সহজ।
ContactInfo রিলে ডেসক্রিপ্টরের ভেতরে প্রকাশিত হয়, যা একটি পাবলিক ডকুমেন্ট এবং যে কেউ এটি ডাউনলোড করতে পারে, তাই এই ঠিকানাটি স্ক্র্যাপ করা হবে। এমন একটি ইমেইল ঠিকানা ব্যবহার করুন যা আপনি আগামী দুই বছর পর্যন্ত চেক করবেন, প্রয়োজনে ঠিকানাটি অস্পষ্ট (obfuscate) করে দিতে পারেন। রিলে-র কোনো সমস্যা হলে Tor Project-এর সাথে যোগাযোগের এটিই একমাত্র মাধ্যম।
ORPort 9001 হলো সেই পোর্ট যেখানে অন্যান্য রিলে এবং ক্লায়েন্টরা সংযুক্ত হয়। 9001 পোর্টটি প্রচলিত। পোর্ট 443 আরেকটি সাধারণ পছন্দ, কারণ কিছু সীমাবদ্ধ নেটওয়ার্ক শুধুমাত্র আউটবাউন্ড 443 পোর্ট ব্যবহারের অনুমতি দেয়, ফলে সেখানে লিসেনিং রিলেটি আরও বেশি ক্লায়েন্টের কাছে পৌঁছাতে পারে। শুধুমাত্র তখনই 443 পোর্ট বেছে নিন যদি সার্ভারের অন্য কোনো কিছুর জন্য এটি প্রয়োজন না হয়।
SocksPort 0 লোকাল SOCKS প্রক্সি বন্ধ করে দেয়, যা একটি রিলে-র প্রয়োজন হয় না এবং মেশিন থেকে একটি লিসেনিং সকেট কমিয়ে ফেলে। ExitRelay 0 এই উদ্দেশ্যটি ফাইলে লিখে রাখে: এই রিলেটি কখনোই কোনো ব্যবহারকারীর পক্ষ হয়ে গন্তব্যে সংযুক্ত হবে না এবং পরবর্তীতে কনফিগারেশনটি যারা পড়বে, তাদের ডিফল্ট সেটিংস থেকে এটি অনুমান করতে হবে না।
যদি VPS-এর একটি IPv6 ঠিকানা থাকে, তবে দ্বিতীয় একটি ORPort লাইন যোগ করুন। Tor IPv4-এর মতো যেকোনো IPv6 ঠিকানায় বাইন্ড করতে পারে না, তাই ঠিকানাটি থার্ড ব্র্যাকেটের ভেতরে লিখুন।
ORPort 9001
ORPort [2001:db8::1]:90011 GB র্যামের VPS-এ MaxMemInQueues 512 MB যোগ করুন। Tor মেশিনের মোট মেমোরি দেখে তার কিউ লিমিট নির্ধারণ করে, যা একটি ছোট শেয়ার্ড বক্সে আপনার প্রত্যাশার চেয়ে বেশি হতে পারে। লিমিট নিজে নির্ধারণ করে দিলে চাপের মুখে Tor কিউতে থাকা সেলগুলো বাতিল করে দেয়, ফলে রিলেটি টিকে থাকে; অন্যথায় মেমোরি বাড়তে থাকলে কার্নেল প্রসেসটিকে কিল করে দেয়।
ফায়ারওয়ালে ORPort উন্মুক্ত করা
ইনবাউন্ড ট্রাফিকের ক্ষেত্রে, ইন্টারনেট থেকে যেকোনো জায়গা থেকে ORPort-এ পৌঁছানো সম্ভব হতে হবে। আউটবাউন্ড ট্রাফিকের ক্ষেত্রে, রিলেটিকে কোনো বিধিনিষেধের মধ্যে রাখবেন না: এটি হাজার হাজার অন্যান্য রিলের সাথে বিভিন্ন পোর্টে সংযোগ স্থাপন করে, তাই আউটবাউন্ডের জন্য কোনো allowlist তৈরি করলে তা রিলেটিকে অকার্যকর করে ফেলবে।
sudo ufw allow 9001/tcp comment 'tor ORPort'
sudo ufw status verboseএরপর প্রোভাইডারের নিজস্ব নেটওয়ার্ক ফায়ারওয়াল পরীক্ষা করুন। অনেক কন্ট্রোল প্যানেল ভার্চুয়াল মেশিনের সামনে একটি প্যাকেট ফিল্টার চালায়। সেক্ষেত্রে ufw দিয়ে যোগ করা কোনো রুল সেখানে কাজ করবে না; ফলে সার্ভারের ভেতরে পোর্টটি খোলা দেখালেও বাইরে থেকে তা বন্ধ দেখাবে। আপনি যদি ufw-এর সাথে পরিচিত না হন, তবে প্রতিটি VPS-এ যে ufw রুলগুলো থাকা প্রয়োজন নিবন্ধটি দেখুন, যেখানে ডিফল্ট পলিসি এবং রুলগুলো যেভাবে কাজ করে তা বিস্তারিত আলোচনা করা হয়েছে।
আপনার প্ল্যান অনুযায়ী ব্যান্ডউইথ নির্ধারণ করুন
ম্যানুয়ালটিতে RelayBandwidthRate-কে একটি আলাদা টোকেন বাকেট হিসেবে বর্ণনা করা হয়েছে, যা "এই নোডে রিলে করা ট্রাফিকের গড় ইনকামিং ব্যান্ডউইথ ব্যবহারকে নির্দিষ্ট বাইট প্রতি সেকেন্ডে সীমাবদ্ধ করে এবং আউটগোয়িং ব্যান্ডউইথ ব্যবহারকেও একই মানে সীমাবদ্ধ রাখে"। এটি দুবার পড়ুন। এই সীমা প্রতিটি দিকের জন্য আলাদাভাবে প্রযোজ্য। 1 Mbit/s-এ সেট করা একটি রিলে একই সময়ে 1 Mbit/s ইন এবং 1 Mbit/s আউট ট্রাফিক সরাতে পারে, এবং যে প্রোভাইডার উভয় দিকই পরিমাপ করে, তারা এই দুটির যোগফল বিল করে।
The data behind this chart
[
{
"label": "1 Mbit/s",
"torrc_rate": "125 KBytes",
"gb_per_day": 21.6,
"gb_per_month": "648"
},
{
"label": "2 Mbit/s",
"torrc_rate": "250 KBytes",
"gb_per_day": 43.2,
"gb_per_month": "1,296"
},
{
"label": "5 Mbit/s",
"torrc_rate": "625 KBytes",
"gb_per_day": 108,
"gb_per_month": "3,240"
},
{
"label": "10 Mbit/s",
"torrc_rate": "1250 KBytes",
"gb_per_day": 216,
"gb_per_month": "6,480"
},
{
"label": "20 Mbit/s",
"torrc_rate": "2500 KBytes",
"gb_per_day": 432,
"gb_per_month": "12,960"
}
]5 সারিগুলো গাণিতিক হিসাব, কোনো পরিমাপ নয়: এগুলো দেখায় যে একটি রিলে যদি টানা 30 দিন উভয় দিকেই এই হারে চলে, তবে তার খরচ কত হবে। একটি বাস্তব রিলে বেশিরভাগ সময় তার সীমার নিচে থাকে, বিশেষ করে প্রথম কয়েক সপ্তাহে। টেবিলটি ব্যবহার করুন এমন সেটিংস বাদ দেওয়ার জন্য যা আপনার বাজেটে কুলাবে না, গিগাবাইট পর্যন্ত সঠিক ইনভয়েস অনুমান করার জন্য নয়।
প্রতি দিকে 1 Mbit/s হারে একটি রিলে প্রতিদিন প্রায় 21.6 GB ট্রাফিক সরায়, তাই 30 দিনের এক মাসে প্রায় 648 GB মিটারড ট্রাফিক খরচ হয়। এটি 1 TB অ্যালাউন্সের মধ্যে থাকে এবং আপডেট ও ব্যাকআপের জন্য বাড়তি জায়গা থাকে। 2 Mbit/s-এ উন্নীত করলে মাসে 1,296 GB খরচ হয়, যা 1 TB প্ল্যানের সীমা অতিক্রম করে। শেষ সারিটি, 20 Mbit/s, মাসে 12,960 GB ট্রাফিক ব্যবহার করে এবং এটি শুধুমাত্র আনমিটারড পোর্টের জন্য উপযুক্ত। যদি আপনার প্রোভাইডার শুধুমাত্র আউটবাউন্ড ট্রাফিকের বিল করে, তবে প্রতিটি সংখ্যা অর্ধেক করে নিন। রেট সেট করার আগে জেনে নিন আপনার প্রোভাইডার কীভাবে বিল করে, কারণ এই দুই ধরনের হিসাবের মধ্যে দুই গুণের পার্থক্য থাকে।
এখন কনফিগারেশনের পালা। প্রথমে রেট লিমিট, তারপর কোটা।
RelayBandwidthRate 125 KBytes
RelayBandwidthBurst 250 KBytes
AccountingMax 400 GBytes
AccountingRule sum
AccountingStart month 1 00:00RelayBandwidthBurst হলো টোকেন বাকেটের আকার, তাই এটি গড় ঠিক রেখে স্বল্প সময়ের জন্য রেটের চেয়ে বেশি স্পাইক বা ট্রাফিক প্রবাহের অনুমতি দেয়। রেটের প্রায় দ্বিগুণ মান একটি যুক্তিসঙ্গত পছন্দ।
AccountingRule হলো সেই লাইন যা বেশিরভাগ অপারেটর উপেক্ষা করেন। ডিফল্ট মান হলো max, যা কোটার বিপরীতে দুটি দিকের মধ্যে যেটি বড় সেটিকে পরিমাপ করে। ডিফল্ট সেটিংসে, AccountingMax 400 GBytes 400 GB ইন এবং 400 GB আউট ট্রাফিকের অনুমতি দেয়, যা উভয় দিক গণনা করা মিটারে 800 GB হিসেবে গণ্য হয়। AccountingRule sum রিড এবং রাইট উভয়কেই একটি কোটার বিপরীতে গণনা করে, যা মূলত একটি ট্রান্সফার অ্যালাউন্স পরিমাপ করে।
AccountingStart লিখুন, কখনোই শুধু AccountingMax লিখবেন না। কোটা হলো সংখ্যাটি, আর স্টার্ট লাইন হলো সেই সময়কাল যখন এটি রিসেট হয়। সময়কাল ছাড়া কোটা সেট করলে রিলেটি হাইবারনেশনে চলে যাবে এবং নিজে থেকে আর সচল হবে না।
হাইবারনেশন একটি কঠোর ব্যবস্থা। যখন কোটা শেষ হয়ে যায়, tor এটি লগ করে এবং নতুন কাজ নেওয়া বন্ধ করে দেয়:
Bandwidth soft limit reached; commencing hibernation. No new connections will be acceptedপরবর্তী পিরিয়ডের ঠিক শুরুতেই রিলেটি সচল হয় না। Tor ট্র্যাক করে যে গত কোটা কত দ্রুত শেষ হয়েছে এবং নতুন ইন্টারভালের মধ্যে একটি র্যান্ডম সময় বেছে নেয়, যাতে হাজার হাজার রিলে একই সেকেন্ডে নেটওয়ার্কে ফিরে না আসে। যে রিলে প্রতি মাসের শেষ সপ্তাহে বন্ধ হয়ে যায়, সেটি তার স্ট্যাবিলিটি বা স্থায়িত্ব হারায়, যা ডিরেক্টরি অথরিটিগুলো পরিমাপ করে। RelayBandwidthRate এমনভাবে নির্ধারণ করুন যাতে ক্যাপ বা সীমা কখনোই পূর্ণ না হয়, এবং AccountingMax-কে ব্যাকস্টপ হিসেবে রাখুন যা আপনার ইনভয়েসকে সুরক্ষিত রাখবে।
রিলে চালু করুন এবং এটি reachable কি না তা নিশ্চিত করুন
sudo systemctl restart tor@default
sudo systemctl status tor@default
sudo journalctl -u tor@default -n 50কয়েক মিনিটের মধ্যে লগে নিচের লাইনটি দেখা উচিত:
Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.এই বাক্যটির অর্থ হলো অন্যান্য রিলে আপনার ORPort-এর সাথে সংযুক্ত হয়েছে এবং এর মাধ্যমে একটি সার্কিট তৈরি করেছে। যতক্ষণ না এটি প্রদর্শিত হয়, আপনার রিলে ডিরেক্টরিতে থাকবে না এবং কোনো ট্রাফিক বহন করবে না। ব্যর্থতার বার্তাটি দেখতে এমন হয়:
Your server has not managed to confirm reachability for its ORPort(s) at 203.0.113.10:9001. Relays do not publish descriptors until their ORPort and DirPort are reachable. Please check your firewalls, ports, address, /etc/hosts file, etc.ধাপে ধাপে সমস্যাটি সমাধান করুন। ufw-তে ORPort খোলা আছে কি না তা দেখুন। এটি প্রোভাইডারের আলাদা নেটওয়ার্ক ফায়ারওয়ালেও খোলা আছে কি না তা নিশ্চিত করুন। ওই বার্তায় থাকা ঠিকানাটি ইন্টারনেটে আপনার রাউটেবল ঠিকানা কি না তা যাচাই করুন, এটি NAT সেটআপের কোনো প্রাইভেট ঠিকানা নয়। nc -vz 203.0.113.10 9001 ব্যবহার করে অন্য কোনো মেশিন থেকে পোর্টটি পরীক্ষা করুন। Tor নিজে থেকেই সেলফ-টেস্ট পুনরাবৃত্তি করে, তাই ফায়ারওয়াল ঠিক করলে তা স্বয়ংক্রিয়ভাবে শনাক্ত হয়, তবে রিস্টার্ট দিলে তা তাৎক্ষণিকভাবে কার্যকর হয়।
আপনার রিলের স্থায়ী পরিচয় হলো এর ফিঙ্গারপ্রিন্ট:
sudo cat /var/lib/tor/fingerprintডেসক্রিপ্টর পাবলিশ হওয়ার প্রায় তিন ঘণ্টা পর, রিলেটি Relay Search-এ দেখা যাবে। আপনার নিকনেম দিয়ে সার্চ করুন অথবা ফিঙ্গারপ্রিন্টটি পেস্ট করুন। ওই পেজটিতে নেটওয়ার্ক আপনার রিলে সম্পর্কে কী ধারণা রাখে তা দেখা যায়: এটি কী কী ফ্ল্যাগ ধারণ করে, অথরিটিগুলো একে কী পরিমাণ ওয়েট দেয় এবং এটি কোন ভার্সন পাবলিশ করছে।
একটি নতুন Tor relay-তে কেন প্রায় কোনো traffic থাকে না?
কারণ নেটওয়ার্ক এখনও এটিকে পরিমাপ করেনি, আর এই পরিমাপের প্রক্রিয়ায় কয়েক সপ্তাহ সময় লাগে। Tor Project এই ramp-up প্রক্রিয়াটিকে চারটি ধাপে বর্ণনা করেছে, কিন্তু যে অপারেটর এটি পড়েননি, তিনি মনে করেন relay-টি নষ্ট হয়ে গেছে এবং সেটিংস পরিবর্তন করতে শুরু করেন।
প্রথম তিন দিন relay-টি unmeasured থাকে। এটি নিজের self-test ফলাফল রিপোর্ট করে, কিন্তু directory authorities প্রকাশিত weight-কে 20 KB-তে সীমাবদ্ধ রাখে, তাই ক্লায়েন্টরা প্রায় কখনোই এটিকে নির্বাচন করে না। তৃতীয় দিন থেকে অষ্টম দিনের মধ্যে bandwidth authorities এটিকে বাস্তবে পরিমাপ করে এবং weight বাড়তে থাকে, কিন্তু এটি শুধুমাত্র middle hop হিসেবে ব্যবহৃত হয়, কারণ কোনো ক্লায়েন্টই একটি নতুন relay-কে তাদের প্রথম hop হিসেবে ব্যবহার করতে চায় না।
অষ্টম দিনের দিকে relay-টি Guard flag পাওয়ার যোগ্য হয়ে ওঠে। এই flag পাওয়ার পর traffic কমে যায়, যা সবাইকে অবাক করে: ক্লায়েন্টরা middle hop নির্বাচনের সময় guard-দের এড়িয়ে চলে, কারণ তারা ধরে নেয় যে একটি guard ইতিমধ্যেই ব্যস্ত, তাই relay-টি guard traffic পাওয়ার আগেই middle traffic হারিয়ে ফেলে। ক্লায়েন্টরা তাদের guard সেট পরিবর্তন করার সাথে সাথে এটি আবার পূর্ণ হতে থাকে, যার জন্য কয়েক সপ্তাহ সময় লাগে। প্রায় 68 দিনের মাথায় এটি একটি স্থিতিশীল অবস্থায় পৌঁছায়, যেখানে relay-টি বাদ দেওয়া ক্লায়েন্টের সংখ্যা এবং নতুন যুক্ত হওয়া ক্লায়েন্টের সংখ্যা সমান হয়ে যায়।
সুতরাং, বাস্তবসম্মত প্রত্যাশা হলো প্রথম তিন দিন কোনো traffic থাকবে না, এক সপ্তাহ পর কিছু traffic আসবে, এবং দুই মাস পর প্রকৃত লোড দেখা যাবে। একটি সেটিং পরিবর্তন করুন, তারপর সেটি কী প্রভাব ফেলল তা দেখার জন্য এক সপ্তাহ অপেক্ষা করুন। পোর্ট 9001-এর বিপরীতে TCP চেকসহ একটি self-hosted Uptime Kuma status page ব্যবহার করা আপনার অস্থিরতা কমানোর জন্য বেশি কার্যকর: এটি সেই প্রশ্নের উত্তর দেয় যা আপনি নিয়ন্ত্রণ করতে পারেন, অর্থাৎ পোর্টটি এখনও সাড়া দিচ্ছে কি না।
nyx দিয়ে relay পর্যবেক্ষণ করা
nyx হলো চলমান relay-এর জন্য একটি টার্মিনাল মনিটর। এটি tor-এর control port-এর সাথে যোগাযোগ করে, তাই প্রথমে torrc-এ এটি সক্রিয় করুন:
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1ControlPort শুধুমাত্র 127.0.0.1-এ লিসেন করে এবং cookie authentication-এর অর্থ হলো কোনো প্রোগ্রামকে কমান্ড দেওয়ার আগে একটি গোপন ফাইল পড়তে হবে। Tor সেই কুকিটি /run/tor/control.authcookie-এ debian-tor ব্যবহারকারীর জন্য mode 600 হিসেবে লেখে, যাতে অন্য কেউ এটি পড়তে না পারে। CookieAuthFileGroupReadable 1 এটিকে গ্রুপের জন্য উন্মুক্ত করে দেয়, যার ফলে আপনার নিজের অ্যাকাউন্ট sudo ছাড়াই nyx চালাতে পারে।
sudo apt install -y nyx
sudo adduser "$USER" debian-tor
sudo systemctl restart tor@defaultলগ আউট করে পুনরায় লগ ইন করুন, তারপর nyx চালান। নতুন গ্রুপটি লগ ইন করার সময় কার্যকর হয়, তাই একই শেল সেশনে nyx চালালে কনফিগারেশন সঠিক থাকা সত্ত্বেও কুকি ফাইলে পারমিশন এরর দেখাবে। nyx লাইভ ব্যান্ডউইথ, আপটাইম, লগ স্ট্রিম এবং কানেকশন লিস্ট দেখায়। প্রথম কয়েক সপ্তাহে ব্যান্ডউইথ গ্রাফটি আপনার RelayBandwidthRate-এর নিচে থাকছে কি না, তা পর্যবেক্ষণ করা জরুরি।
একাধিক রিলে চালানো: MyFamily এবং ফ্যামিলি কি (family keys)
আপনার যদি একটি মাত্র রিলে থাকে, তবে এই অংশটি এড়িয়ে যান। একই অপারেটরের অধীনে দুই বা ততোধিক রিলে চললে সেগুলোকে একে অপরের সাথে ঘোষণা করতে হবে। এটি নিশ্চিত করে যে, ক্লায়েন্টরা এমন কোনো সার্কিট তৈরি করবে না যা আপনার মেশিনগুলো দিয়েই প্রবেশ করে এবং বের হয়; কারণ এটি ঘটলে একজন অপারেটর সার্কিটের উভয় প্রান্তই দেখতে পাবে।
দীর্ঘদিন ধরে প্রচলিত পদ্ধতি হলো প্রতিটি রিলের torrc ফাইলে MyFamily ব্যবহার করা, যেখানে অন্য সব রিলের ফিঙ্গারপ্রিন্ট তালিকাভুক্ত থাকে:
MyFamily AAAAAAAAAA,BBBBBBBBপ্রতিটি রিলে অন্য সব রিলের তালিকা রাখে, তাই চতুর্থ কোনো রিলে যোগ করতে হলে চারটি ফাইলই এডিট করতে হয়। Tor 0.4.9 সংস্করণে এর পরিবর্তে একটি ফ্যামিলি কি (family key) ব্যবহারের ব্যবস্থা করা হয়েছে। একটি কি তৈরি করুন এবং তারপর সেটি শেয়ার করুন:
tor --keygen-family myfamilyএটি myfamily.secret_family_key ফাইলটি তৈরি করবে এবং একটি FamilyId লাইন প্রিন্ট করবে। কি ফাইলটি প্রতিটি রিলের DataDirectory-এর keys সাবডিরেক্টরিতে (Debian এবং Ubuntu-তে /var/lib/tor/keys) কপি করুন এবং .secret_family_key সাফিক্সটি বজায় রাখুন। প্রতিটি torrc ফাইলে প্রিন্ট করা FamilyId লাইনটি যোগ করুন এবং sudo systemctl reload tor@default কমান্ড দিয়ে রিলোড করুন। আপাতত MyFamily তালিকাটিও রেখে দিন। যেসব ক্লায়েন্ট এখনও ফ্যামিলি সার্টিফিকেট বুঝতে পারে না, তারা লিগ্যাসি তালিকাটিই পড়বে। এটি কখন বাদ দেওয়া যাবে, তা Tor Project থেকে ঘোষণা করা হবে।
চলমান অবস্থায় যা যা নষ্ট হতে পারে
ভার্সন পুরনো হয়ে যাওয়া। Unattended upgrades প্যাকেজটি আপডেট করলেও, চলমান প্রসেসটি যতক্ষণ না রিস্টার্ট করা হচ্ছে ততক্ষণ পর্যন্ত পুরনো বাইনারিটিই ব্যবহার করতে থাকে। সার্ভারে থাকা tor --version-এর সাথে Relay Search পেজে প্রদর্শিত ভার্সনটি মিলিয়ে দেখুন। যদি দুটির মধ্যে পার্থক্য থাকে, তবে নেটওয়ার্ক এখনও পুরনো ভার্সনটিই দেখছে; তাই সার্ভিসটি রিস্টার্ট করুন।
ঘড়ির সময়ের পার্থক্য (Clock drift)। কনসেনসাস ডকুমেন্ট এবং সার্টিফিকেটগুলো সময়ের ওপর নির্ভরশীল। তাই যে মেশিনের ঘড়ি অনেক পিছিয়ে বা এগিয়ে থাকে, সেটি কনসেনসাস গ্রহণ করতে পারে না এবং ডেটা পাবলিশ করা বন্ধ করে দেয়। timedatectl কমান্ডটি দিয়ে নিশ্চিত করুন যে সিস্টেম ক্লক সিঙ্ক্রোনাইজড আছে। যদি তা না হয়, তবে systemd-timesyncd সক্রিয় করুন অথবা chrony ইনস্টল করুন।
IP অ্যাড্রেস পরিবর্তন। ডেসক্রিপ্টরে আইপি অ্যাড্রেস উল্লেখ থাকে, তাই অ্যাড্রেস পরিবর্তিত হলে ক্লায়েন্টরা আর রিলে খুঁজে পায় না। প্রোভাইডার পরিবর্তন বা আইপি অ্যাড্রেস পরিবর্তনের পর tor রিস্টার্ট করুন এবং পুনরায় self-test লাইনটি খেয়াল করুন।
রিলে প্রত্যাশার চেয়ে ধীরগতিসম্পন্ন হওয়া। আধুনিক প্রসেসরে Tor-এর রিলে ক্রিপ্টো বেশ কার্যকর। Tor Project-এর মতে, AES-NI সাপোর্ট আছে এমন একটি CPU প্রতিটি দিকে প্রায় 400 থেকে 450 Mbit/s গতি দিতে সক্ষম। এই সীমার অনেক আগেই আপনি পোর্ট স্পিড এবং ডেটা ট্রান্সফার লিমিটের কারণে সীমাবদ্ধ হয়ে পড়বেন। এই কারণেই হার্ডওয়্যারের চেয়ে উপরের অ্যাকাউন্টিং সেকশনটি বেশি গুরুত্বপূর্ণ।
FAQ
একটি Tor relay কতটুকু ব্যান্ডউইথ ব্যবহার করে?
আপনি যতটুকু অনুমতি দেবেন, তার বেশি নয়। RelayBandwidthRate প্রতিটি দিকে আলাদাভাবে রিলে করা ট্র্যাফিক সীমিত করে, তাই 1 Mbit/s-এ সেট করা একটি রিলে একই সাথে 1 Mbit/s ইনকামিং এবং 1 Mbit/s আউটগোয়িং ট্র্যাফিক বহন করতে পারে। উভয় দিক গণনা করলে এটি দিনে প্রায় 21.6 GB বা 30 দিনের মাসে 648 GB-এর সমান। এই হারের নিচে একটি কঠোর মাসিক কোটা হিসেবে AccountingRule sum সহ AccountingMax যোগ করুন।
Tor relay চালালে কি আমি অপব্যবহারের (abuse) অভিযোগ পাব?
একটি guard বা middle relay শুধুমাত্র অন্যান্য Tor relay-এর কাছে ট্র্যাফিক পাঠায় এবং ব্যবহারকারীর জন্য সরাসরি কোনো ওয়েবসাইটের সাথে সংযোগ স্থাপন করে না, তাই Tor-এর মাধ্যমে কেউ কী করেছে তার অভিযোগ exit অপারেটরের কাছে যায়, আপনার কাছে নয়। আপনি যা দেখতে পারেন তা হলো স্ক্যানিং এবং মাঝে মাঝে IP reputation লিস্টিং, কারণ ঠিকানাটি সর্বজনীনভাবে একটি রিলে হিসেবে তালিকাভুক্ত থাকে। Exit relay-গুলোই অপব্যবহারের মেইল এবং আইনি নোটিশ পায়, এবং তাদের এমন একটি প্রোভাইডার প্রয়োজন যারা আগে থেকেই এটি সামলাতে সম্মত হয়েছে। যেকোনো ধরনের রিলে শুরু করার আগে আপনার প্রোভাইডারের শর্তাবলি পড়ে নিন।
আমার নতুন Tor relay-তে কোনো ট্র্যাফিক আসছে না কেন?
কারণ নতুন রিলেগুলো পরিমাপ না হওয়া পর্যন্ত ডিজাইন অনুযায়ী থ্রটল (throttle) করা থাকে। প্রথম তিন দিন ডিরেক্টরি অথরিটিগুলো প্রকাশিত ওজন (weight) 20 KB-তে সীমাবদ্ধ রাখে, তাই ক্লায়েন্টরা প্রায় কখনোই সেই রিলে নির্বাচন করে না। ব্যান্ডউইথ অথরিটিগুলো তৃতীয় দিন থেকে এটি পরিমাপ করে, অষ্টম দিনের দিকে এটি Guard ফ্ল্যাগের জন্য যোগ্য হয়ে ওঠে এবং সেই সময়ে ট্র্যাফিক আবার কমে যায় কারণ ক্লায়েন্টরা মিডল হপ নির্বাচনের সময় গার্ড এড়িয়ে চলে। 68 দিনের দিকে পূর্ণ লোড আসে। লগ-এ "Self-testing indicates your ORPort is reachable from the outside" বার্তাটি দেখা যাচ্ছে কি না নিশ্চিত করুন, তারপর এটি নিজের মতো চলতে দিন।
আমি কি 1 TB ট্রান্সফার অ্যালাউন্সসহ কোনো VPS-এ Tor relay চালাতে পারি?
হ্যাঁ, প্রতিটি দিকে প্রায় 1 Mbit/s হারে, যা হলো RelayBandwidthRate 125 KBytes। যদি আপনার প্রোভাইডার উভয় দিকই পরিমাপ করে, তবে এটি মাসে প্রায় 648 GB হয়, যা আপডেট এবং ব্যাকআপের জন্য পর্যাপ্ত জায়গা রাখে। AccountingRule sum এবং AccountingStart month 1 00:00 সহ AccountingMax 400 GBytes যোগ করুন যাতে প্ল্যানের সীমা অতিক্রম করার পরিবর্তে রিলেটি হাইবারনেট মোডে চলে যায়। যদি প্রোভাইডার শুধুমাত্র আউটবাউন্ড ট্র্যাফিকের জন্য বিল করে, তবে আপনি এই হার দ্বিগুণ করতে পারেন।
আমি যদি মাত্র একটি রিলে চালাই, তবে কি আমার MyFamily সেট করার প্রয়োজন আছে?
না। ফ্যামিলি ডিক্লারেশন বা ঘোষণাগুলো এই কারণে থাকে যাতে ক্লায়েন্টরা একই অপারেটরের মালিকানাধীন দুটি রিলে দিয়ে সার্কিট তৈরি না করে, যা একটি রিলে থাকলে অর্থহীন। দ্বিতীয় রিলে যোগ করার সাথে সাথেই এটি সেট করুন: প্রতিটি রিলের MyFamily লাইনে প্রতিটি রিলের ফিঙ্গারপ্রিন্ট তালিকাভুক্ত করুন, অথবা Tor 0.4.9-এ প্রবর্তিত ফ্যামিলি কি ব্যবহার করুন, যা ক্রমবর্ধমান তালিকার পরিবর্তে একটি মাত্র FamilyId বিতরণ করে।