Tailscale VPNサーバーの設定

注意

これはオプションです。 自宅でノードを実行していて、ホームネットワークの外部から接続したい場合にのみ、このセクションを検討する必要があります。

休暇中やビジネストリップ中など、自宅のネットワークにリモートでログインしたい場合、最も一般的な方法は仮想プライベートネットワークサーバーを使用することです。 これにより、SSHポートをインターネットに公開することなく、世界中のどこからでもSSH経由でノードに接続し、Grafanaダッシュボードを監視できます。

多くのRocket Poolノードオペレーターは、このためのVPNサーバーとしてTailscaleを使用しています。 TailscaleはオープンソースのP2P VPNトンネルおよびホスト型エンドポイント検出サービスです。 マシンとノードの間に暗号化されたエンドツーエンドのパスを確立するために必要な認証、公開、NATトラバーサルを処理し、機密性の高いトラフィックを集中サーバーに送信しません。 これは非常に強力なツールです。

基本的な設定について簡単に説明しますが、詳細についてはドキュメントを確認してください。

Tailscaleのセットアップ

まず、無料のTailscaleアカウントを作成します。 Tailscaleは、Google、GitHub、Okta、Microsoftなどのシングルサインオン(SSO)IDプロバイダーの使用を必要とします。 詳細については、SSOページをご覧ください。

セキュリティを強化するために、選択したIDプロバイダーで2FA(二要素認証)を有効にすることをお勧めします。

次に、オンボーディングガイドに従って、クライアントにTailscaleをインストールします。クライアントとは、ネットワークに接続したいマシン(ラップトップや携帯電話など)です。 Rocket Poolノードではありません

完了すると、Tailscaleダッシュボードでコンピューターが「接続済み」として表示されます。

次に、Rocket PoolノードにTailscaleをインストールします。 インストール手順はウェブサイトで確認できます。例えば、Ubuntuのインストール手順があります。

注意

UFWを設定している場合は、UFW設定手順も参照してください。

まず、Rocket Poolノード上でTailscaleのパッケージ署名キーとリポジトリを追加します:

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

次に、Rocket Poolノード上でTailscaleをインストールします:

sudo apt-get update
sudo apt-get install tailscale

最後に、Rocket Poolノード上でマシンを認証し、Tailscaleネットワークに接続します:

sudo tailscale up

接続されました! 次のコマンドを実行して、Tailscale IPv4アドレスを確認できます:

tailscale ip -4

Tailscaleダッシュボードにノードマシンが追加されたことが確認できます。 ダッシュボードからノードマシンの名前を変更することもできます(例: rocketnode)。

定期的に再認証する必要がないように、ノードマシンのキーの有効期限を無効にすることをお勧めします。

注意

rocketnodeなどの覚えやすいホスト名を使用してノードにアクセスしたい場合は、Tailscale設定でMagicDNSを有効にすることで可能になります。

これで、クライアント上でノードへのSSHセッションをexitし、Tailscaleを使用してssh your.user@rocketnodeでノードに再度SSHできるようになります。

注意

ノードを最初に設定したときに/etc/ssh/sshd_configノードマシンのSSHポートを変更した場合は、代わりにssh your.user@rocketnode -p <your port>を使用してください。

例えば、SSHをポート1234に割り当てた場合、次のようにします:

ssh your.user@rocketnode -p 1234

クライアントのウェブブラウザでhttp://rocketnode:3100にアクセスして、Grafanaダッシュボードにアクセスすることもできます。

UFWを設定している場合は、Tailscale経由の受信SSH接続を受け入れるルールを追加できます。

警告

以下の手順はファイアウォールルールを変更します。 続行する前に、ノードマシンへのSSHセッションを少なくとも2つ開いておく必要があります。1つは設定を変更してその後テストするため、もう1つは変更によってSSHが壊れた場合に元に戻せるようにバックアップとしてログインしたままにしておくためです!

ノードマシン上で次のコマンドを実行します。

Tailscale経由のすべての受信SSH接続へのアクセスを許可します。

sudo ufw allow in on tailscale0

ファイアウォールの有効化の手順から追加したSSHポートへのアクセスを削除して、ノードを完全にロックダウンすることもできます。 tailscaleがログインする唯一の方法になるため、ローカルネットワークからログインできなくなることに注意してください。 これで問題ない場合にのみ、次のコマンドを実行してください。

sudo ufw delete "22/tcp"

すべての非Tailscale接続を制限するファイアウォールルールを設定したら、UFWとSSHを再起動します:

sudo ufw reload
sudo service ssh restart

次に、すべてが期待どおりに機能していることを確認します。 現在のSSHセッションの1つからexitします(ただし、バックアップとして2番目のセッションを開いたままにしておくことを忘れないでください)。

次に、Tailscale IPアドレスを使用してSSH経由でノードマシンに接続します:

ssh your.user@rocketnode

機能する場合は、すべてが正しく行われており、海外にいても安全にホームネットワークにログインできます!

ヒント

以前にルーターでノードのSSHポートをポート転送していた場合、今すぐ削除できます。