CloudflareのTurnsitleは、CAPTCHAに相当するサービスです。CAPTCHAの代替え機能としてManaged Challengeという機能を使っています。ブラウザからのアクセスであるか、Botかの違いを判定する仕組みです。
TurnsitleはCloudflareのCDNサービスを使っていない場合でも利用可能です。CloudflareのDNS Proxyモードを使わない、DNS Onlyモードでも利用可能です。
Cloudflareのtunnels機能は、プライベートネットワーク環境にあるサーバーを使って、公開しているWebサイトやSSH環境などを構築できる便利な機能です。cloudFlareのZero Trust -> Networks -> Tunnels で設定します。
Tunnelの作成方法、cloudflaredプログラムのインストールや設定方法については、以下のURLで確認します。
CloudFlareのZero Trust -> Networks -> Connectors -> Create Tunnles Tunnel作成後、その後 Tunnel名をクリック -> Edit -> Published application routes -> Add a Published application routes -> Tunnel名を追加
Host name : www.ドメイン名 Service : Typeは HTTP URLは localhost:同じポート番号(例えば49999)
Host name : メイン名 Service : Typeは HTTP URLは localhost:同じポート番号(例えば49999)
Hostnameでサブドメインなしで、ドメイン名だけ上場合は、Cloudfareのドメイン設定にてドメイン名にCNAMEが設定されるので、ワーニングとして「CNAME records normally can not be on the zone apex. We use CNAME flattening to make it possible. Learn more.」と表示されます。翻訳:CNAMEレコードは通常、ゾーンの頂点に配置することはできません。これを可能にするために、CNAMEのフラット化が採用されています。詳細はこちらをご覧ください。 詳しくは https://developers.cloudflare.com/dns/cname-flattening/
WWW有りと無しのTunnelができたら、プライベートネットワークにある、cloudflaredがインストール済みのサーバーでWebサイトの設定をします。Debian 12 bookwormの場合。
Apacheの設定ファイルのサンプル:
www.ドメイン名 にアクセスしたら、www無しの ドメイン名 に自動変更する場合のApacheの設定です。リバースプロキシでWebサイトを設定。ポート番号 49999 は実際のポート番号に変更します。
<VirtualHost *:49999>
ServerName www.ドメイン名
Redirect permanent / http://ドメイン名/
</VirtualHost>
<VirtualHost *:49999>
DocumentRoot /home/www/html/tunnels/projects/xxxxx
ServerName ドメイン名
ServerAdmin 担当者メールアドレス
ErrorLog /var/log/apache2/projects/ドメイン名.error.log
CustomLog /var/log/apache2/projects/ドメイン名.access.log combined
ProxyRequests Off
<Directory /home/www/html/tunnels/projects/xxxxx>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ProxyPass /html http://localhost:49999/
ProxyPassReverse /html http://localhost:49999/
</VirtualHost>上記の設定ファイルを www.ドメイン名.conf として /etc/apache2/sites-avaiable に作成し、a2ensiteコマンドでApacheに有効化し、Apache再起動します。
上記手順に基づきサ、ブドメインでTunnelを作成し、Apacheの上記ファイルと同じような設定にし、サブドメイン名だけのURLなので、 ”Redirect permanent” の<VirtualHost>設定を削除すれば、大丈夫だと思います。
SSHでアクセスする場合
CloudFlareのZero Trust -> Networks -> Connectors -> Create Tunnles Tunnel作成後、その後 Tunnel名をクリック -> Edit -> Published application routes -> Add a Published application routes -> Tunnel名を追加
サブドメイン名を mylabo ドメイン名を example.com
Host name : サブドメイン名 mylabo ドメイン名 example.com Service : Typeは SSH URLは localhost:22
Serice名は ssh://localhost:22 になります。
~/.ssh/configを次のように編集して、Cloudflare経由でSSH接続できる設定にします。
Host mylabo
Hostname mylabo.example.com
User ログインするユーザー名
ProxyCommand /usr/local/bin/cloudflared access ssh --hostname %h
参考にしたサイト:https://kakudo.org/blog/cloudflare-tunnels-into-lab/
Q: 最初にCloudflareでドメイン名を追加設定して、サイトへアクセスすると「リダイレクト回数が多すぎます(ERR_TOO_MANY_REDIRECTS)」のエラーになる場合
A: Cloudflareにドメインを登録した時のデフォルトでは、登録したサイトの「SSL/TLS」設定の「お客様の SSL/TLS 暗号化モード」が「フレキシブル」になっています。「フル」に変更すれば通常のアクセス(サーバー上の自己署名証明書を使用して、エンドツーエンドを暗号化)になります。