🍜

Tailscale始めました

2024/08/19に公開

冷やし中華が美味しい季節ですね。
私は、名代富士そばの冷やし中華が好きです。


今回、実験的にTailscaleを導入したので方法や所感とか書いていきます。

Tailscaleとは

ざっくりいうといい感じにVPNを構築できるサービスです。
Linuxとかにも対応しているので、1台小さなサーバーを立てればPrivate SubnetのEC2インスタンス, RDS等々にも接続できます。

他のサービスとの相違点

Session Manager(AWS Systems Manager)

単純なSSH(+ VPN)を用いていない場合、これを用いている人が多いのではないでしょうか。
通常だとSSHだけが行えますが、ポートフォワーディング機能を用いることでEC2を踏み台にしてRDS等にもアクセス可能です。

一方、設定にはAWS CLIを用いる必要があり、誰でも使いやすいか。。と言われると微妙かもしれません。

aws ssm start-session --target <ssm-managed-instance-id> --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"portNumber":["3306"],"localPortNumber":["1053"],"host":["remote-database-host-name"]}'

AWS Systems Manager Session Managerでポートフォワーディングを使用してリモートホストに接続する | Amazon Web Services ブログより引用

また、Webサービスなどの場合http://localhost:3080のようにアクセスする必要があるので、HOSTの視認性が良いかというのも微妙な点かもしれません。
(hostsをいじれば改善できますが、誰でもできるか...(以下略

AWS Client VPN

Tailscaleと比較的似たサービスじゃないでしょうか。
個人的にはかなり候補に入っていたのですが、やはり最低でも108ドル月にかかることから断念しました。
大きくなればあまり問題はないのかもしれませんが、ごく少数の人数しかいなかったためコスパがかなり悪い状況でした。

導入方法

あらかじめ、PCへTailscaleをインストールしておいてください。

VPCをたてる(任意)

いい感じに建ててください。
この際、IPv4 CIDRをメモっておいてください。

すでに建てている場合は、そのIPv4のCIDRをメモってください。

Tailscale用EC2を建てる

イッチバン安いやつで大丈夫です。
t2.microt3.microならAWSの無料利用枠の対象です。

サブネットはpublicでもprivateでもどちらでも大丈夫ですが、初期設定はSSH経由で行ってしまうため自分はpublicに配置しました。

その際、初期設定のため自分のIPだけSSHできるようにセキュリティグループの設定を変更してください。今回は、tailscale-test-sgというセキュリティグループを作成しました。

その後、Tailscale用EC2にSSHしてください。

Tailscaleをインストールします。(参考:Connect to an AWS VPC using subnet routes · Tailscale Docs

$ curl -fsSL https://tailscale.com/install.sh | sh
$ sudo systemctl enable --now tailscaled

IPフォワーディングの設定をします。(参考:Subnet routers · Tailscale Docs

$ echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
$ echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
$ sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

起動します

$ sudo tailscale up --hostname=test-tailscale --advertise-routes=10.0.0.0/16

この時の10.0.0.0/16は先ほどメモっておいたVPCのIPv4 CIDRです。

ここまですると、リンクが出てくると思います。
そこに進んでログインすると、ひとまずTailscale用EC2側の設定は完了です。

Tailscale側の設定

TailscaleのAdmin Consoleにログインしてください。
すると、TailscaleをインストールしたPCと、先ほど設定したEC2の2つが表示されると思います。
この際、EC2側の3点リーダーをクリックし以下の設定を行なってください。

  1. Disabled key expiryをクリックする
    • 既存の設定だと一定期間後にログアウトしてしまうため、再度EC2にSSHして紐付け直す必要が出てしまいます。そこで、key expiryを無効にします。
  2. Edit route settingsをクリックし、Subnet routesのチェックボックスにチェックをいれ、Saveする。

ここまでできましたか?
あとは繋げたいサービスを用意するだけです。

接続したいサービス(Public Subnet, Private Subnet関わらず)インバウンドルールにtailscale-test-sgのセキュリティグループIDを入力すれば接続できます。

良き開発ライフを!!


最近はカラシ多めに入れるのが好きです。

Discussion