Cloudflare

Cloudflare

 

Turnsitle

CloudflareのTurnsitleは、CAPTCHAに相当するサービスです。CAPTCHAの代替え機能としてManaged Challengeという機能を使っています。ブラウザからのアクセスであるか、Botかの違いを判定する仕組みです。

TurnsitleはCloudflareのCDNサービスを使っていない場合でも利用可能です。CloudflareのDNS Proxyモードを使わない、DNS Onlyモードでも利用可能です。

 

Tunnels

Cloudflareのtunnels機能は、プライベートネットワーク環境にあるサーバーを使って、公開しているWebサイトやSSH環境などを構築できる便利な機能です。cloudFlareのZero Trust -> Networks -> Tunnels で設定します。

Tunnelの作成方法、cloudflaredプログラムのインストールや設定方法については、以下のURLで確認します。

 

Webサイトを公開する場合

  • www.ドメイン名の場合

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側の設定

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  になります。

 
  • 接続クライアント側のPCなどに、cloudflaredプログラムのインストールします。

~/.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/

 

FAQ

Q: 最初にCloudflareでドメイン名を追加設定して、サイトへアクセスすると「リダイレクト回数が多すぎます(ERR_TOO_MANY_REDIRECTS)」のエラーになる場合

A: Cloudflareにドメインを登録した時のデフォルトでは、登録したサイトの「SSL/TLS」設定の「お客様の SSL/TLS 暗号化モード」が「フレキシブル」になっています。「フル」に変更すれば通常のアクセス(サーバー上の自己署名証明書を使用して、エンドツーエンドを暗号化)になります。

 

 

 

タグ: