Майнинг софтверот држи еден сокет отворен кон една адреса, и секое прашање за тунелот, рутата и кредитираната работа виси на тој сокет. Тој сокет е излезна клиентска сесија кон крајната точка на пулот, а не слушател што прифаќа peer-и. Прошетката подолу го следи од четирите вредности што ги издаде пулот до дел што пулот навистина го книжел, и ги остава другите услуги на хостот на мира. Секој чекор дава одговор што можете да го споредите, а не впечаток.

Започнете од крајната точка што пулот навистина ја издаде

Пулот ви дава четири вредности што го сочинуваат целиот договор: име на хост или адреса, порта, варијанта на протоколот и низа за сметка. Земете ги од таблата на пулот или од пораката за добредојде, не од упатство за друг пул. За истата услуга постојат регионални шардови, така што име на хост копирано од стар водич може да се поврзе и понатаму да кредитира сметка што никогаш не сте сакале да ја користите. Копирајте ги четирите вредности дословно во конфигурацијата на мајнерот, зашто препишана низа за сметка губи разделувач.

Текот што го рутирате е тој што водичот за разработувачи на Bitcoin го нарекува Stratum сесија: постојана двонасочна TCP врска во која пулот распределува работа, а мајнерот враќа делови. Тоа не е истиот тек како peer врските на целосен јазол или синхронизацијата на синџирот на паричник, и токму преклопувањето нив во една класа на сообраќај е местото каде што започнува најголемиот дел од конфузијата. Само првиот припаѓа под оваа политика.

Каде што пулот нуди TLS, задржете ја проверката на серверот што ја бара неговата документација. Тунелот го шифрира хопот од вашата машина до VPN серверот и завршува таму; тој не гарантира за оној што одговара од другата страна. Задржете ги двете проверки, по една на секој крај, ако сакате сесијата да преживее компромитиран излез.

Прикачете го тунелот на процесот, не на домаќинството

Две точки на прикачување работат: пуштете го VPN клиентот во мрежниот namespace што го користи мајнерот, или дајте му на тој namespace портал што го носи неговиот сообраќај во тунелот. И двете поставки ја ставаат сесијата на патот пред пулот да ја види. Обичниот неуспех е клиент на хостот, мајнер во контејнер со сопствен мост и рута на хостот што контејнерот никогаш не ја прашува. Прозорецот на клиентот изгледа здрав додека пулот ја запишува вашата домашна адреса.

Проверете го сопствениот транспорт на тунелот пред да ограничите што било. Клиентот мора да стигне до својот сервер преку подлогата, па политика што пресретнува секој пакет пресретнува и пакетите што би го изградиле тунелот. Тогаш тунелот не може да стартува и ништо друго не излегува. Изберете со функцијата за поделен тунел на клиентот што влегува во тунелот; рачното уредување на стандардни рути е начинот на кој подлогата исчезнува.

Кога политиката е на место, прочитајте ја табелата со сокети во namespace-от на кој му припаѓа мајнерот. Текот кон портата на пулот треба да стои на интерфејсот на тунелот, и две команди одговараат на тоа прашање. Портата подолу е пример; заменете ја со онаа што пулот ја издаде.

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

Читајте рута и резолвер од сопствениот контекст на мајнерот

Рутирањето и резолуцијата на имиња се по namespace, така што проверка пуштена во обична обвивка ја опишува погрешната машина кога мајнерот е во контејнер. Влезете прво во namespace-от и потоа прашајте кој интерфејс би носел пакет до адресата на пулот и кој резолвер би одговорил за неговото име на хост. Одговорите на хостот не се пренесуваат, и јазот меѓу нив е чест извор на погрешно насочена вина.

Именувајте го интерфејсот што го добивате: тунелот значи дека сесијата е на предвидениот пат, додека физичката врска значи дека правило се совпаднало порано отколку што очекувавте. Должината на префиксот одлучува прва, потоа метриката, потоа правилата на политиката, така што табела со неколку стандардни записи не дуплира пакети, само губи.

Резолверите откажуваат одделно од рутите. Тунел што го препишува /etc/resolv.conf може да го остави namespace-от да покажува на резолвер достапен само од внатрешноста на тунелот, што откажува пред каков било TCP ракување. Решете го името на хостот на пулот внатре во namespace-от и споредете го со објавената адреса. Ако барањето истече или врати нешто друго, поправете ја резолуцијата пред да ги допрете рутите.

Држете ги одделно клиентот на пулот и слушателот на јазолот

Портата 8333 е peer портата на Bitcoin Core, каде целосен јазол слуша за влезни врски; пул-мајнер никогаш не ја потребува отворена и нејзиното отворање не поправа излезен дефект. Влезните слушатели и излезните сесии се спротивни улоги со спротивни претпоставки за доверба. Ништо во конфигурацијата на мајнер не ја врзува таа порта, така што затворена порта не може да објасни никаква грешка што таа ја пријавува. Совет напишан за достапноста на јазол може затоа да остави јавна услуга да работи на хост што требало само да праќа делови.

Ако една машина навистина го прави и едното и другото, третирајте ја секоја улога како одделна услуга со сопствена одлука за пристап. Слушателот на јазолот припаѓа зад политиката што ја применувате на јавни услуги, а сесијата на мајнерот припаѓа на излезната политика што го избира тунелот. Забележете каква улога игра хостот и отстранете ги правилата на другата улога кога тоа ќе се смени, зашто преостанато правило за дозвола ја надживува својата причина.

Докажете дека пулот ја прими работата

Зафатен вентилатор и растечки hashrate покажуваат дека мајнерот пресметува, не дека нешто стигнало до пулот. Доказот е во бројачите за испраќање на клиентот или на таблата на пулот: прифатени делови, одбиени делови и причината прикачена на секое одбивање. Тие бројки одделуваат три дефекти што однадвор изгледаат идентично: нема сесија, сесија без кредит и сесија што постојано се поврзува одново. Прочитајте ги пред да смените каква било конфигурација.

Набљудувајте еден обид за поврзување со детално логирање и забележете ја последната фаза што успеа. Фазата каде што секвенцата запира е покорисна од која било поединечна порака околу неа:

Last stage reachedWhat it rules outProbe to run next
Name lookup completedResolver and namespace reachabilityip route get for the returned address
TCP connect completedRoute and egress filteringss -tnp on the tunnel interface
Subscription returned a jobEndpoint or protocol mismatchAccepted against rejected counts

Потоа оставете го клиентот да работи фиксен прозорец и пребројте ги двата исхода од неговиот лог. Еден grep на бројач е доволен, и нивното споредување во истиот прозорец одделува бавен пул од скршен пат. Прилагодете ја патеката до местото каде што пишува вашиот клиент, бидејќи двете броења не зависат од локацијата:

grep -c Accepted /var/log/miner.log
grep -c Rejected /var/log/miner.log

Ако правило забранува директна врска со пулот секој пат кога тунелот паѓа, изразете го како експлицитно блокирање на крајната точка на пулот. Клиент што тивко повторува преку физичката врска ќе продолжува да копа и ќе продолжува да го крши тоа правило, а неговиот приказ на состојба нема да го спомене. Тестирајте го правилото со намерно пуштање на тунелот и потврдување дека портата на пулот воопшто не е достапна.

Поврзани статии