06:00以前レポートしたtailscaleの続報をお届けする。node」機能を用いたインターネット接続について紹介する。「tailscaleって何?」という方は、前の記事を参照してほしい。QNAPで動かす&ACLでアクセス制御する&インターネット接続暗号化QNAPのNASで「tailscale」を動かすまずは、QNAPのNASでtailscaleを動かすための方法を紹介しよう。builderを利用することで、簡単にパッケージをビルドすることができる。Linux環境があるなら、そちらを利用した方が楽だが、Windowsでビルドしたいという場合は、事前に以下の環境を用意しておく。engine」をオンにすることで、WSL2から呼び出せるようにしておけばいい。準備が整ったら、パッケージビルド用のコードをダウンロードする。cloneで取得するのが楽だが、gitに不慣れならZIPでダウンロードして展開しても構わない。build-essentialを実行)。自動的にビルドに必要な環境がDockerを使ったコンテナで用意され、必要なファイルのダウンロードや実際のビルドが自動的に実行される。out/pkgでパッケージをビルドする完了すると、実行フォルダー配下の「out」にある「pkg」フォルダーに、プラットフォームごとのパッケージが作成されるので確認しよう。今回はQNAPのNAS「TS-253D」で利用するので「Tailscale_v1.4.5_x86_64.qpkg」だが、ARM系のCPUを搭載したモデルの場合は、自分の利用しているモデルのCPUを確認し、適合するパッケージを選んで利用する必要がある。QNAPの2ベイNAS「TS-253D」パッケージが作成されるパッケージ作成できたら、NASの共有フォルダーにQPKGファイルをコピーし、AppCenterからインストールする。この際、次の2つの操作が事前に必要になる。設定ができたら、AppCenterからパッケージを手動でインストールする。この際「デジタル署名警告」が表示されるので、「リスクを理解した上でこのアプリケーションをインストールします。」にチェックマークを付けてインストールする。パッケージを手動インストールパッケージがインストールできたら、QNAPにSSHでアクセスし、次のコマンドを実行してインストール先のフォルダーに移動する。/etc/config/def_share.info(パッケージインストール先のフォルダー名を取得。/share/share/CACHEDEV1_DATA/.qpkg/Tailscale(パッケージのフォルダーに移動)最後に、次のコマンドでtailscaleを起動し、表示されたURLをPCにコピーして任意のウェブブラウザーからアクセスして認証すれば接続は完了だ。uptailscaleを起動してウェブ経由で認証を行うアクセス制御機能であるACLを設定するACLは、tailscaleを組織で利用したり、外部ユーザーとマシンを共有したりする際に必要となるアクセス制御機能だ。Connections」をオフにする(チェックを外す)ことで、そのマシンへの接続を拒否できる仕組みになっている。通常はこの機能だけでもアクセス制御が可能だが、ACLを利用することで、さらに細かな制御が可能になる。次のようなことが可能だ。上図は、簡単なACLの設定例だ。左側が社内で右側が社外を示し、それぞれのユーザーに対して異なるアクセス制御設定で「nas01」へのアクセスをコントロールしている。社内は、「tokyo」という地域と「manager」という職種の2つのグループで構成されており、それぞれに異なるアクセス権が設定されている。具体的には、上のユーザーはmanagerグループで許可されているように、nas01だけでなく全てマシンの全てのポートに対してアクセス可能だが、下のユーザーはtokyoグループにしか所属していないため、nas01に対して80と5000の2つのポートでしかアクセスできない。このようなグループごとのアクセス制御に対するACLは、図の同じ色で示された部分のように記述する。["nas01:80,5000"」なので、nas01のポート80とポート5000にしかアクセスできない。このようにtailscaleのACLでは、ユーザーをグループごとに分けたり、グループごとにアクセスできるマシンやポートを制限したりできる(ユーザーごとに設定することも可能)。続いて、図の右側の社外ユーザーの制御を見てみよう。こちらは、上図の青い部分の記述でアクセスが制御される。["tag:public:7001"]}ここでは、オートグループという概念を利用する。文字通り、動的にメンバーを構成可能なグループで、ここで利用している「shared」はtailscale上でマシンを選択して接続を共有した外部ユーザーのアドレスを示す。このように、マシンを共有するたびに、共有相手となるユーザーが自動的に「shared」グループに登録されるため、共有相手が増える度にACLを書き換えるような手間がかからないことになる。["tag:public:7001"]」とタグで指定している。このタグは、マシンごとに設定可能で、マシン側でtailscaleを起動する際に、次のようにタグを付けて起動することで利用できる。--advertise-tags=tag:publicこのようにマシンごとにタグを付けて管理することで、社内ユーザーのみが利用可能なマシンと外部に公開してもかまわないマシンを明確に区別することができる。タグが乱立すると管理が煩雑になるため、タグにはオーナーが必要だ。それが上図のACL内の赤で記述した「TagOwners」の部分になる。タグを設定できるのは社内ユーザーの中でも特定のユーザーのみに限られることになる。],こうした機能により、tailscaleでは、マシンに対して複雑なアクセス制御をすることができる。具体的には以下のようなアクセス制御が可能で、これらを組み合わせることもできる。ウェブサイトの制作時に顧客に対して「443」のみを許可して内容を確認してもらったり、開発者向けのAPIアクセスだけを許可したり、ゲームのポートのみを許可してマルチプレイを楽しんだりと、特定のユーザーに対して限定的に公開されたポートのみを使ってVPN接続を共有できる。した柔軟な設定が可能な点も、tailscaleの魅力と言えるだろう。node機能について紹介する。nodeに設定した特定の端末を経由してインターネットに接続するための機能だ。IPsを「0.0.0.0./0」にする設定と同じだ。node経由で行うことになる。テレワークなどで自宅から会社のリソースへアクセスするようなケースでは、インターネット接続はそのままに、VPN内の端末に接続するときのみtailscaleで通信する従来のスプリットトンネル方式の方が、VPNのトラフィックを軽減できるため好ましい。カフェやファストフード店、空港、駅などで提供されている公衆無線LANのうち、暗号化されてないSSIDやWEPを利用するSSIDに接続するようなケースでは、会社(VPN内)のリソースにアクセスするときだけでなく、インターネット接続もVPNを利用して暗号化したいというニーズもある。nodeは、こうしたニーズに応える新機能というわけだ。端末でIPフォワードを有効にする。nodeにしたい端末(会社やクラウド上の端末)で、「--advertise-exit-node」オプションを付けてtailscaleを起動する。nodeをオンにする。nodeとして設定可能になるので、詳細画面でオンにするだけだ。node」を選択し、インターネット接続に経由させたい端末を選択すればいい。nodeオンとオフの状態で接続元の情報が変化していることが確認できる。nodeの間の通信がWireguardによって暗号化されたことになる。外出先で公衆無線LANを使うときのセキュリティ対策として活用できるだろう。nodeを複数構成しておくことで、柔軟に経由先を変更できる点だ。nodeを用意しておくことで接続元を海外にすることなどもできる。簡単に設定できる割に柔軟性が高く、利便性の高い機能と言えるだろう。このようにtailscaleは非常にアグレッシブで新機能に貪欲なサービスだ。その分、クライアントのアップデートが頻繁で管理が大変だが、同社のことなので、そのうちクライアントの自動アップデートもサポートしてくれることだろう。製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。活用編」ほか多数の著書がある。