🕸️

Tailscaleで無料で簡単、VPNを構築するぞ

2024/03/25に公開

概要

TailscaleとはVPNを構築することができるサービスです。

外でもローカルネットワークにつなげたい私は、長らくVPNを構築したいと考えていたのですが、お金のない私はVPNサービスの契約もセキュリティの不安のある無料VPNも選べないチキンな状況でした。
そんな中、Tailscaleというサービスが無料サービスでありながら安全なのではないかという話をきき、「これはっ」と思い導入してみることにしました。

Tailscaleはクライアント側のソースをGitHub上で公開することで、クライアントが暗号化キーを一切サーバーへ送信していないことを証明しているため安全なのだと言います。
https://github.com/tailscale/tailscale

セキュリティに関しては素人なので、導入方法を説明しつつも自己責任ということでお願いします。

TailscaleでVPNネットワークを作る

アカウントの登録

まずはTailscaleのWebページを開き、アカウントを作成しましょう。
https://tailscale.com
画面右上の「Get started」を押下します。

するとサインアップが求められます。

メールアドレスによる登録はできないらしく、Google、Microsoft、GitHub、Apple、OpenID Connectと連携することで登録が可能みたいです。
今回はGitHubのアカウントを使用することにしました。

Windowsの設定

登録が完了すると、デバイスを登録しよう! という画面が開きました。

まず接続ができるのか確かめるため、Windows PCとAndroidを接続していこうかと思います。
Windowsを選択し「Download Tailscale for Windows」を押下し、ダウンロード画面へ移動します。

移動した先で改めて「Download Tailscale for Windows」を押下すると、インストーラがダウンロードできます。

インストーラを実行します。

同意して「Install」を押下するとインストールが開始されます。
さすがに何も選ばせてもらえないのはビビりました。

完了すると通知領域に●が9つ並んだアイコンが増えていると思います。これがTailscaleです。

右クリックすると「Log in...」があるので、押下しましょう。

ログインしましょう。

ログインに成功するとアイコンが変わりました。

Androidの設定

1つではVPNの意味がないので2つめのデバイス、Androidにインストールしてみます。
Playストアから「Tailscale」をダウンロードします。

インストールが完了したらTailscaleを起動し、「Get Started」からログインします。

ログインが完了するとVPN接続の権限追加を要求されますので許可しましょう。

接続情報が表示されます。
隠している上の情報はAndroidの名前とIP情報、下は他の端末(先ほど設定したWindows)の情報です。

すこしわかりにくいのですが、画面上部のトグルスイッチと右の「Active(接続中)」はVPNを有効にしているかを示しているものです。
トグルスイッチを切り返すと「Stopped(切断状態)」になります。

管理画面から接続情報を設定する

Windows側で設定を変更してみましょう。
通知領域のTailscaleを右クリックするとアカウント情報(青い部分)が表示されています。
その中から「Admin console...」を押下します。

ブラウザで管理画面が開きます。

ちなみにこの画面はTailscaleのWebページ上部の「Admin console」からも移動できます。

すこし説明するのにもいちいち画像にマスクするのも面倒なので、マシン名を変更してみましょう。
接続マシン一覧の一番右「…」を押下するとメニューが開きます。

「Edit machine name...」を押下すると名前の変更ダイアログが表示されます。

MagicDNSは、Tailscaleで接続したVPN内でDNS(ドメイン名の割り当て)が利用できる機能です。
標準では端末に設定されているホスト名で接続ができますが、「Auto-generate from OS hostname」をOFFにし、名称を設定することで任意の名称で接続できるようになります。
変更したら「Update name」で確定しましょう。

端末がどういうものなのかをマシン名に書いてしまうのはいささか間抜けですが、今回は実験なので「telephone-ランダム文字列」にしました。

Windowsからpingを飛ばしてみましょう。

きちんと応答していますね。
外部からpingを送信して確認してみましょう。

「Name or service not known」とありますので名前解決ができていません。
つまり外部からは到達できていません、VPNが確立していると言えそうです。

VPNを経由してインターネットに接続する

VPNネットワークは作りましたが、現状では登録した2つの端末間の接続が確立しただけであり、AndroidからローカルネットワークのプリンタやNASなどTailscaleのVPNに参加していない端末には接続できない状態です。

Windows側のネットワークを経由して接続するように設定を変更してみましょう。

Exit Nodeを許可する

まずは他のデバイスの外部接続を、Windows自身を経由するように許可をする必要があります。
通知領域のTailscaleを右クリックし、「Exit node」から「Run exit node...」を選択します。

選択するとExit nodeに関する説明と注意が表示されます。
Exit nodeとは「インターネットゲートウェイ」のような役割を、設定したマシンに持たせる機能です。
ダイアログによると「Windowsではまだ最適化されてないよ」ということですが、お構いなしに実行してみましょう。

Admin consoleの接続マシン一覧に戻ると「Exit Node」と表示されます。
この状態ではあくまで「Exit Nodeが申請されました」という状態であり、まだ完全ではありません。

「Edit route setting...」を押下します

Exit nodeを許可するため「Use as exit node」をチェックONし、「Save」を押下します。

特に表示は変わりません、ですがこれでExit Nodeが利用できるようになります。

Exit Nodeを経由するようにAndroidを設定する

AndroidのTailscaleを開き、右上の「︙」からメニューを開きます。
「Use exit node...」を押下しましょう。

利用が許可されているExit nodeの一覧が表示されるので、WindowsPCの名称を選択します。

Exit nodeが使用されている旨が表示されるようになります。

しかし、本当に経由するようになったのでしょうか?
もしAndroidがVPNを経由してWindowsPCのネットワークを利用するようになっているのであれば、グローバルIPが変わっているはずです。

確認してみましょう。

  • Tailscale未接続時
  • Tailscaleに接続、かつExit node未使用時
  • Tailscaleに接続、かつExit node使用時

ドメインとIPが変わっています。
Androidはau回線を、ローカルネットワークはBB回線を契約しているので、bbtec.netに変わったということはWindowsPCからネットワークの接続ができていると言えます。

今回は念願のVPNを試してみました。
実験の為にWindowsをEnd nodeに設定しましたが、常時起動しているPCではないので実際にはRaspberry Piなどに設定するのが現実的かなとは思います。

これで外出先でも音楽が聴くことができる、ふふふ……。

参考

こちらの記事を参考に構築しました。
https://www.gwtcenter.com/vpn

Discussion