このガイドでは、軽量コネクター cloudflared を使い、Amazon Web Services(AWS)の仮想マシンを Cloudflare に接続します。
デプロイするものは次のとおりです。
- 基本的な HTTP サーバーを動かす EC2 仮想マシン。
- パブリックホスト名またはプライベート IP アドレスのいずれかで、ユーザーがサービスへ接続できる Cloudflare Tunnel。
次の手順を完了するには、次が必要です。
- Web サイトを Cloudflare に追加する
- エンドユーザーデバイスに Cloudflare One Client をデプロイする
-
AWS コンソールで Compute > EC2 > Instances を開きます。
-
Launch instance を選びます。
-
VM インスタンスに名前を付けます。この例では
http-test-serverとします。 -
Amazon Machine Image (AMI) で、希望するオペレーティングシステムと仕様を選びます。この例では Ubuntu Server 24.04 LTS (HVM), SSD Volume Type を使います。
-
Instance type: では、無料枠で使える t2.micro を選べます。
-
Key pair (login) で、SSH 用の新しいキーペアを作成します。
.pemファイルをローカルマシンにダウンロードする必要があります。 -
Network settings で Create security group を選びます。
-
次のセキュリティグループルールをオンにします。
- Allow SSH traffic from My IP — インスタンスが一般公開されないようにします。
- Allow HTTPS traffic from the internet
- Allow HTTP traffic from the internet
-
Launch instance を選びます。
-
インスタンスが起動したら、Instances の概要ページを開き、Public IPv4 DNS ホスト名をコピーします(例:
ec2-44-202-59-16.compute-1.amazonaws.com)。 -
SSH でインスタンスにログインするには、ターミナルを開き、次のコマンドを実行します。
cd Downloadschmod 400 "YourKeyPair.pem"ssh -i "YourKeyPair.pem" [email protected]-
sudo suを実行し、インスタンスの管理者権限を取得します。 -
テスト用に、ポート
80で基本的な Apache Web サーバーをデプロイできます。
apt update
apt -y install apache2
cat <<EOF > /var/www/html/index.html
<html><body><h1>Hello Cloudflare!</h1>
<p>This page was created for a Cloudflare demo.</p>
</body></html>
EOF- Apache サーバーが動作していることを確認するには、ブラウザーで
http://ec2-44-202-59-16.compute-1.amazonaws.comを開きます(httpsではなくhttpで接続してください)。Hello Cloudflare! のテストページが表示されます。
Cloudflare Tunnel を作成し、AWS instance 上で実行します。
-
Cloudflare ダッシュボードにログインし、Networking > Tunnels を開きます。
Tunnels を開く ↗ -
Create a tunnel を選択します。
-
トンネル名を入力します(例:
aws-tunnel)。 -
Create Tunnel を選択します。
-
OS を選びます(AWS instance では Debian を選択)。インストールコマンドをコピーし、AWS instance 上で実行します。
-
トンネルの接続を待ちます。接続できたら Continue を選択します。
公開アプリケーション を使うと、インターネット上の誰でも、仮想プライベートクラウド (VPC) 上でホストしている HTTP リソースに接続できます。Cloudflare Tunnel に公開アプリケーションを追加する手順は次のとおりです。
- Routes タブで Add route を選び、Published application を選択します。
- アプリケーションのホスト名を入力します(例:
hellocloudflare.<your-domain>.com)。 - Service に
http://localhost:80を入力します。 - Add route を選択します。
- 動作確認として、ブラウザーで
http://hellocloudflare.<your-domain>.comを開きます。Hello Cloudflare! のテストページが表示されます。
必要に応じて Access アプリケーションを作成 し、サービスへアクセスできるユーザーを制御できます。
プライベートネットワークルート を使うと、ユーザーは Cloudflare One Client 経由で virtual private cloud (VPC) に接続できます。Cloudflare Tunnel にプライベートネットワークルートを追加する手順です。
-
Cloudflare ダッシュボードで Networking > Routes を開きます。
Routes を開く ↗ -
Create route > Tunnel CIDR を選びます。作成したトンネルを選び、AWS instance の Private IP address を入力して(例:
172.31.19.0)、Create route を選びます。必要に応じて、あとから IP 範囲を広げられます。 -
Split Tunnel の設定 で、プライベート IP が Cloudflare One Client 経由でルーティングされていることを確認します。たとえば、Split Tunnels が Exclude モードの場合は、
172.16.0.0/12を削除します。AWS instance が明示的に使っていない IP は、リストへ戻すことを推奨します。戻す IP アドレスを決めるには、
172.16.0.0/12から AWS instance の IP を差し引きます。結果を Split Tunnel の Exclude モードのリストに戻します。
-
ユーザーデバイスでテストする手順です。
- Cloudflare One Client にログイン します。
- ターミナルを開き、プライベート IP でサービスに接続します。
curl 172.31.19.0<html><body><h1>Hello Cloudflare!</h1> <p>This page was created for a Cloudflare demo.</p> </body></html>
任意で Gateway のネットワークポリシーを作成 し、プライベート IP 経由で AWS instance にアクセスできるユーザーを制御できます。
AWS インスタンスを保護するには、Security Group ルール ↗ を設定し、すべてのインバウンドトラフィックを拒否して、Cloudflare Tunnel の IP アドレス へのアウトバウンドトラフィックだけを許可できます。Security Group ルールはすべて Allow ルールです。ルールに一致しないトラフィックはブロックされます。そのため、インバウンドルールをすべて削除し、必要なアウトバウンドルールだけを残せます。
Security Group ルールを設定したあと、パブリックホスト名 または プライベート IP で、Cloudflare Tunnel 経由でサービスにアクセスできることを確認します。サービスは Cloudflare Tunnel の外からは到達できなくなります。たとえば http://ec2-44-202-59-16.compute-1.amazonaws.com を開いても、テストページは読み込まれません。