【Proxmox】LXCコンテナでtailscaleを動かしてプライベートクラウド構築【LXCコンテナ】

スポンサーリンク
proxmox 02 Proxmox
本記事はPRによる消費税込みの価格表示です

本記事では仮想サーバー「Proxmox」上に軽量コンテナLXCを使って「tailscale」環境を構築していきます。

これにより、常時起動している(前提の)Proxmox仮想サーバー上に軽量なtailscale環境を動かすことで、いつでも外出先から自宅のネットワーク環境へ接続できるようになります。

外出先から自宅のファイルサーバーへアクセスしたりスマホの写真・動画をアップロードしたり、赤ちゃんやペットの見守りカメラを見たり・・・という自宅でできることと同じことを外出先からもできるようになります。

仮想サーバーをtailscaleゲートウェイとして使う

Proxmoxを使えばVMWare ESXiと同等(か、それ以上)の仮想サーバー環境を構築することができます。

一台のProxmoxサーバー内にTrueNASなどさまざまなサーバーを構築し、自宅に写真・動画などを共有管理できるメディアサーバーを構築することもできます。

本記事では、この仮想サーバー環境内に軽量コンテナ環境「LXC(Linuxコンテナ)」を使って簡単にtailscaleというVPNサーバーを構築していきます。

このtailscaleの機能により、いつでも外出先からProxmoxサーバーだけでなく自宅ネットワーク全体へ自由に(自宅にいる時と同様に)自宅内ネットワークを利用できるようになります。

tailscaleとは

tailscaleとは最新のVPNプロトコル「WireGuard」を使って「いつでもどこからでも、そしてどんなネットワーク環境でもVPN接続できる」仕組みを提供してくれるサービスです。

tailscale | tailscaleプロジェクト

tailscaleの利用にはtailscaleへの利用者登録が必要です。

tailscaleは大規模ネットワークに対して有料プランを提供していますが、個人が利用する範囲においてはほぼ無料プランで十分です。

本記事でもtailscaleの無料プランを利用して環境構築していきます。

仮想サーバー(Proxmox)上に構築

tailscaleを使えばだれでも簡単に外出先から自宅ネットワークへアクセスできる仕組みを構築することができます。

ただし(当然ですが)自宅内でtailscaleが常時稼働していなければなりません。

本記事では仮想環境「Proxmox」サーバー内に、小さな仮想マシンを構築しその中でtailscaleを動作させることで「いつでも外出先から自宅ネットワークへアクセスできる」仕組みとします。

proxmox | proxmoxプロジェクト

LXCコンテナで構築

仮想サーバーでも物理的なパソコンでもtailscaleが動いていればいつでも外出先から自宅ネットワークへアクセスすることができます。

本記事では仮想サーバー「Proxmox」が常時稼働サーバーとして動いている前提で、Proxmox上で動く軽量なコンテナ「LXCコンテナ」を使ってtailscaleを動かしていきます。

仮想サーバー「Proxmox」は標準でLXC動作環境を提供しており、また簡単にコンテナ環境をセットアップできるテンプレート機能もあります。

この機能を使って、以下の手順で「仮想サーバー(Proxmox)へtailscale環境を構築」していきます。

tailscale環境構築の手順概要
  • STEP1
    テンプレートのダウンロード
  • STEP2
    テンプレートからコンテナ環境の構築
  • STEP3
    コンテナ環境へtailscaleをインストール

なお、本記事では使用するコンテナテンプレートとして「Turnkey Linux Core」を使用します。

Turnkey Linux | Turnkey Linuxプロジェクト

仮想環境へ簡単導入できる機能をテンプレート化して提供しているのが「Turnkey Linux」であり、中身はDebianです。

その中で「Turnkey Linux Core」は最もシンプルな機能であり、中身はほとんど素のDebianとなります。

つまり「Debian環境を構築してtailscaleをインストール」という流れになります。

本記事の前提条件

本記事ではProxmoxサーバー環境に軽量コンテナLXC環境を構築、さらにその環境にtailscaleをインストールしていきます。

Proxmoxの基本操作については詳しく手順説明していません。

よって「Proxmoxを触ったことがない」という方を対象としていません。

ある程度のProxmoxの操作はできる、という前提で手順説明していきます。

また、すでにProxmox環境は構築済である前提で説明していきます。

tailscale環境構築の準備作業

