Rudarska programska oprema drži eno vtičnico odprto proti enemu naslovu, in vsako vprašanje o tunelu, poti in pripisanem delu visi na tej vtičnici. Ta vtičnica je odhodna odjemalska seja proti končni točki bazena, ne poslušalec, ki sprejema peer-e. Spodnji sprehod ji sledi od štirih vrednosti, ki jih je bazen izdal, do deleža, ki ga je bazen res zabeležil, in pusti druge storitve na gostitelju pri miru. Vsak korak da odgovor, ki ga lahko primerjaš, ne vtisa.

Začni pri končni točki, ki jo je bazen res izdal

Bazen ti da štiri vrednosti, ki sestavljajo celotno pogodbo: ime gostitelja ali naslov, vrata, različico protokola in računski niz. Vzemi jih s nadzorne plošče bazena ali iz pozdravnega sporočila, ne iz navodil za drug bazen. Za isto storitev obstajajo regionalni delci, zato se ime gostitelja, kopirano iz starega vodnika, še vedno lahko poveže in še vedno lahko pripiše računu, ki ga nikoli nisi nameraval uporabiti. Kopiraj štiri vrednosti dobesedno v konfiguracijo rudarja, ker znova vtipkan računski niz izgubi ločilo.

Tok, ki ga usmerjaš, je tisti, ki ga Bitcoinov razvijalski vodnik imenuje seja Stratum : trajna dvosmerna povezava TCP, v kateri bazen deli delo in rudar vrača deleže. To ni isti tok kot peer povezave polnega vozlišča ali sinhronizacija verige denarnice, in prav stiskanje vseh teh v en razred prometa je mesto, kjer se začne večina zmede. Samo prvi spada pod to politiko.

Kjer bazen ponuja TLS, ohrani preverjanje strežnika, ki ga zahteva njegova dokumentacija. Tunel šifrira skok s tvojega stroja do strežnika VPN in se tam konča; ne jamči za tistega, ki odgovarja na drugi strani. Ohrani obe preverjanji, po eno na vsakem koncu, če hočeš, da seja preživi kompromitiran izhod.

Pripni tunel na proces, ne na gospodinjstvo

Delujeta dve pripenjalni točki: zaženi odjemalca VPN znotraj omrežnega imenskega prostora, ki ga rudar uporablja, ali daj temu prostoru prehod, ki njegov promet pelje v tunel. Obe postavitvi postavita sejo na pot, preden jo bazen vidi. Običajna napaka je odjemalec na gostitelju, rudar v vsebniku z lastnim mostom in gostiteljska pot, ki je vsebnik nikoli ne vpraša. Odjemalsko okno je videti zdravo, medtem ko bazen beleži naslov tvoje hiše.

Preveri prenos samega tunela, preden karkoli omejiš. Odjemalec mora do svojega strežnika priti skozi spodnjo plast, zato politika, ki ujame vsak paket, ujame tudi pakete, ki bi zgradili tunel. Tedaj se tunel ne more začeti in nič drugega ne pride ven. S funkcijo razdeljenega tunela pri odjemalcu izberi, kaj gre v tunel; ročno urejanje privzetih poti je način, kako spodnja plast izgine.

Ko politika stoji, beri tabelo vtičnic v imenskem prostoru, ki mu rudar pripada. Tok proti vratom bazena bi moral sedeti na vmesniku tunela, in dva ukaza odgovorita na to vprašanje. Spodnja vrata so primer; zamenjaj jih s tistimi, ki jih je izdal bazen.

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

Beri pot in razreševalnik iz rudarjevega lastnega konteksta

Usmerjanje in razreševanje imen veljata za vsak imenski prostor, zato preverjanje, izvedeno v običajni lupini, opisuje napačni stroj vsakič, ko je rudar v vsebniku. Najprej vstopi v imenski prostor in nato vprašaj, kateri vmesnik bi peljal paket na naslov bazena in kateri razreševalnik bi odgovoril za ime njegovega gostitelja. Odgovori gostitelja se ne prenesejo, in vrzel med njimi je pogost vir napačno položene krivde.

