【プライベートアクセス】Twingateを試してみた

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

今回は、Twingateを使って、
プライベートアクセスをしてみたので、ブログに記載します。

Twingateとは

Twingateとは、一言で言うと「VPNに代わるソリューション」になるかと存じます。

Secure remote access for distributed workforces | Twingate

以下、公式サイトから抜粋。

Secure access to private data for your distributed workforce Replace corporate VPNs with a more secure, usable and performant zero trust access solution

(日本語訳
分散した従業員のプライベート データへの安全なアクセス 企業の VPN を、より安全で使いやすく、パフォーマンスの高いゼロ トラスト アクセス ソリューションに置き換える

アーキテクチャ図

アーキテクチャ図は、以下の通りとなります。

https://files.readme.io/b886d14-Twingate-Overview.png

引用:Architecture Overview

コンポーネント

Twingateには、アーキテクチャ図に記載の通り、4つのコンポーネントがあります。
ざっくり解説すると以下の通りになるかと存じます。

①CONTROLLER:
CONNECTORやCONNECTORを介して接続するリソースの管理を行う。

②RELAY:
CONNECTORとCLIENTを結びつけ、通信を確立させる。

③CONNECTOR:
プライベートアクセスしたいサーバへトラフィックを転送する。
CONTROLLERやRELAYと通信を行う。(CLIENTとは直接繋がらない。)

④CLIENT(CLIENT APP):
ユーザーのデバイスにインストールされるソフトウェア。
プライベートリソースへのアクセスに対して、認証と承認を組み合わせたプロキシとして機能。

※認証には、GoogleやMicrosoft、Githubなどの情報を利用できます。

今回の構成

今回の構成は、以下の通りで、クライアントから「fk-test-linux-private」へプライベートアクセスします。 図に記載のRELAYとCONTROLLERは、SaaSになります。

f:id:swx-fukushima:20210603004337p:plain

やること

やることは以下の通りです。

  1. Twingate Networkの作成
  2. Connectorの構築(AMIのデプロイ)
  3. プライベートアクセスするリソースの設定
  4. クライアントアプリの導入
  5. 動作確認

1. Twingate Networkの作成

1-1. Try for Freeをクリックします。

f:id:swx-fukushima:20210603004817p:plain

1-2. Sign UPします。(今回は、with Googleを選択しました。)

f:id:swx-fukushima:20210603010704p:plain

1-3. 利用するアカウントを選択します。

f:id:swx-fukushima:20210603011035p:plain

1-4. Continueをクリックします。

f:id:swx-fukushima:20210603011148p:plain

1-5. チーム名を入力します。管理コンソールへのエンドポイント名に関連します。

f:id:swx-fukushima:20210603012115p:plain

1-6. プライベートアクセスするリソースがあるサービスを選択します。

今回は、AWSを選択しました。

f:id:swx-fukushima:20210603011512p:plain

1-7. チームメンバーの追加ができるようですが、今回はスキップしました。

f:id:swx-fukushima:20210603011609p:plain

1-8. お試しするプランを選択します。

お試しなので、どちらでもいいと思いますが、プランの詳細は、以下の通りです。

Twingate Product Tiers

f:id:swx-fukushima:20210603012215p:plain

1-9. 管理コンソールが表示されます。

f:id:swx-fukushima:20210603012434p:plain

2. Connectorの構築(AMIのデプロイ)

ここからConnectorの構築を行っていきます。 今回は、Connectorが導入されたAMIをデプロイします。 ドキュメントには、「ECS on Fargate」にデプロイする手順も記載がありました。

https://docs.twingate.com/docs/aws

2-1. Seto up Connectorsをクリックします。

f:id:swx-fukushima:20210603013301p:plain

2-2. Add a Connectorをクリックします。

f:id:swx-fukushima:20210603013351p:plain

2-3. Deploy Connectorをクリックします。

f:id:swx-fukushima:20210603013445p:plain

2-4. AWS AMIをクリックします。

f:id:swx-fukushima:20210603013553p:plain

2-5. Generate Tokensをクリックします。

アカウントの認証が求められるため、認証します。(画像は割愛)

f:id:swx-fukushima:20210603013613p:plain

2-6. RegionとSubnet ID,Security Group IDを指定します。

f:id:swx-fukushima:20210603013927p:plain

※私が試した際は、東京リージョンかつサブネットが1cだとデプロイに失敗しました...  1aか1dにしか対応していないようです。

An error occurred (Unsupported) when calling the RunInstances operation: Your requested instance type (t3a.micro) is not supported in your requested Availability Zone (ap-northeast-1c). Please retry your request by not specifying an Availability Zone or choosing ap-northeast-1a, ap-northeast-1d.

2-7. 今まで入力した情報を基にAMIをデプロイするコマンドが生成されるため、コマンドをコピーし、実行します。

f:id:swx-fukushima:20210603014143p:plain

2-8. ステップ5に記載の通り、接続を待ちます。(画像は日本語訳しております。)

f:id:swx-fukushima:20210603014805p:plain

2-9. EC2が無事に起動すると、ステータスがConnectedになります。

f:id:swx-fukushima:20210603014650p:plain

2-10. マネジメントコンソールからも確認してみると無事にEC2がデプロイされていることが分かります。

f:id:swx-fukushima:20210603014515p:plain

以上でConnectorの設定は完了です。

3. プライベートアクセスするリソースの設定

3-1. Add Resourceをクリックします。

f:id:swx-fukushima:20210603015101p:plain

3-2. 接続先の情報(DNSまたはCIDR)を入力します。

f:id:swx-fukushima:20210603015228p:plain

3-3. 設定した宛先に接続できるグループを指定します。

f:id:swx-fukushima:20210603015348p:plain

4. クライアントアプリの導入

4-1. ページ上部にある「Download」をクリックします。

f:id:swx-fukushima:20210603015459p:plain

4-2. クライアントに応じて、インストーラーをダウンロードし、インストールします。

f:id:swx-fukushima:20210603015546p:plain

5. 動作確認

5-1. Twingateを起動し、チーム名を入力します。

Join Networkをクリックするとアカウント認証が求められるため、認証します。

f:id:swx-fukushima:20210603015903p:plain

5-2. アカウント認証が完了すると以下の画面にリダイレクトされます。(このページは閉じてOKです。)

f:id:swx-fukushima:20210603020013p:plain

5-3. Connectorとの接続が確立されたため、プライベートリソースである「fk-test-private-linux」にpingを飛ばします。

# ping 10.88.10.60
PING 10.88.10.60 (10.88.10.60) 56(84) bytes of data.
64 bytes from 10.88.10.60: icmp_seq=1 ttl=254 time=3077 ms
64 bytes from 10.88.10.60: icmp_seq=2 ttl=254 time=2074 ms
64 bytes from 10.88.10.60: icmp_seq=5 ttl=254 time=188 ms
64 bytes from 10.88.10.60: icmp_seq=8 ttl=254 time=185 ms
64 bytes from 10.88.10.60: icmp_seq=10 ttl=254 time=202 ms
64 bytes from 10.88.10.60: icmp_seq=11 ttl=254 time=195 ms
^C
--- 10.88.10.60 ping statistics ---
11 packets transmitted, 6 received, 45.4545% packet loss, time 10327ms
rtt min/avg/max/mdev = 185.111/986.935/3077.487/1160.169 ms, pipe 3
#

 →無事にpingが通りました!!!

5-4. Windowsの場合、右下にTwingateのアイコンがあるため、ここから「Disconnect」等できます。

f:id:swx-fukushima:20210603020337p:plain

5-5. Disconnectした状態で、pingを実行し、接続できないことも確認してみました。

# ping 10.88.10.60
PING 10.88.10.60 (10.88.10.60) 56(84) bytes of data.
^C
--- 10.88.10.60 ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7272ms

#

終わりに

今回は、プライベートアクセスを試してみましたが、 Twingateの管理コンソールでパブリックIPを指定することも可能です。 これにより送信元がConnectorのIPになるため、外部公開しているサーバへの送信元を制御するのにも役に立ちそうです。

また、Twingateは、Connectorへ通信がアウトバウンドのみでよいため、セキュアで良いですね! では、またどこかでお会いしましょう~

福島 和弥 (記事一覧)

SRE3課

2019/10 入社

AWS CLIが好きです。