こんにちは、ナナオです。
今回は巷で噂のtailscaleというVPNを家に導入して、外から安全に家のネットワークにアクセスできるようにしたいと思います。
初期設定
まずはアカウントを作ります。
以下のサイトにアクセスします。
各情報を入力して、デバイスのセットアップをします。
デバイスにtailscaleをインストールします。
windowsを使っている場合はwingetでインストール可能です。
winget install Tailscale.Tailscale
インストールすると以下のような画面が立ち上がります。
次の画面で「Sign in your network」をクリックします。
以下のような画面がブラウザで立ち上がるので、Connectを押します。
成功すると、以下のような画面が表示されます。
これで一つ目のデバイスのセットアップは完了しました。
もう一つデバイスをセットアップしましょう。
家で動いているUbuntu Serverにインストールします。
先ほどの画面からadmin consoleに移動して、以下の「Skip this introduction」をクリックします。
SettingsタブのKeysから、Generate auth key…をクリックします。
項目を入力後Generate keyをクリックし、生成されたAPIキーを保存します。
いよいよlinuxにインストールします。
Ansibleで管理したいので、以下のようなプレイブックを実装しました。
---
- name: Install and Setup Tailscale
hosts: main
become: yes
vars:
tailscale_auth_key: "<先ほど生成したAPIキー>"
tasks:
- name: Ensure /usr/share/keyrings directory exists
ansible.builtin.file:
path: /usr/share/keyrings
state: directory
mode: "0755"
- name: Download Tailscale GPG key
ansible.builtin.get_url:
url: https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg
dest: /usr/share/keyrings/tailscale-archive-keyring.gpg
mode: "0644"
- name: Add Tailscale repository list
ansible.builtin.get_url:
url: https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list
dest: /etc/apt/sources.list.d/tailscale.list
mode: "0644"
- name: Ensure Tailscale is installed
ansible.builtin.apt:
name: tailscale
state: present
update_cache: yes
- name: Check if Tailscale is already authenticated
ansible.builtin.command: tailscale status
register: tailscale_status
failed_when: false
changed_when: false
- name: Bring Tailscale up with Auth Key
ansible.builtin.command:
cmd: "tailscale up --authkey={{ tailscale_auth_key }}"
# 既に接続済みの場合は実行しない(冪等性の確保)
when: tailscale_status.rc != 0
これを実行します。
実行に成功すると、admin consoleに以下のようにIPアドレスが表示されます。
ここではlinux側に向けてpingコマンドを実行します。
ping <発行されているIPアドレス>
なんと、通信できてます。
感想
こんな簡単にVPN構築出来ちゃっていいの…?というくらい簡単に構築できました。
このあとiPhoneにもインストールしてみましたが、あっさりうまくいきました。
すごい、すごすぎる。