Proxmox上にコンテナ環境を構築する前にtailscaleを使うための準備作業を行います。

tailscaleのサービスを利用するためには、利用者登録が必要です。

tailscaleでは企業向けに有料プランを提供していますが、個人利用の範囲においては個人向けの無料プランで十分です。

tailscale利用者登録

tailscaleのサービスを利用するためにはtailscaleへの利用者登録が必要です。

有料で提供されるプランもありますが個人利用の範囲においては無料プランで十分なので、無料プランで利用者登録をしておきましょう。

tailscale利用者登録 | tailscaleプロジェクト

tailscaleの利用者登録は以下のアカウントを使って登録することができます。

tailscale登録可能なアカウント

  • Googleアカウント
  • Microsoftアカウント
  • GitHubアカウント
  • Apple ID
  • OICDアカウント

クライアントアプリのインストール

tailscaleの機能を使って外出先のデバイスから自宅ネットワークへ接続するためには、外出先で使うデバイスおよび自宅内にtailscaleアプリがインストールされ、さらにそのアプリが(先ほど作成した)tailscale利用者画面(tailscaleコンソール)に登録されている必要があります。

本記事では「自宅内で稼働するtailscale環境の構築」について説明していきますが、外出先で使う想定のデバイスにはそれぞれtailscaleアプリをインストールし登録しておきましょう。

tailscaleクライアントアプリ・ダウンロード | tailscaleプロジェクト

tailscale登録可能なプラットフォーム

  • Windowsアプリ
  • Macアプリ
  • Linuxアプリ
  • iOSアプリ
  • Androidアプリ

STEP① ProxmoxへLXCコンテナをインストール

まず、仮想サーバーProxmox環境へLCXコンテナとして「Turnkey Linux Core」をインストールします。

Turnkey Linuxはさまざまな機能を盛り込んだコンテナテンプレートを配布しているサイトであり、dockerコンテナ以外にLXCコンテナのテンプレートも配布しています。

そのLXCコンテナテンプレートの中から、「Turnkey Linux Core」をインストールします。

「Turnkey Linux Core」はTurnkey Linuxが配布しているLXCテンプレートの中で最も基本的な「ただのDebian」環境です。

LXCコンテナのインストール

Proxmoxサーバー環境へ「Turnkey Linux Core」をインストールしていきます。

Proxmoxは標準でLXCコンテナ環境に対応しており、さまざまなLXCテンプレートからLXCコンテナを構築することができます。

コンテナテンプレートの更新

まず、Proxmoxが対応しているLXCコンテナ環境で利用可能なLXCテンプレートのリストを最新化しておきましょう。

メニュー「ノード(自分のサーバー)⇒シェル」からテンプレートのアップデートコマンドを発行しておきます。

proxmoxのLXCコンテナでtailscale環境構築

以下のような実行結果となります。

root@sbpve01:~# pveam update
update successful
root@sbpve01:~#

以上でProxmoxのLXCコンテナテンプレートリストは最新化されます。

LXCコンテナテンプレートのダウンロード

メニュー「ストレージ(local)⇒CTテンプレート」から「テンプレート」ボタンを押下します。

proxmoxのLXCコンテナでtailscale環境構築

Proxmoxで利用可能なLXCコンテナテンプレートの一覧が表示されます。

検索欄に「core」を入力すると、一覧が絞り込まれて「Turnkey Linux Core」が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

種別 パッケージ 説明
lxc turnkey-core Turnkey Core

上記「Turnkey Linux Core」を選択して「ダウンロード」ボタンを押下します。

proxmoxのLXCコンテナでtailscale環境構築

「TASK OK」のメッセージが出たらダウンロード処理が終了しています。

ダウンロードが終了したら画面右上の「×」をクリックしてダウンロード画面を閉じます。

proxmoxのLXCコンテナでtailscale環境構築

テンプレートの一覧画面に今ダウンロードしたテンプレートが登録されています。

LXCコンテナのインストール

ダウンロードしたテンプレートを使って「Tuenkey Linux Core」をインストールしていきます。

ProxmoxでのLXCコンテナインストールはウィザード形式で行っていきます。

画面上部(右上)から「CTを作成」を押下します。

全般:コンテナウィザード①

コンテナ作成ウィザードの「全般」タブが表示されます。
proxmoxのLXCコンテナでtailscale環境構築

以下のように入力してください。

