VPN کے ذریعے مائننگ پول: سیشن کو درست راستے پر رکھیں
پول مائنر ایک ہی بیرونی Stratum سیشن کھولتا ہے، peer پورٹ نہیں۔ ٹنل کو اُس عمل کے نیچے رکھیں اور راستہ اور حل کنندہ اُس کی نام کی جگہ سے پڑھیں۔
مائننگ سافٹ ویئر ایک ہی ساکٹ ایک ہی پتے کی طرف کھلا رکھتا ہے، اور ٹنل، راستے اور جمع شدہ کام سے متعلق ہر سوال اُسی ساکٹ پر منحصر ہے۔ وہ ساکٹ پول کے آخری مقام کی طرف جانے والا بیرونی کلائنٹ سیشن ہے، peer وصول کرنے والا سننے والا نہیں۔ نیچے کا سفر اُسے پول کی جاری کردہ چار اقدار سے اُس حصے تک لے جاتا ہے جو پول نے واقعی درج کیا، اور میزبان کی دیگر خدمات کو چھیڑتا نہیں۔ ہر قدم ایسا جواب دیتا ہے جسے آپ موازنہ کر سکیں، تاثر نہیں۔
اُس آخری مقام سے شروع کریں جو پول نے واقعی جاری کیا
پول آپ کو چار اقدار دیتا ہے جو پورا معاہدہ بناتی ہیں: میزبان کا نام یا پتہ، پورٹ، پروٹوکول کی قسم اور اکاؤنٹ کی تار۔ یہ پول کے ڈیش بورڈ یا خوش آمدید پیغام سے لیں، کسی دوسرے پول کی رہنمائی سے نہیں۔ اسی خدمت کے علاقائی شارڈ موجود ہیں، اس لیے پرانی رہنمائی سے نقل کیا گیا میزبان نام اب بھی جڑ سکتا ہے اور اب بھی ایسے اکاؤنٹ میں جمع ہو سکتا ہے جو آپ کبھی استعمال نہیں کرنا چاہتے تھے۔ چاروں اقدار بعینہ مائنر کی ترتیب میں نقل کریں، کیونکہ دوبارہ لکھی گئی اکاؤنٹ تار ایک جدا کرنے والا گم کر دیتی ہے۔
جو بہاؤ آپ روٹ کر رہے ہیں وہی ہے جسے Bitcoin ڈویلپر گائیڈ Stratum سیشن کہتا ہے: ایک مستقل دو طرفہ TCP کنکشن جس میں پول کام تقسیم کرتا ہے اور مائنر حصے واپس کرتا ہے۔ یہ مکمل نوڈ کے peer روابط یا والٹ کی چین ہم آہنگی کا وہی بہاؤ نہیں، اور اُن سب کو ایک ہی ٹریفک کلاس میں سمیٹنا ہی وہ جگہ ہے جہاں زیادہ تر الجھن شروع ہوتی ہے۔ اس پالیسی کے تحت صرف پہلا آتا ہے۔
جہاں پول TLS پیش کرتا ہے، وہاں سرور کی تصدیق رکھیں جو اُس کی دستاویزات لازم ٹھراتی ہیں۔ ٹنل آپ کی مشین سے VPN سرور تک کی چھلانگ کو خفیہ کرتا ہے اور وہیں ختم ہو جاتا ہے؛ یہ دوسری طرف جواب دینے والے کی ضمانت نہیں دیتا۔ اگر آپ چاہتے ہیں کہ سیشن بے پردہ نکلنے کے باوجود بچا رہے تو دونوں جانچیں رکھیں، ہر سرے پر ایک۔
ٹنل کو عمل سے باندھیں، گھر سے نہیں
دو جڑنے کے مقام کام کرتے ہیں: VPN کلائنٹ کو اُس نیٹ ورک نام کی جگہ کے اندر چلائیں جو مائنر استعمال کرتا ہے، یا اُس نام کی جگہ کو ایسا گیٹ وے دیں جو اُس کی ٹریفک ٹنل میں لے جائے۔ دونوں ترتیبیں سیشن کو پول کے دیکھنے سے پہلے راستے پر رکھ دیتی ہیں۔ عام ناکامی یہ ہے کہ کلائنٹ میزبان پر ہو، مائنر اپنے پل والے کنٹینر میں ہو، اور میزبان کا راستہ ایسا ہو جسے کنٹینر کبھی نہ پوچھے۔ کلائنٹ کی ونڈو صحت مند دکھائی دیتی ہے جبکہ پول آپ کے گھر کا پتہ درج کر رہا ہوتا ہے۔
کچھ بھی محدود کرنے سے پہلے خود ٹنل کی ترسیل جانچیں۔ کلائنٹ کو اپنے سرور تک نچلی تہہ سے پہنچنا ہوتا ہے، اس لیے ہر پیکٹ پکڑنے والی پالیسی وہ پیکٹ بھی پکڑتی ہے جو ٹنل بناتے۔ پھر ٹنل شروع نہیں ہو سکتا اور کچھ اور بھی باہر نہیں جاتا۔ کلائنٹ کی منقسم ٹنل خصوصیت سے منتخب کریں کہ ٹنل میں کیا جاتا ہے؛ ڈیفالٹ راستوں کو ہاتھ سے بدلنا ہی وہ طریقہ ہے جس سے نچلی تہہ غائب ہو جاتی ہے۔
پالیسی قائم ہونے کے بعد، اُس نام کی جگہ میں ساکٹ کی جدول پڑھیں جس کا مائنر مالک ہے۔ پول کی پورٹ کی طرف بہاؤ ٹنل کے انٹرفیس پر ہونا چاہیے، اور دو کمانڈیں اس سوال کا جواب دیتی ہیں۔ نیچے کی پورٹ ایک مثال ہے؛ اُس سے بدلیں جو پول نے جاری کی۔
sudo nsenter -t "$(pidof cgminer)" -n ss -tnp state established 'dport = :3333'
sudo nsenter -t "$(pidof cgminer)" -n ip route get 203.0.113.10راستہ اور حل کنندہ خود مائنر کے سیاق سے پڑھیں
روٹنگ اور ناموں کا حل ہر نام کی جگہ کے لیے ہے، اس لیے عام شیل میں چلائی گئی جانچ غلط مشین بیان کرتی ہے جب بھی مائنر کنٹینر میں ہو۔ پہلے نام کی جگہ میں داخل ہوں، پھر پوچھیں کون سا انٹرفیس پیکٹ پول کے پتے تک لے جائے گا اور کون سا حل کنندہ اُس کے میزبان نام کا جواب دے گا۔ میزبان کے جواب منتقل نہیں ہوتے، اور اُن کے درمیان فرق غلط جگہ پر ڈالے گئے الزام کا عام ذریعہ ہے۔
جس انٹرفیس پر آپ پہنچیں اُس کا نام بتائیں: ٹنل کا مطلب ہے سیشن مطلوبہ راستے پر ہے، جبکہ فزیکل لنک کا مطلب ہے کہ کوئی قاعدہ آپ کی توقع سے پہلے ملا۔ سابقہ کی لمبائی پہلے فیصلہ کرتی ہے، پھر میٹرک، پھر پالیسی کے قواعد، اس لیے کئی ڈیفالٹ اندراجات والی جدول پیکٹ دگنے نہیں کرتی، صرف ہارتی ہے۔
حل کنندہ راستوں سے الگ ناکام ہوتے ہیں۔ /etc/resolv.conf کو دوبارہ لکھنے والا ٹنل نام کی جگہ کو ایسے حل کنندہ کی طرف اشارہ کرنے دے سکتا ہے جو صرف ٹنل کے اندر سے قابل رسائی ہو، اور یہ کسی بھی TCP مصافحے سے پہلے ناکام ہوتا ہے۔ پول کے میزبان نام کو نام کی جگہ کے اندر حل کریں اور شائع شدہ پتے سے موازنہ کریں۔ اگر تلاش وقت سے گزر جائے یا کچھ اور واپس کرے، تو راستوں کو چھونے سے پہلے حل درست کریں۔
پول کے کلائنٹ اور نوڈ کے سننے والے کو الگ رکھیں
پورٹ 8333 Bitcoin Core کی peer پورٹ ہے، جہاں مکمل نوڈ آنے والے رابطوں کو سنتا ہے؛ پول مائنر کو یہ کبھی کھلی نہیں چاہیے، اور اِسے کھولنا بیرونی خرابی درست نہیں کرتا۔ آنے والے سننے والے اور جانے والے سیشن متضاد کردار ہیں متضاد اعتماد کے مفروضوں کے ساتھ۔ مائنر کی ترتیب میں کوئی چیز اُس پورٹ کو نہیں باندھتی، اس لیے بند پورٹ کوئی بھی ایسی خرابی نہیں سمجھا سکتی جو وہ بتاتا ہے۔ اِس لیے نوڈ کی رسائی کے لیے لکھا گیا مشورہ ایسی میزبان پر عوامی خدمت چلتی چھوڑ سکتا ہے جسے صرف حصے بھیجنے تھے۔
اگر ایک ہی مشین واقعی دونوں کرتی ہے تو ہر کردار کو اپنے رسائی کے فیصلے والی الگ خدمت سمجھیں۔ نوڈ کا سننے والا اُس پالیسی کے پیچھے ہے جو آپ عوامی خدمات پر لگاتے ہیں، اور مائنر کا سیشن اُس بیرونی پالیسی سے تعلق رکھتا ہے جو ٹنل چنتی ہے۔ درج کریں کہ میزبان کیا کردار ادا کرتا ہے اور جب یہ بدلے تو دوسرے کردار کے قواعد ہٹا دیں، کیونکہ بچا ہوا اجازت کا قاعدہ اپنی وجہ سے زیادہ جیتا رہتا ہے۔
ثابت کریں کہ پول نے کام وصول کیا
مصروف پنکھا اور بڑھتی ہیش ریٹ دکھاتے ہیں کہ مائنر حساب کر رہا ہے، نہ کہ کچھ پول تک پہنچا۔ ثبوت کلائنٹ کے بھیجنے کے شمار کنندوں میں یا پول کے ڈیش بورڈ پر ہے: قبول شدہ حصے، مسترد حصے اور ہر مستردگی کے ساتھ لگائی گئی وجہ۔ یہ اعداد تین ایسی خرابیاں الگ کرتے ہیں جو باہر سے یکساں دکھتی ہیں: کوئی سیشن نہیں، بغیر جمع کے سیشن، اور ایسا سیشن جو مسلسل دوبارہ جڑتا ہے۔ کسی بھی ترتیب کو بدلنے سے پہلے یہ پڑھیں۔
تفصیلی لاگ کے ساتھ ایک کنکشن کی کوشش دیکھیں اور آخری مرحلہ لکھیں جو کامیاب ہوا۔ جس مرحلے پر ترتیب رکتی ہے وہ ارد گرد کے کسی بھی ایک پیغام سے زیادہ کارآمد ہے:
| Last stage reached | What it rules out | Probe to run next |
|---|---|---|
| Name lookup completed | Resolver and namespace reachability | ip route get for the returned address |
| TCP connect completed | Route and egress filtering | ss -tnp on the tunnel interface |
| Subscription returned a job | Endpoint or protocol mismatch | Accepted against rejected counts |
پھر کلائنٹ کو ایک مقررہ ونڈو تک چلنے دیں اور اُس کے لاگ سے دونوں نتائج گنیں۔ ہر شمار کنندہ کے لیے ایک grep کافی ہے، اور اُن کا ایک ہی ونڈو پر موازنہ سست پول کو ٹوٹے راستے سے الگ کرتا ہے۔ راستے کو وہاں ڈھالیں جہاں آپ کا کلائنٹ لکھتا ہے، کیونکہ دونوں گنتی مقام پر منحصر نہیں:
grep -c Accepted /var/log/miner.log
grep -c Rejected /var/log/miner.logاگر کوئی قاعدہ ہر بار ٹنل گرنے پر پول سے براہ راست رابطہ منع کرتا ہے تو اُسے پول کے آخری مقام پر واضح بندش کے طور پر بیان کریں۔ ایسا کلائنٹ جو خاموشی سے فزیکل لنک پر دوبارہ کوشش کرتا ہے مائننگ جاری رکھے گا اور اُس قاعدے کی خلاف ورزی جاری رکھے گا، اور اُس کی حالت کی اسکرین اِس کا ذکر نہیں کرے گی۔ قاعدہ آزمائیں ٹنل کو جان بوجھ کر گرا کر اور یقینی بنا کر کہ پول کی پورٹ بالکل قابل رسائی نہیں۔