Tailscale始めました
冷やし中華が美味しい季節ですね。
私は、名代富士そばの冷やし中華が好きです。
今回、実験的に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.micro
やt3.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点リーダーをクリックし以下の設定を行なってください。
- Disabled key expiryをクリックする
- 既存の設定だと一定期間後にログアウトしてしまうため、再度EC2にSSHして紐付け直す必要が出てしまいます。そこで、key expiryを無効にします。
- Edit route settingsをクリックし、
Subnet routes
のチェックボックスにチェックをいれ、Saveする。
ここまでできましたか?
あとは繋げたいサービスを用意するだけです。
接続したいサービス(Public Subnet, Private Subnet関わらず)インバウンドルールにtailscale-test-sg
のセキュリティグループIDを入力すれば接続できます。
良き開発ライフを!!
最近はカラシ多めに入れるのが好きです。
Discussion