Security

在哨兵節點後面隱藏IP地址

  • June 10, 2020

我想知道如何在哨兵(代理節點)後面設置乙太坊節點。我知道有幾種方法可以解決這裡提到的這個問題。 https://medium.com/@kidinamoto/tech-choices-for-cosmos-validators-27c7242061ea 但我只對最簡單的選項感興趣:單層哨兵節點設置,看起來像這樣:

哨兵架構

是否有指南或出版物可以幫助我建立這種私有網路架構,同時仍然能夠使用哨兵節點與實時區塊鏈進行通信?

因此,您有一個驗證器節點VAL0和哨兵節點SEN1, SEN2,並且SEN3根據上面的單層哨兵節點設置。

我鼓勵通過防火牆管理網路,即UFW,但您也可以隨意添加其他層,即物理網路拓撲。

作為驗證器客戶端和信標節點,我們使用Lighthouse ,預設情況下將其配置為 p2p 埠:9000

哨兵節點SEN1, SEN2,SEN3

哨兵節點網路設置非常通用,我們不允許傳入連接,除了有限的 SSH 訪問和 Lighthouse 發現埠。

ufw default deny incoming     # deny incoming connections (server hardening)
ufw default allow outgoing    # allow outgoing connections (p2p requires that)
ufw limit 22                  # limit SSH requests, change this to your SSH port
ufw allow 9000                # open the Lighthouse discovery port

隨意添加其他規則,例如,如果您設置監控儀表板。使用 啟用網路規則集ufw enable。參見規則ufw status

現在只需按照官方文件配置燈塔信標鏈節點即可。https://lighthouse-book.sigmaprime.io/

如果更改發現埠,請確保更新 UFW 規則。

哨兵節點將在開放網際網路和區域網路上都可用,以連接到其他哨兵節點和驗證器節點。

驗證節點VAL0

驗證者節點將與網際網路隔離。為簡單起見,我們將在這裡只使用 UFW 規則,這甚至適用於雲提供商,因為您的機器都在同一個本地網路/區域中。為了擴展安全性,您還可以添加物理網路邏輯,例如,僅將驗證器直接連接到哨兵而無需直接訪問 Internet(確保您在此處提出一些 SSH 邏輯)。

ufw default deny incoming     # deny incoming connections (server hardening)
ufw default deny outgoing     # deny outgoing connections (to avoid the internet)
ufw limit 22                  # limit SSH requests, change this to your SSH port

我們拒絕任何傳入流量並限制 SSH 訪問。我們還拒絕所有傳出流量,以避免與 Internet 上的其他客戶端對等。

要僅允許本地網路連接到您的 Lighthouse 驗證器,請為以下子網打開埠 9000:

ufw allow from 10.0.0.0/8 to any port 9000
ufw allow from 192.168.0.0/16 to any port 9000

這允許本地子網10.0.0.0/8192.168.0.0/16訪問您的燈塔客戶端。

現在,為了也允許傳出連接,對於相同的子網,請執行以下操作:

ufw allow out from any to 10.0.0.0/8
ufw allow out from any to 192.168.0.0/16

使用 啟用網路規則集ufw enable。參見規則ufw status

現在只需按照官方文件配置燈塔信標鏈節點和驗證器客戶端即可。如果更改發現埠,請確保更新 UFW 規則。

發現

現在,最後一步是將客戶端連接在一起。哨兵節點SEN1SEN2SEN3將能夠訪問他們想要連接的信標鏈的公共引導節點,不需要太多操作。

驗證器節點VAL0將需要一些自定義網路配置。以下配置選項派上用場:

   --boot-nodes <ENR-LIST>
       One or more comma-delimited base64-encoded ENR's to bootstrap the p2p network.
   --libp2p-addresses <MULTIADDR>
       One or more comma-delimited multiaddrs to manually connect to a libp2p peer without an ENR.

因此,要麼採用 LibP2P 多地址格式或乙太坊節點記錄 (ENR) 從三個SEN1,SEN2SEN3, 並將其作為引導節點或靜態對等方傳遞給您的驗證器節點,例如:

lighthouse bn --boot-nodes "enr:-LK4QHP9pudQUPud4VfLoRHBytpK1dE_mQYa-BCVJGsR4jHDO1uzmfkrXGTmovAn9RukI52icX3s0fHfhT-Fsinr1B8Dh2F0dG5ldHOIAAAAAAAAAACEZXRoMpD2d10HAAABE___________gmlkgnY0gmlwhFzIHRCJc2VjcDI1NmsxoQKfVWe8YoASdFmIlVxo4Lh6je6jGW-tXOJWTh-6ZuW4ooN0Y3CCIyiDdWRwgiMo, ..."

或者:

lighthouse bn --libp2p-addresses "/ip4/10.0.3.84/tcp/9000/p2p/16Uiu2HAsDfeLV6FLXhh1D5MeTSxADCPfBCHRh4VrhcHzeSpxGQRF, ..."

這樣,您的驗證器節點將嘗試僅與您提供的哨兵節點對等。

引用自:https://ethereum.stackexchange.com/questions/76927