Rudarski bazen prek VPN: seja naj ostane na pravi poti
Rudar bazena odpre eno odhodno sejo Stratum, ne vrat peer. Tunel postavi pod ta proces in beri pot ter razreševalnik iz njegovega imenskega prostora.
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.10Beri 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 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 |
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.