ノード 初期値のまま
CT ID 初期値のままでよい
※またはお好きなID
ホスト名 構築するコンテナのホスト名を指定
※本記事では”v-tailscale”
非特権コンテナ チェック
ネスト チェック
リソースプール 未指定
パスワード コンテナへログインするときのパスワード
パスワードの確認 パスワードと同じものを入力
ssh Public Key 未指定

入力したら「次へ」。

テンプレート選択:コンテナウィザード②

「テンプレート」タブが表示されます。

proxmoxのLXCコンテナでtailscale環境構築

先ほどダウンロードした「Turnkey Linux Core」を選択してください。

ディスク:コンテナウィザード③

「ディスク」タブが表示されます。

proxmoxのLXCコンテナでtailscale環境構築

ディスクを作成するストレージを選択し、「次へ」。

CPU:コンテナウィザード④

「CPU」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

CPUスペックを設定します。

後から変更できるので、ここでは「1 Core」として設定します。

メモリ:コンテナウィザード⑤

「メモリー」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

メモリーも後から変更可能なので、ここでは「512 MB」と設定します。

※もっと小さく「256 MB」でもよかったです・・・

ネットワーク:コンテナウィザード⑥

「ネットワーク」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

「IPv4 = DHCP」「IPv6 = DHCP」を選択してください。

DNS:コンテナウィザード⑦

「DNS」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

初期値のままで「次へ」。

確認:コンテナウィザード⑧

「確認」タブ画面が表示されます。

proxmoxのLXCコンテナでtailscale環境構築

設定した内容を確認し「完了」ボタンを押下。

proxmoxのLXCコンテナでtailscale環境構築

しばらくコンテナ作成のタスクが実行されます。

「TASK OK」が表示されたらコンテナ作成完了です。

LXCコンテナの起動と初期設定

メニュー「データセンター⇒LXCコンテナ」に今作成したコンテナが一覧表示されています。

では、このコンテナを起動してみます。

サブメニュー「コンソール」を選んで画面上の「開始」ボタンを押下すると、コンソール画面上でコンテナが起動します。

proxmoxのLXCコンテナでtailscale環境構築

proxmoxのLXCコンテナでtailscale環境構築

APIキーの設定:初期設定①

今回はLXCコンテナとして「Turnkey Linux(Core)」をインストールしました。

このコンテナの初期起動時にはコンテナの提供元であるTurnkeyLinuxのサービスを受けるための初期設定が必要です(すべてスキップで良いです)。

proxmoxのLXCコンテナでtailscale環境構築

TurnkeyLinuxのサービス提供を受けるためのAPIキー登録を求められます。

Skipで飛ばします。

eメールアドレスの設定:初期設定②

proxmoxのLXCコンテナでtailscale環境構築

TurnKeyLinuxから各種通知を受けるためのメールアドレスの登録を求められます。

Skipで飛ばします。

セキュリティアップデート:初期設定③

構築したTurnkeyLinuxのセキュリティ関連アップデートを求められます。

これは適用しておきましょう。

proxmoxのLXCコンテナでtailscale環境構築

「Install」をクリックするとセキュリティアップデートが実行されます。

しばらく時間がかかります。

コンテナネットワーク環境の確認:初期設定③

最後にネットワークサービスの案内が表示されます。

TurnkeyLinuxでは初期状態で「Webmin」と「ssh」が導入されています。

proxmoxのLXCコンテナでtailscale環境構築

WebminおよびsshのアクセスIPアドレスは控えておくとよいでしょう。

ただし、本記事では「超軽量tailscaleサーバー」の構築を目指しているのであとで削除(remove)します。

コンテナの再起動

以上でTurnkeyLinuxの初期設定は完了です。

proxmoxのLXCコンテナでtailscale環境構築

メニューから「Reboot」を選ぶとコンテナが再起動されます。

proxmoxのLXCコンテナでtailscale環境構築

以上でコンテナのインストールは完了です。

画面のrootログインから、コンテナ作成時に「全般」タブで設定したパスワードを入力することで、コンソール画面へログインできます。

モジュールの最新化

ログインしたら、最初にTurnkey Linux Coreのモジュールを最新化しておきましょう。

Turenkey Linux Coreは「ほぼ素のDebian」なので、これはDebianのアップデートとなります。


root@v-tailscale:~# apt update && apt -y upgrade

以上でDebian(Turnkey Linux Core)のモジュールが最新化されます。

