2023/3/17にエンジニアカフェ福岡で開催されたcloudflare meetup fukuokaでのLT資料です
https://cfm-cts.connpass.com/event/272936/
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.Cloudflare Tunnelを使ってみた木村健一郎2023年3月17日Cloudflare Meetup Fukuoka@エンジニアカフェ福岡
View Slide
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.名前:木村健一郎所属:株式会社オルターブースJAWS-UG福岡AWS Community builders(2022/Q3)SORACOM UG九州娘ちゃんのパパ(5歳8ヶ月)お仕事:テクニカルアーキテクト受賞歴:AWS Samurai 2019SORACOM MVC 2021好きなCloudflareサービス:Tunnel,Workers(予定)
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.Cloudflare Tunnelとはhttps://www.cloudflare.com/ja-jp/products/tunnel/
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.Cloudflareの後ろに置いたOriginサーバのロックダウン(Cloudflare経由以外の通信の遮断)をしたいときに使うサービス。通信経路の最適化にもなる。オリジンサーバの安全性確保
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.Front DoorからVNETの中のプライベートなオリジンに対してPrivate Linkでアクセスするようにする例えばAzureでいうとこういうこと
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.セキュリティグループでCloudFrontのマネージドプレフィックスリストを使うCloudFrontとEC2(など)の間はパブリックネットワーク(AWSの内部ネットワークではあるが、他のAWSの通信と共用)例えばAWSでいうとこういうこと(多分)Security group
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.Web以外にも使えるHTTP以外にも多くのプロトコルに対応しています。画面で選べる設定には以下のものがありました• HTTP• HTTPS• UNIX• TCP• SSH• RDP• UNIX+TLS• SMB• HTTP_STATUS
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.ネットワーク要件オリジンサーバから外向きの通信は以下を開ける必要があります。ProtocolsPortDestinationTCP/UDP (h2mux, http2, andquic)7844region1.v2.argotunnel.comTCP/UDP (h2mux, http2, andquic)7844region2.v2.argotunnel.comTCP (HTTPS)443api.cloudflare.comTCP (HTTPS)443update.argotunnel.com
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.やってみたまずはWebから。ローカルホストでC#(.NET7)のサンプルWebアプリケーションを動かしておきます。上記の通り、 http://localhost:5097/ で待ち受けています。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.CloudflareのコンソールからWebsiteを追加します
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.私は独自ドメン持ってたのでそれを入れてみます。検証なのでFreeプランでいきましょう。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.おっと、cloudflareに権威サーバを移せとな。Route53の検証はしたいのでこれは困った・・・
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.しょうがないので(え?)新規ドメインをcloudflareで取得。.winドメインは$3.16/年だったのでまぁいいか。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.ドメイン設定できたので、メニューから「Zero Trust」にアクセスします。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.適当なチーム名を入れます
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.ここもフリープランで
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.まだ支払い方法を入れてないのであれば「Add paymentmethod」からカードを追加し、「Next」を押す
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.おりょ、またこの画面?しかも再度Team nameを入れても進まず・・。一度リロードしてTeam name入れたら進みました。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.Access>Tunnelsで「Create a tunnel」を選びます
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.トンネル名を入れます
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.対象のマシンのアーキテクチャを選択して、トンネルを掘るためのソフト(cloudflared)をダウンロードします
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.警告出ても気にせず進みます
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.ダウンロード画面にあったコマンドを、管理者権限で実行します
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.WebSitesで登録したドメインが選べるようになってるので、選択します。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.このままだとアクセスする際にドメイン名だけで繋ぐことになるのでホスト名をSubdomainに入れます。「DNSレコードないからこのままだとちゃんと動かないかもよ?」と言われるが気にしない。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.サービスタイプでHTTPを選び、URLに localhost:5097を入れて「Save tunnel」します
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.できあがり!では、早速 http://(設定したホスト名.選んだドメイン名)/ にアクセスしてみましょう
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.無事接続できました!(ドメイン伏せてるから分かりにくいですが・・・)
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.トンネルを作ると、指定したホスト名のCNAMEレコードが自動的に追加されていました。ターゲットは トンネルID.cfargotunnel.com になっています。ただし、この名前で接続しようとしてもできませんでした。そしてProxyStatusというDNSでは見慣れない設定が。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.気になったので、設定したホスト名でdigってみると・・・Aレコードが返ってきてる。CloudflareのDNSサーバが内部的にトンネルの設定やクライアントに応じたAレコードを決定して返すような動作をすることで適切なエッジに誘導してるのかなと推測。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.次はsshを試してみましょう。sshdの動いているWSL環境でcloudflaredを動かし、ServiceのTypeをSSHにしてトンネルを追加します。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.クライアントにもcloudflaredを入れておき、~/.ssh/config ファイルに上記のように設定を追加します。Hostの後ろにアクセス先ホスト名、ProxyCommandにcloudflaredのインストール先と引数を記載します。このProxyCommandでcloudflaredを使うのがミソです(もう1つ方法がありますがここでは割愛)上記ではUserパラメータも記載してますが、その辺りは必要に応じて記載します。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.設定したホスト名に向けてsshしてみると無事WSLに繋がりました!IPアドレスがローカルアドレスになってるのが分かりますね。
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.まとめ•Cloudflareトンネルは、ドメインさえ準備できれば無料でトンネル掘れて便利•オリジンサーバには固定のIPアドレスどころかグローバルIPアドレスも不要。NATの内側でOK。•プロトコルも複数対応してる。というか対応プロトコルにTCPがあるからなんでもいける?•Cloudflareは他のサービスも面白そうなので試してみたい
Copyright © 2015-2023 ALTERBOOTH inc. All Rights Reserved.