VPN üzerinden madencilik havuzu: oturumu doğru yolda tut
Havuz madencisi tek bir giden Stratum oturumu açar, eş portu değil. Tüneli o sürecin altına yerleştir ve rotayı ve çözümleyiciyi onun ad alanından oku.
Madencilik yazılımı tek bir soketi tek bir adrese açık tutar ve tünel, rota ve kredilendirilen işle ilgili her soru o sokete bağlıdır. O soket, havuz uç noktasına giden bir istemci oturumudur, eşleri kabul eden bir dinleyici değil. Aşağıdaki yürüyüş onu havuzun verdiği dört değerden havuzun gerçekten kaydettiği bir paya kadar izler ve ana makinenin diğer hizmetlerine dokunmaz. Her adım karşılaştırabileceğin bir yanıt üretir, bir izlenim değil.
Havuzun gerçekten verdiği uç noktadan başla
Havuz sana tüm sözleşmeyi oluşturan dört değer verir: ana makine adı veya adres, port, protokol sürümü ve hesap dizesi. Bunları havuzun panosundan veya karşılama iletisinden al, başka bir havuz için yazılmış bir öğreticiden değil. Aynı hizmet için bölgesel shard'lar vardır, bu yüzden eski bir kılavuzdan kopyalanan bir ana makine adı hâlâ bağlanabilir ve hiç kullanmayı düşünmediğin bir hesaba hâlâ kredi yazabilir. Dört değeri madencinin yapılandırmasına olduğu gibi kopyala, çünkü yeniden yazılan bir hesap dizesi bir ayırıcıyı kaybeder.
Yönlendirdiğin akış, Bitcoin geliştirici kılavuzunun Stratum oturumu dediği akıştır: havuzun iş dağıttığı ve madencinin payları geri gönderdiği kalıcı iki yönlü bir TCP bağlantısı. Bu, tam bir düğümün eş bağlantıları veya bir cüzdanın zincir eşitlemesiyle aynı akış değildir ve bunları tek bir trafik sınıfında birleştirmek, karışıklığın çoğunun başladığı yerdir. Bu ilkeye yalnızca birincisi aittir.
Havuzun TLS sunduğu yerde, belgelerinin gerektirdiği sunucu doğrulamasını koru. Bir tünel, makinenizden VPN sunucusuna giden atlamayı şifreler ve orada biter; karşı tarafta kimin yanıt verdiğine kefil olmaz. Oturumun ele geçirilmiş bir çıkıştan sağ çıkmasını istiyorsanız, her iki uçta iki denetimi de koru.
Tüneli sürece bağla, hane halkına değil
İki bağlama noktası işe yarar: VPN istemcisini madencinin kullandığı ağ ad alanının içinde çalıştır ya da o ad alanına trafiğini tünele taşıyan bir geçit ver. Her iki düzenleme de oturumu havuz görmeden önce yola koyar. Olağan başarısızlık, ana makinede bir istemci, kendi köprüsü olan bir konteynerde bir madenci ve konteynerin hiç sormadığı bir ana makine rotasıdır. İstemci penceresi sağlıklı görünürken havuz ev adresinizi kaydeder.
Herhangi bir şeyi sınırlamadan önce tünelin kendi taşımasını denetle. İstemci sunucusuna alt katman üzerinden ulaşmak zorundadır, bu yüzden her paketi yakalayan bir ilke tüneli kuracak paketleri de yakalar. Sonra tünel başlayamaz ve başka hiçbir şey de dışarı çıkmaz. İstemcinin bölünmüş tünel özelliğiyle tünele neyin gireceğini seç; varsayılan rotaları elle düzenlemek, alt katmanın kaybolma biçimidir.
İlke yerindeyken, madencinin sahip olduğu ad alanındaki soket tablosunu oku. Havuz portuna giden akış tünel arayüzünde oturmalıdır ve iki komut bu soruyu yanıtlar. Aşağıdaki port bir örnektir; havuzun verdiğiyle değiştir.
sudo nsenter -t "$(pidof cgminer)" -n ss -tnp state established 'dport = :3333'
sudo nsenter -t "$(pidof cgminer)" -n ip route get 203.0.113.10Rotayı ve çözümleyiciyi madencinin kendi bağlamından oku
Yönlendirme ve ad çözümleme ad alanı başınadır, bu yüzden sıradan bir kabukta çalıştırılan denetim, madenci konteynerde olduğunda yanlış makineyi tanımlar. Önce ad alanına gir, sonra paketi havuz adresine hangi arayüzün taşıyacağını ve ana makine adı için hangi çözümleyicinin yanıt vereceğini sor. Ana makinenin yanıtları aktarılmaz ve aralarındaki fark, yanlış yere konan suçlamanın yaygın bir kaynağıdır.
Elde ettiğin arayüzü adlandır: tünel, oturumun amaçlanan yolda olduğu anlamına gelir; fiziksel bağlantı ise bir kuralın beklediğinden daha erken eşleştiği anlamına gelir. Önek uzunluğu önce karar verir, sonra metrik, sonra ilke kuralları, bu yüzden birkaç varsayılan girdisi olan bir tablo paketleri çoğaltmaz, yalnızca kaybeder.
Çözümleyiciler rotalardan ayrı olarak başarısız olur. /etc/resolv.conf dosyasını yeniden yazan bir tünel, ad alanını yalnızca tünelin içinden erişilebilen bir çözümleyiciye işaret eder bırakabilir ve bu, herhangi bir TCP el sıkışması olmadan önce başarısız olur. Havuzun ana makine adını ad alanının içinde çöz ve yayımlanan adresle karşılaştır. Arama zaman aşımına uğrarsa veya başka bir şey döndürürse, rotalara dokunmadan önce çözümlemeyi düzelt.
Havuz istemcisini ve düğüm dinleyicisini ayrı tut
8333 portu Bitcoin Core'un eş portudur; tam bir düğüm gelen bağlantıları orada dinler; havuz madencisinin ona hiçbir zaman açık ihtiyacı yoktur ve onu açmak giden bir arızayı onarmaz. Gelen dinleyiciler ve giden oturumlar, zıt güven varsayımlarına sahip zıt rollerdir. Madencinin yapılandırmasında hiçbir şey bu portu bağlamaz, bu yüzden kapalı bir port bildirdiği hiçbir hatayı açıklayamaz. Bir düğümün erişilebilirliği için yazılmış bir öğüt, bu nedenle yalnızca pay göndermesi gereken bir ana makinede bir genel hizmeti çalışır bırakabilir.
Tek bir makine gerçekten ikisini de yapıyorsa, her rolü kendi erişim kararıyla ayrı bir hizmet olarak ele al. Düğümün dinleyicisi genel hizmetlere uyguladığın ilkenin arkasına aittir ve madencinin oturumu tüneli seçen giden ilkeye aittir. Ana makinenin hangi rolü oynadığını kaydet ve bu değiştiğinde diğer rolün kurallarını kaldır, çünkü geride kalan bir izin kuralı gerekçesinden daha uzun yaşar.
Havuzun işi aldığını kanıtla
Meşgul bir fan ve yükselen hashrate, madencinin hesapladığını gösterir, havuza bir şeyin ulaştığını değil. Kanıt istemcinin gönderim sayaçlarında veya havuzun panosundadır: kabul edilen paylar, reddedilen paylar ve her redde eklenen neden. Bu sayılar dışarıdan aynı görünen üç arızayı ayırır: oturum yok, kredisiz oturum ve sürekli yeniden bağlanan oturum. Herhangi bir yapılandırmayı değiştirmeden önce bunları oku.
Ayrıntılı günlüklemeyle tek bir bağlantı denemesini izle ve başarılı olan son aşamayı not et. Dizinin durduğu aşama, çevresindeki herhangi bir tek iletiden daha yararlıdır:
| 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 |
Sonra istemcinin sabit bir pencere boyunca çalışmasına izin ver ve günlüğünden iki sonucu da say. Sayaç başına bir grep yeterlidir ve bunları aynı pencere üzerinde karşılaştırmak yavaş bir havuzu bozuk bir yoldan ayırır. Yolu istemcinizin yazdığı yere göre ayarla, çünkü iki sayım konuma bağlı değildir:
grep -c Accepted /var/log/miner.log
grep -c Rejected /var/log/miner.logBir kural tünel her düştüğünde doğrudan havuz bağlantısını yasaklıyorsa, bunu havuz uç noktasında açık bir engelleme olarak ifade et. Fiziksel bağlantı üzerinden sessizce yeniden deneyen bir istemci madenciliğe devam eder ve o kuralı çiğnemeye devam eder, durum göstergesi bundan söz etmez. Kuralı tüneli bilerek düşürüp havuz portuna hiç ulaşılamadığını doğrulayarak test et.