2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tailscaleでVPNを作ってみたら爆速だった件

Posted at

はじめに

自宅サーバーでDiscord Botを動かすようになったあと、たまにBotがエラーを起こしたり、落ちたり、内部仕様を変更したりする必要があった。

障害発生時に家にいたらそこで直すのだが、外出中に障害が発生したら、家に帰るまでどうにもできない、という課題があった。

そのため、外部のネットワークからサーバにアクセスし、遠隔保守を可能とする必要があったので、VPNを構築することにした。

ただ、VPNを構築したことはなく、またやり方もよく分かっていなかったため、とりあえず簡単にVPNを構築できると聞いたことのあったtailscaleを使ってみることにした。

Tailscaleのインストール

とりあえず、tailscaleの公式ページからアカウントを作成する。

画面右上のGet startedをクリックし、アカウントを作成する。作成するというっても、GitHubと連携ができるので、GitHubアカウントを持っている人はそれでログインすると楽だろう。

アカウントが作成出来たら、「デバイスを登録しましょう!」みたいな案内が来る。さまざまなOSが出て来るので、使っているOSに合わせてインストールする。

Windowsの場合

Windowsを選択し、Download for Windowsをクリックすると、ダウンロードページに飛ぶ。今一度Download Tailscale for Windowsをクリックすると、インストーラがダウンロードされる。

あとはインストーラを管理者権限で実行し、インストールするだけである。確認事項とかは規約への同意くらいしかなかった。

ダウンロードが終わると、以下のようタスクバーからtailscaleを起動できるようになる(画像は起動後、左上の9つの点があるやつ)。

tail.png

これをクリックすると、ログインが求められる。先ほどと同様にログインすると、自動的にVPN接続される。

iPhoneやAndroidの場合

アプリストアからTailscaleを検索し、インストールする。インストール後、アプリを起動し、ログインするとVPN接続される。

Linuxの場合

コマンドラインから行う。UbuntuとかRaspberry Pi OSなどでも同様である。

  1. キーの登録
    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
    
  2. インストール
    sudo apt-get update
    sudo apt-get install tailscale
    
  3. 起動
    sudo tailscale up
    

ここまでやると、コマンドラインにURLが表示される。そのURLをブラウザに入力するなどして開くと、ログイン画面が表示されるので、今までと同様にログインするとサーバがVPN接続される。

接続の管理

このページにアクセスすると、VPN接続されている機器一覧を見ることができる。

表形式になっていて、各行に接続機器が表示される。各列の意味はそれぞれ以下の通りである。

  • MACHINE:接続機器の名前と登録した人のアカウント名
  • ADDRESSES:接続機器のIPアドレス(100.xxx.xxx.xxxの形式)
  • VERSION:バージョンとOSの種類
  • LAST SEEN:最後に接続された日時(接続中はconnectedと表示される)
  • ・・・:その他の情報や設定など

デフォルトでは、ADDRESSESには、tailscaleで割り当てられたIPアドレスが表示されているが、折りたたみを開くと、以下の情報が表示され、クリップボードにコピーできる。

  • 機器名(MACHINEに表示されているものと同じ)
  • ドメイン名(yyy.xxxxxx.ts.netの形式、yyyには機器名が入る)
  • IPアドレス(IPv6)
  • IPアドレス(IPv4)

表にはフィルターをかけることもできる。

他にも、DNSタブからは用いるドメイン名を変更できる。Rename tailnet...をクリックすると、ドメイン名を変更できる(詳細はここ)。

他にも様々な設定があるらしい。

使ってみる

pingする

Machinesから接続を確認したいサーバを探し、IPアドレスかドメイン名をコピーする。同じVPNにある限りは名前解決もやってくれるらしいので、どちらでもよい。

その後、以下のようなコマンドを実行すると、pingが通ることが確認できる。

ping xxxxxx.ts.net
ping 100.xxx.xxx.xxx

Webサーバを見てみる

サーバ側でapachenginxなどのWebサーバを立てている場合、ブラウザでアクセスすることができる。

クライアント側でブラウザを開き、以下のようなURLを入力すると、サーバのWebページが表示される。

http://xxxxxx.ts.net, http://100.xxx.xxx.xxx

スマホなどでやってみるとしっかり接続できていることがわかりやすいかもしれない。

sshする

特に難しいことはなく、configファイルに以下のようなことを記載し、.sshディレクトリで鍵のペアをssh-keygenコマンドで作成してから、サーバ側でユーザのホームディレクトリにある.ssh/authorized_keysに公開鍵を登録すれば、sshでログインできるようになる。これができてしまえば、あとはサーバをいつもの感覚で操作するだけなので、遠隔保守が可能になる。

Host myserver
    HostName xxxxxx.ts.net
    User myuser
    Port 22
    IdentityFile ~/.ssh/id_rsa

鍵の名前は適当に変更する。Hostnameにはtailscaleで割り当てられたIPアドレスかドメイン名を指定することとなる(上の例ではドメイン名)。

所感

とにかく簡単かつ爆速でVPNを構築することができて、非常に便利だと感じた。特に危険性などもなく、無料で使えるので、まずVPNを立ててみたいという人にとっては良い選択肢だろう。サーバを介さずPeer to Peerで通信しているらしいので(どうやってるのか気になる)、高速性もある。

ただ、ネットワークのことを何も意識せずとも使えてしまうので(独自ドメインを取る必要すらない)、VPNの勉強にはならないかもしれない。VPNを一から組みたい人には、OpenVPNなどを使うとよいかもしれない(自分も今度やってみる)。

OpenVPNのインストールとセットアップからインターネット接続までのガイドブック #Ubuntu - Qiita

参考文献

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

Tailscaleのインストール #tailscale - Qiita

2
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?