2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ミニPCにProxmox VEを入れてホームラボ構築_Part3 外部アクセス編

Last updated at Posted at 2025-09-15

シリーズ一覧

はじめに

この記事は、ミニPC+Proxmox VEでホームラボ環境を作る備忘録シリーズのPart3(最終回)です。
前回までで、Proxmox VEでLinux仮想マシンを作成し、自宅LAN内の他デバイスからSSH接続が出来る事の確認まで実施しました。
最終回である今回は、自宅の外から作成したホームラボ環境にアクセスする方法について記載します。

書くのが面倒なので、Proxmox VEはPVEと記載しています。

Tailscaleについて

Tailscaleの概要

公式サイト

TailscaleはWireGuardをベースにしたインターネットVPNサービスです。
自分が繋げたい端末でTailscaleのクライアントをインストールしておくと、それらはTailnetと呼ばれるアカウントに紐付いたドメインネットワークに所属することになり、端末同士でP2P通信ができます。
また、基本的にクライアントを入れてアカウント認証をするだけで端末をTailnetに所属させることができるため、ネットワーク知識が無くとも利用できるのもメリットだと言えます。

利用料金

気になる利用料金ですが、驚くべきことに個人利用はなんと無料です。
しかも100台も登録できるらしい。すごくない?

比較

今回の用途の場合、似たようなサービスとしてCloudflare Zero Trustに含まれる、Cloudflare Tunnelというサービスだったり、TailscaleのベースになっているWireGuard自体を使ってしまえば良いと言うことになります。
ただ、面倒な設定とかやってもな~という気持ちが、Tailscaleの掲げるDeploy a zero-config, no-fuss VPN(設定不要で手間をかけずにVPNを構築しよう)と共鳴したので、今回はTailscaleを使うことにしました。

用途

今回は、外出先で学習用の仮想マシンにSSH接続をしたいと考えています。
仮想マシンでTailscaleを有効にしておき、外出先で自宅の仮想マシンにSSH接続をしたいと思った際、外出先で使用しているスマホやノートPC等でTailnetに接続し、そこからSSH接続出来るという訳です。

これを図に起こすとこんな感じ。
Tailscale.png

セキュリティ的な懸念についても、Tailscaleは基本的にアカウントに紐付けた端末同士のみで通信可能なので、全世界に意図せず大公開!みたいな部分は大丈夫です。

VMへのTailscaleインストール

Tailscaleのアカウント作成は、様々な先駆者がいらっしゃるので、この記事では省略します。
予めアカウントを作成した状態で、Tailnetに登録したいVM上で下記コマンドを実行します。

curl -fsSL https://tailscale.com/install.sh | sh

これを実行すると、Linuxディストリビューションに沿った必要なアプリケーションインストールだったり、インターフェース有効化操作だったりが行われます。
Sudoで実行する項目があるので、心配な方はシェルスクリプトの中身を確認してみてください。
大体以下の操作が行われます。

  • Tailscaleのアプリケーションリポジトリ追加
  • Tailscaleのインストール
  • tailscaledのデーモン起動とenable操作

スクリプトの実行が一通り完了すると、最後にsudo tailscale upコマンドを実行するように表示されるので、指示通りコマンドを実行します。

Installation complete! Log in to start using Tailscale by running:

sudo tailscale up

実行すると、認証用URLが払い出されるので、このURLをブラウザのアクセスバーに貼り付けてアクセスします。

To authenticate, visit:

	https://<認証URL>

アクセスするとこんな感じ。
Tailscaleのアカウントを作成したときと同じ方法でログインします。
Pasted image 20250915022024.png

ログイン後、Connectボタンをクリックすれば接続完了です。
Pasted image 20250915022313.png
Pasted image 20250915022415.png

WebUI上から登録した端末の一覧とIPアドレスを確認することができます。
予め、外出先デバイスとしてiPadにもTailscaleをインストールしておきました。
Pasted image 20250915022738.png

念の為、接続先としている仮想マシンのIPアドレスもipコマンドで確認しておきます。

user@ubuntu1:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:24:11:65:55:85 brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    inet 192.168.1.58/24 metric 100 brd 192.168.1.255 scope global dynamic ens18
       valid_lft 6019sec preferred_lft 6019sec
    inet6 fe80::be24:11ff:fe65:5585/64 scope link 
       valid_lft forever preferred_lft forever
3: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default 
qlen 500
    link/none 
    inet 100.80.143.116/32 scope global tailscale0
       valid_lft forever preferred_lft forever
    inet6 fd7a:115c:a1e0::1a01:8f82/128 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::db43:1bd4:2c74:a9bf/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

3つ目のインターフェースにtailscale0があり、ここにWebUIから確認したIPアドレスが実際に割り当てられていることが確認できます。

外部からのアクセス確認

では、iPadにインストールしたターミナルアプリから、実際にSSH接続が出来るか確認してみます。
今回はTermiusを使ってみました。

無料の範囲でもかなり高機能な事ができるターミナルアプリです。

Hosts メニュー内の+ボタンをタップして、New Hostをタップするとこんな画面が出てきます。
IMG_0062.png

Labelに判別しやすい名前を入れて、IP or Hostnameの所に、先ほど確認したIPアドレスを入力して右上のSaveをタップ。

その後作成したUbuntuボタンをタップすると、ユーザー名が聞かれるので入力。
IMG_0063.png

次にパスワードも聞かれるので、これも入力。
IMG_0064.png

known hostsに登録していないので警告が出ますが、Continueをタップして継続。
IMG_0065.png

これで接続できました。(このクライアント良いな。)
IMG_0066.png

注意点

resolve.confが上書きされる

LinuxにインストールしたTailscaleは、MagicDNSがTailnet上で有効な状態かつ他に稼働中のリゾルバが居ない場合、/etc/resolve.confを上書きします。
NetworkManagerとか、systemd-resolvedとか、そんな感じの奴らです。

MagicDNSは、Tailnet内のデバイス同士をFQDNで指定することができる名前解決の仕組みです。

今回インストールしたUbuntuでは問題無かったのですが、NetworkManagerが稼働しているRHEL環境では、/etc/resolve.confが上書きされていることを確認しました。
MagicDNSをTailnet全体で無効にするか、指定デバイス上で無効にすることで、この現象は防止出来るようです。

参考:

まとめ

この記事では、Tailscaleを併用した外部アクセス環境の整備を行いました。
ここまで来ると、PVEはもうほぼ関係ないようなものなので、このシリーズはここで最終回としておきます。
このシリーズを通して、Proxmox VEを使った環境構築の学びになりました。
LXCとか、クラスタとか、Cephとか色々使っていない機能が沢山あるので、使いたくなったらそれらも使用してみたいですね。

シリーズ一覧

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?