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

ちょビットコイナー

Share

Popular stories

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

1280

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

759

猫でも分かるLightning Network解説!

639