webminモジュールの削除

また、Turnkey Linuxは標準でwebminとsshサーバーがインストールされています。

この中で(私は、本記事では)Webminは使用しないので関連モジュールを削除しておきます(任意です)。


root@v-tailscale:~# apt remove webmin

以上でwebminの関連モジュールが一括削除されます。

引き続き、このコンテナへtailscaleをインストールし環境構築を行っていきます。

STEP② LXCコンテナへtailscaleをインストールする

コンテナ定義ファイルの編集

tailscaleアプリケーションはホスト(この場合はProxmoxサーバー)のネットワークにアクセスする必要がありますが、LXCコンテナは通常「非特権モード」で動作するためここまでの手順ではtailscaleアプリがネットワークアクセスできません。

この制限を回避するために、作成したLXCコンテナの定義ファイルにおまじないを追記する必要があります。

LXCコンテナの定義ファイルはホスト(Proxmoxサーバー)の「/etc/pve/lxc」ディレクトリに「{コンテナID}.conf」という名前で作成されています。

本記事で作成したコンテナIDは”901″なので、修正すべきLXC定義ファイルのパスは「/etc/pve/lxc/901.conf」となります。

この定義ファイルを編集します。

なお、この定義ファイル編集作業の前に、コンテナは停止しておいてください。

以下はviエディタで901.confを開くまでのコマンドです。


root@sbpve01:~# cd /etc/pve/lxc/901.conf
root@sbpve01:/etc/pve/lxc# vi ./901.conf

定義ファイルの末尾に以下の2行を追記し、編集を終了します。


lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

編集後の定義ファイルは以下の内容になっているはずです(赤字部分)。


root@pve01:/etc/pve/lxc# cat 901.conf
#tailscale
arch: amd64
cores: 1
features: nesting=1
hostname: v-sats01
memory: 256
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=BC:24:11:1A:F4:46,ip=dhcp,ip6=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-lvm:vm-901-disk-0,size=8G
swap: 256
unprivileged: 1
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file
root@pve01:/etc/pve/lxc# 

以上で、コンテナ定義ファイルの修正は完了です。

定義ファイルを修正したら、コンテナを起動しておいてください。

ネットワーク定義の変更

コンテナ定義ファイルの修正が終わったら次にコンテナのネットワーク定義を変更します。

tailscaleが今回構築するサーバーを使って自宅ネットワーク全体へアクセスするために「IPフォワーディング」を許可する必要があります。

これはtailscale LXCコンテナのコンソール画面から「/etc/sysctl.conf」ファイルを編集します。


root@v-tailscale ~# cd /etc
root@v-tailscale /etc# vi sysctl.conf

以下の赤字行の先頭コメントを削除して各行(2行)を有効化します。


# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1

修正したらコンテナを再起動しておきます。

tailscaleインストール

では、いよいよLXCコンテナにtailscaleモジュールをインストールしていきます。

tailscaleの公式サイトには各種デバイスのOSごとにインストール方法やアプリのダウンロードが説明・提供されています。

Download Center | tailscale

proxmoxのLXCコンテナでtailscale環境構築

上記「Linux」のインストール方法として、以下のインストールシェルが提供されています。

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

上記のtailscaleインストールコマンドをコンテナのコンソール画面より投入します。

proxmoxのLXCコンテナでtailscale環境構築

tailscaleのインストールは短時間で終了します。

終了したらコンテナへインストールしたtailscaleをtailscaleサービスへ登録します。

サービス登録は以下のようなコマンド(tailscale upコマンド)で行います。

tailscale up --advertise-routes=192.168.11.0/24 --advertise-exit-node --accept-routes

上記のパラメーターを説明します。

パラメーター 説明
–advertise-routes 自宅ネットワークのサブネットアドレスを指定します。
–advertise-exit-node 自宅ネットワークをExitNodeとする場合に指定します。
※ExitNodeにしないなら指定不要
–accept-routes –advertise-exit-nodeとセットで指定します。

上記の「tailscale upコマンド」をコンテナのコンソール画面から投入します。

「advertise-routes」とは?

「advertise-routes」とはVPN接続をtailscaleがインストールされているサーバーアクセスだけでなく、自宅ネットワーク全体へアクセスできるようにする仕組みです。

