umbrel をハイブリッドモードでクリアネットに接続 (プロバイダのIPアドレス公開と引き換えに安価に実現)
umbrel を Tor と Clearnet の Hyblid mode にしたい。
メリットとしては、Clearnetで公開しているノードに対して、Torを経由することの遅さが解消されることにより、
- ルーティングが増えて欲しい。欲しい。切実に。
- 他のノードが接続先に自ノードを選んでくれやすくなりそう。
- チャネルが閉じられてしまう原因を減らせそうな気がする。(気がするだけかも)
プライバシーの問題を考えると、軽々しく自分のノードのグローバルIPアドレスを公開したくはないのですが、その辺りを含めちゃんとやろうとすると、
- VPNサーバを借りてセットアップ、費用的にも手間的にもちょっと無理。
- TunnelSats に年間17万satsも払えるほど利益が出てない。
メリットとデメリットを天秤にかけて、ノードを置いてるインターネットプロバイダのIPアドレスでHyblidモードにすることにしたので、手順残しておきます。
前提としているネット環境は、いわゆる一般家庭によくみられるネット環境、ブロードバンドルータを介して、プライベートネットワークとインターネットが接続されている状態を想定しています。
ブロードバンドルータのところにインターネットに接続するためのグローバルIPアドレスが払い出されていて、プライベートネットワーク側は192.0.2.1のようなプライベートIPアドレスでネットワークを構成している状況です。
1. グローバルIPアドレスのポート9735をumbrelにフォワード
まずは、インターネットからのアクセスがumbrelに届くよう、ポート9735をumbrelに転送するように設定します。
詳細は使用しているブロードバンドルータの設定を確認してください。この設定は以下に挙げるような色々な呼び方をされることがあります。
- ポートフォワーディング
- NAPT
- 静的IPマスカレード
- ポート変換、ポート開放
- アドレス変換
頑張って設定してください。
次に確保しているグローバルIPアドレスによって、lnd.confの設定方法が2つに分かれます。
2-1. 方法①固定IPアドレスを用意できる場合
こちらの方が設定は楽ですが、固定IPアドレスの調達の面で比較的ハードルの高い方法です。固定IPアドレスをサービスしているインターネットプロバイダは限られるうえ、有償のサービスだったりするので、どうせ費用かけるならTunnelSatsでいいじゃんとなりかねません。
ただ、インターネットプロバイダによっては、固定IPを謳っていなくても実質IPアドレスが変わらない、半固定のIPアドレスを提供しているところもあります。そういうところだったら、固定IPアドレスとして扱ってしまっても問題がなかったりします。
そういう場合の設定方法。
umbrel に ssh でログインし、lnd.confをテキストエディタで開いてください。
sudo vi ~/umbrel/app-data/lightning/data/lnd/lnd.conf
[Application Options]の項目に以下の行を追記します。
externalip=あなたのグローバルIPアドレス(例えば203.0.113.150など)
[tor]の項目に以下の行を追記します。
tor.skip-proxy-for-clearnet-targets=true
同じく[tor]のところに以下の行がコメントアウトされているので、先頭の#を消して設定を有効にしてください。
tor.streamisolation=false
2-2. 方法②ダイナミックDNSを使用する
固定IPアドレスを用意できない場合、ちょっと手間が増えますが、ダイナミックDNSを使います。
ダイナミックDNSとは、変動してしまうグローバルIPアドレスを固定のホスト名に紐付けてくれるサービスです。
無料サービスも含め選択肢はいくつもあるので、その中から選んでください。今回は DDNS Now を例に挙げます。
新規登録して、ユーザ名.f5.si というアドレスをゲットします。
IPアドレスを更新し続けるために、umbrel に ssh でログインして、クーロンの設定を行います。
crontab -e
0-59 * * * * wget -O DDNSNow_update.log "https://v6.f5.si/update.php?domain=ユーザ名&password=パスワード"
(ユーザ名とパスワードは先ほどDDNS Nowに登録したものを使ってください。)
公式のサンプルは1分ごとに更新するようになっていました。更新頻度はお好みに変更してださい。5分ごとなら
*/5 * * * * wget -O DDNSNow_update.log "https://v6.f5.si/update.php?domain=ユーザ名&password=パスワード"
のような感じで。
続いて、lnd.confを編集していきます。
sudo vi ~/umbrel/app-data/lightning/data/lnd/lnd.conf
[Application Options]の項目に以下の行を追記します。
externalhosts=ユーザ名.f5.si:9735
(ユーザ名は先ほどDDNS Nowに登録したものを使ってください。)
[tor]の項目に以下の行を追記します。
tor.skip-proxy-for-clearnet-targets=true
同じく[tor]のところに以下の行がコメントアウトされているので、先頭の#を消して設定を有効にしてください。
tor.streamisolation=false
3. umbrelを再起動して動作確認
設定を有効にするために、umbrel を再起動しましょう。
その後、umbrel に ssh でログインして、以下のコマンドを実行しいます。
/home/umbrel/umbrel/scripts/app compose lightning exec lnd lncli getinfo
"uris"のところに、今までのオニオンアドレスに加え、
"<pubkey>@あなたのIPアドレス:9735"
が追加されていれば成功です。
Marimoxさんが以下の有料部分で書いてくれている方法などでも検証できるので、試してみてください。
あとがき
LNDの設定部分は以下を参考にしました。
lnd.conf で有効にした、
tor.streamisolation=false
は、以下によると、設定していないとLNDが正常に起動できないので必要との記載だったのですが、私の環境では設定しなくても問題ありませんでした。
というわけで、ハイブリッドモードを楽しんでください!
なお、残念ながら私の環境では、まだハイブリッドモードにしてからルーティングが激増してウハウハなどという現象は観測されていません。
「一般家庭によくみられるネット環境、ブロードバンドルータを介して」
うーん、自宅にある装置に割り当てられたグローバルIPアドレスがアナウンスされるのでプライバシー重視の方には向かないですね。
それでもヨシ!な人向けですな。