SSHトンネルでリモート接続

LNDのニュートリノモードはビットコインフルノードなしに手軽にライトニングを始めるには便利です。しかしニュートリノだと欲しいデータ、具体的にはlncli describegraphによるネットワーク上の全てのチャンネルやノード情報が取得できません。そこで、今回はVPSサービスのbitcloudsでbitcoindのインスタンスを購入し、LNDからbitcoindへリモート接続することで、ニュートリノモードからフルノードモードへ切り替えてみました。フルノードモードでLNDを稼動することで、上記のネットワーク情報がすべて取得できるようになります。

bitcoindへリモート接続する場合、RPCポートを公開すればリモート接続が可能ですが、そのままでは暗号化されておらず安全性にかけます。また今回接続するbitcoindはVPS内のローカルエリアにあるため、ちょっとした工夫が必要です。

そこで今回はSSHトンネル(ローカルポートフォワード)でLNDからVPS上のbitcoindへリモート接続してブロックデータなどを取得してみました。以下は簡単な環境図です

SSHトンネル接続

まずはbitcloudsでbitcoindインスタンスを購入し、SSHでログインします。インスタンス購入からSSHログインまではこちらの記事を参照してください。SSHログインできたら、$ bitcoin-cli stopでデーモンを停止します。停止したら、bitcoin.confを以下のように修正して、再度$ bitcoindで起動します。rpcconnectはデフォルトでIPが指定されているので、そのままで。ユーザー名・パスワードもデフォルト値のままで大丈夫です。

mainnet=1
server=1
daemon=1

rpcconnect=192.168.3.7 // local ip address
rpcuser=hogehoge // username
rpcpassword=gehogeho // password

[main]
rpcallowip=0.0.0.0/0
rpcbind=0.0.0.0

その後、ログアウトして、LNDのマシン上からSSHトンネルのコマンドを以下のようにして実行します。-Lはローカルへの通信をリモートにバインドするためのオプションです。8332:192.168.3.7:8332はローカルのポート番号8332をリモートの192.168.3.7:8332へポートフォワードすることを意味します。bitcoindのRPCポート、ZMQによるブロック・トランザクションデータを受け取るためのポートを指定します。
(-N: リモートでコマンドを実行しない -f: バックグラウンドで実行)

$ ssh -i ssh.key root@135.125.129.128 -Nf  -L 8332:192.168.3.7:8332 -L 29000:192.168.3.7:29000 -L 29001:192.168.3.7:29001

上記のコマンド実行するとSSHトンネルの完成です。以下のコマンドをLNDのマシン上で実行して、ポートがバインドできているか確認してみましょう。

$ netstat -tulpn
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:29000         0.0.0.0:*               LISTEN      24291/ssh
tcp        0      0 127.0.0.1:29001         0.0.0.0:*               LISTEN      24291/ssh
tcp        0      0 127.0.0.1:8332          0.0.0.0:*               LISTEN      24291/ssh

LNDからSSHトンネルでbitcoind接続

次に、SSHトンネル先のbitcoind接続情報をlnd.confに設定します。[Bitcoind]の4行を追加してください。ユーザー名・パスワードは上記のbitcoin.confで設定したものを指定します。

[Bitcoin]
bitcoin.active=1
bitcoin.mainnet=1
bitcoin.node=bitcoind

[Bitcoind]
bitcoind.rpcuser=hogehoge
bitcoind.rpcpass=gehogeho
bitcoind.zmqpubrawblock=tcp://127.0.0.1:29000
bitcoind.zmqpubrawtx=tcp://127.0.0.1:29001

ここまで設定ができたら、あとはLNDを起動するだけです。これでLNDはVPS上のbitcoindへ接続してブロックデータなどを取得できるようになります。

SSHトンネルの切断

以下のコマンドでプロセスIDを取得し、Killコマンドで切断します。

$ lsof -t -i tcp:8332
24921
$ kill -9 24921

SSHトンネルが突然切断されると、LNDがbitcoindからブロック情報などを取得できなくなるので、定期的にSSHトンネルが開通しているか確認するのがよさそうです。シェルスクリプトはこちらが参考になると思います。

以上、LNDからbitcoindへリモート接続する方法でした。

Remaining : 0 characters / 0 images
100

Sign up / Continue after login

Related stories

Writer

ちょビットコイナー nostr id: npub1l83ycz54gng3nd8suvww43fardjsca37x7z5rcwlmeqzudg027fqe9hwaa

Share

Popular stories

LNノードの運用益はどれぐらい?パート1

1857

【Muun】ちょっと変わったライトニング搭載ノンカストディアルウォレット

1850

LNノードの運用益はどれぐらい?パート3

1109