「advertise-routes=192.168.1.0/24」など、自宅ネットワークのサブネットをパラメーターとすることで、外出先からは今回tailscaleをインストールしたTurnkey Linux Coreだけでなく、その他のネットワーク機器へもアクセスできるようになります。

つまり、tailscaleのVPN接続を使って外出先からも自宅にいるときと同じようにネットワークが利用できるようになる、というパラメーターです。

「advertise-exit-node」とは?

外出先のパソコンやスマホから自宅へtailscaleによるVPN接続している状態において、インターネットへの出口も自宅の回線を使うための仕組みです。

例えば外出先でフリーのWi-Fiなど「信頼できないネットワーク」を利用している場合、自宅へVPN接続(暗号化通信)したままインターネットへの接続もそのまま自宅の回線から出ていく仕組みです。

この仕組み(advertise-exit-node)が有効な場合、外出先のスマホやパソコンではExit-nodeを選択することができるようになります。

※つまり、外出先での回線が「信頼できる回線」であればそのまま(Exit-node = OFF)、「信頼できない回線」であれば自宅回線(Exit-node = ON)という使い方ができます。

tailscaleコンソールの設定

tailscale LXCコンテナのコンソール画面より「tailscale up」コマンドを投入すると以下のような画面となります。

Proxmox環境へtailscaleをLXCコンテナで導入

画面に「https://login.tailscale.com/a/**********/」というURLが表示されます。

このURLをブラウザへ入力しtailscaleサービスへログインすることで、今回構築するtailscaleサーバーがtailscaleサービスへ登録される仕組みになっています。

URLをブラウザへ入力するとtailscaleサービスへのログイン画面が表示されるので、サービス登録しているアカウントでログインします。

Proxmox環境へtailscaleをLXCコンテナで導入

ログインすると「Connect」画面が表示されるので「Connect」ボタンを押下。

Proxmox環境へtailscaleをLXCコンテナで導入

「ログイン成功」の画面が表示されるので、画面下の「Visit the console」のリンクをクリックしてtailscaleコンソールへ移動します。

Proxmox環境へtailscaleをLXCコンテナで導入

登録したtailscale(本記事では「v-tailscale」)がtailscaleコンソールへ登録されてます。

登録したtailscaleの右端「…」のメニューから「Edit routes settings…」を選びます。

Proxmox環境へtailscaleをLXCコンテナで導入

「Subnet routes」と「Exit node」の2つのチェックを行い「Save」。

以上でtailscaleコンソールでの設定は完了です。

また、以上でtailscale環境構築のすべての作業が完了しました。

動作確認

まとめ、仮想サーバーをVPNゲートウェイにする

tailscaleを使えば自宅固定回線がホームルーターなどのプライベートIPv4アドレスを使ったインターネット環境でも外出先から自宅へVPN接続ができるようになります。

自宅に仮想環境を構築し、そこへtailscaleを動作できる環境を作ることで、常時起動しているVPNサーバーとすることが可能、いつでも外出先から自宅ネットワークへ接続できるようになります。

そして、仮想環境がProxmoxであれば軽量コンテナである「LXCコンテナ」での構築がおすすめです。

外出先からいつでもアクセス

tailscaleは本当に簡単にVPN環境を構築することができるソリューションサービスです。

面倒な経路情報設定など不要、自宅ルーターのポート開放なども一切不要、そして超高速プロトコル「WireGuard」を使っていながらWireGuardのちょっと面倒な暗号鍵の管理からも解放されます。

tailscaleを使えばたとえ自宅回線がホームルーターやIPv4 over IPv6などのプライベートIPv4アドレス環境であってもVPN環境を構築することができます。

いままで回線環境の問題で自宅VPNの構築をあきらめていたから、tailscaleを使えば簡単にいつでも外出先から自宅ネットワークへ接続できる環境を構築することができます。

自宅のプライベートクラウド環境

今回は仮想サーバー「Proxmox」環境の中で軽量コンテナ「LXCコンテナ」を使いtailscale環境を構築しました。

tailscaleだけでなく、Proxmox内にさまざまな仮想マシンとしてのサービスを構築することで、外出先からいつでも使えるメディアサーバーなども構築し運用することができます。

TrueNASなどのストレージサービスと「NextCloud」や「PhotoPrism」などのメディア管理アプリを組み合わせることで、Google PhotosやAmazon Photosなどのスマホと連携したメディア管理システムも自宅で構築できます。

タイトルとURLをコピーしました