Poimenuj vmesnik, ki ga dobiš: tunel pomeni, da je seja na predvideni poti, medtem ko fizična povezava pomeni, da se je neko pravilo ujemalo prej, kot si pričakoval. Dolžina predpone odloči prva, nato metrika, nato pravila politike, zato tabela z več privzetimi vnosi ne podvoji paketov, samo izgubi.

Razreševalniki odpovedo ločeno od poti. Tunel, ki prepiše /etc/resolv.conf, lahko pusti imenski prostor, da kaže na razreševalnik, dosegljiv samo znotraj tunela, in to odpove, preden se zgodi kakršno koli rokovanje TCP. Razreši ime gostitelja bazena znotraj imenskega prostora in ga primerjaj z objavljenim naslovom. Če iskanje poteče ali vrne kaj drugega, popravi razreševanje, preden se dotakneš poti.

Odjemalca bazena in poslušalca vozlišča imej ločeno

Vrata 8333 so peer vrata Bitcoin Core, kjer polno vozlišče posluša dohodne povezave; rudar bazena jih nikoli ne potrebuje odprtih, in odpiranje ne popravi odhodne okvare. Dohodni poslušalci in odhodne seje so nasprotne vloge z nasprotnimi predpostavkami zaupanja. Nič v konfiguraciji rudarja ne veže teh vrat, zato zaprta vrata ne morejo pojasniti nobene napake, ki jo prijavljajo. Nasvet, napisan za dosegljivost vozlišča, lahko zato pusti javno storitev delovati na gostitelju, ki bi moral samo pošiljati deleže.

Če en sam stroj res dela oboje, obravnavaj vsako vlogo kot svojo storitev z lastno odločitvijo o dostopu. Poslušalec vozlišča spada za politiko, ki jo uporabljaš za javne storitve, rudarska seja pa spada k odhodni politiki, ki izbira tunel. Zabeleži, katero vlogo ima gostitelj, in odstrani pravila druge vloge, ko se to spremeni, ker preostalo dovoljevalno pravilo preživi svoj razlog.

Dokaži, da je bazen prejel delo

Zaseden ventilator in naraščajoči hashrate kažeta, da rudar računa, ne pa da je kaj prispelo do bazena. Dokaz je v odjemalčevih števcih pošiljanja ali na plošči bazena: sprejeti deleži, zavrnjeni deleži in razlog, priložen vsaki zavrnitvi. Te številke ločijo tri okvare, ki so od zunaj videti enake: ni seje, seja brez pripisa in seja, ki se nenehno znova povezuje. Preberi jih, preden spremeniš katero koli konfiguracijo.

Opazuj en poskus povezave s podrobnim beleženjem in zabeleži zadnjo stopnjo, ki je uspela. Stopnja, na kateri se zaporedje ustavi, je bolj uporabna kot katero koli posamezno sporočilo okoli nje:

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

Nato pusti odjemalca, da teče fiksno okno, in preštej oba izida iz njegovega dnevnika. En grep na števec zadošča, in njuna primerjava v istem oknu loči počasen bazen od zlomljene poti. Pot prilagodi tja, kamor tvoj odjemalec piše, ker štetji nista odvisni od lokacije:

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

Če pravilo prepoveduje neposredno povezavo z bazenom vsakič, ko tunel pade, ga izrazi kot jasno blokado na končni točki bazena. Odjemalec, ki tiho poskusi znova prek fizične povezave, bo nadaljeval rudarjenje in nadaljeval kršenje tega pravila, njegov prikaz stanja pa tega ne bo omenil. Preizkusi pravilo tako, da tunel namerno podreš in potrdiš, da vrata bazena sploh niso dosegljiva.

Sorodni članki