LinuxでCloudflareトンネルを設定する方法


Cloudflareトンネルとは


Cloudflareトンネルは、外部接続のみの接続を使用して内部サービスを公開するために使用できます.ngrokトンネルを考えてください.CloudFlareトンネルはプロキシの通常のHTTP/HTTPS接続、SSH/VNCだけでなく、いくつかのより多くの制限を持つ任意のTCPのようなより高度なものに使用することができます.
CloudFlareトンネルを使用する利点は、Webサーバー上の任意のポートを開く必要はありません、IPの制限、オリジンCertチェックなどのような何かの必要はありません.
このガイドでは、HTTP上の通常のWebサーバーのトンネルを設定するに焦点を当てます.トンネルがトラフィックのためのプロキシとして機能しているので、ウェブサーバ(またはあなたがトンネルを通して露出しているものは何でも)はすべての入って来るトラフィックをlocalhostとして見ることを覚えておくことが重要です.あなたは、ヘッダー(通常のCDNのもの)から本当のユーザーのIPをつかむ必要があるが、localhostにどんな資源も制限することに頼らないでしょう.

Cloudflareトンネルの価格決定/限界


Cloudflareトンネルは完全に無料です.CloudFlareトンネルはCloudflare Argoトンネルと命名され、CloudFlare Argoサブスクリプションを必要としました.Cloudflare Argoは、彼らがネットワークの混雑を避けているあなたの起源へのルート要求に「賢いルーティング」を使うサービスCloudflare提供です.
あなたはまだあなたの起源にトラフィックをスピードアップしようとするアルゴサブスクリプションを購入することができます今CloudFlareは完全に製品を分離しています.トンネルは、いくつかの制限だけで任意の交通量のために無料です:1000 Tunnels per account, and 100 Active Connections from each tunnel to Cloudflare's edge.

要件

  • Cloudflareアカウント(無料)
  • Cloudflare(CFネームサーバを使用している)に加えられた
  • ドメイン
  • Linuxサーバで既にWebサーバが設定されている
  • ポートは、あなたのファイアウォール
  • を通してポート転送されるか、許容される必要がありません

    Cloudflareトンネルを設定する方法


    インストール


    CloudFlareトンネルはCloudFREDを使用し、CryptoFlareからのトラフィックをプロキシにトンネルデーモンとし、トンネルを作り、管理するためのCLIインターフェースを提供する.

    deb install ( Ubuntu , Linux Mint , Debianなど)
    wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared-linux-amd64.deb
    

    ​ .RPMのインストール( centos , ferdora , rhel , opensusuなど)
    wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm && sudo rpm -i cloudflared-linux-x86_64.rpm 
    

    にログイン


    cloudflared tunnel login
    
    このコマンドを使用すると、CloudFlareに署名するリンクを与え、トンネルを作成するゾーンを選択します.
    完了すると、アカウントの証明書をダウンロードします.このCERTは、トンネルを作成して、管理する将来のAPI要求を認可するのに用いられます.トンネルが稼働したら、独自の資格情報ファイルを使用します.このマシンからトンネルを管理/作成/削除しない限り、安全に削除できます.

    トンネルを作る


    cloudflared tunnel create <name>
    
    このコマンドは、入力された名前に基づいて名前付きトンネルを作成します.これは新しいトンネルを生成します、これはトンネルのためのUUIDを生成するのを含みます、デフォルトのCloudfresディレクトリのトンネル資格情報ファイルとサブドメイン.cfargotunnel.あなたがルート要求に使用することができるCOM.
    この例では、私のトンネル「FrontPage」に名前を付けます.

    トンネル設定ファイルの作成


    過去の2つのステップを通して、ログインして、アカウントCertを作成して、トンネルCertを生成して、トンネルを作った後に、Cloudfaresはあなたのものへの道をリストしました.Cloudfresディレクトリは、おそらくあなたのホームディレクトリに基づいています.
    "//. Cloudfres "または"/home/{ username }/. Cloudfled "のようなもの
    そのフォルダに移動します.あなたはcert . pem(あなたのアカウントCert)とAを見るべきです.JSONファイルをトンネルのUUIDと名付けます.
    新しいディレクトリを作成します.YML、あなたの好みのテキストエディタを使用して開きます.
    url: http://localhost:80
    tunnel: <Tunnel-UUID>
    credentials-file: /home/{username}/.cloudflared/<Tunnel-UUID>.json
    
    URL行は、公開したい内部サービスに対応します.https ://を使用する必要はありません.CloudFlareトンネルとCloudFlareのデータセンター間の接続は既に暗号化されています.これはローカルにWebサーバに接続するトンネルです.
    トンネルUUIDはあなたの名前付きトンネルに対応する36文字の値です.あなたがトンネルを作ったとき、それは示されました.また、あなたの行くことによってそれを見つけることができます.CloudFleresディレクトリを作成したトンネルのための新しく作成されたJSON資格情報ファイルを探しています.それはトンネルUUIDと命名されるべきです.JSON

    あなたのトンネルへのルートトラフィック


    あなたは、ちょうどあなたのトンネルへのルートトラフィックへのCNAME記録を作成します.あなたはとても簡単にCloudfares CLIを使用することができます
    cloudflared tunnel route dns <Tunnel UUID or Name> <Hostname>
    
    例えば、私のトンネルはfrontpageという名前で、example.chaika.devを通してアクセスできるようにしました.だから私は
    cloudflared tunnel route dns frontpage example.chaika.dev
    

    トンネルを動かす


    最後に、あなたのトンネルをテストすることができます.
    cloudflared tunnel run <UUID or Name>
    
    また、実行する特定の設定ファイルを指定することもできます
    cloudflared tunnel --config path/config.yaml run
    
    トンネルが有効になったら、それをルーティングしたホスト名を使ってアクセスしてみてください.トンネルが完全にライブ/アクセスするために数秒かかるかもしれません.何かが間違っているならば、CLIで走っているトンネルはあなたにエラーに関する詳細情報を伝えなければなりません.

    トンネルをサービスとして実行する


    手動でトンネルを実行すると、動作しますが、最善ではありません.お使いのマシンが再起動した場合、自動的に起動しません.
    幸いにも、Cloudfaresは非常に簡単にサービスとしてインストール自体をサポートしています.
    sudo cloudflared service install
    
    手動で設定場所を指定する必要があります.私の場合、私はそれを指定しなければなりませんでした.
    例えば、
    sudo cloudflared --config /home/{username}/.cloudflared/config.yml  service install 
    

    Note that you specify the config argument before the 'service install' command parameters.


    設定は/etc/cloudflaredにコピーされます
    私はトンネル資格情報ファイル({トンネルUUID}. JSON)の上に同様にそこにコピーすることを勧めます.
    次に、サービスを起動し、ブートを開始するように設定します
    sudo systemctl enable cloudflared
    sudo systemctl start cloudflared
    
    トンネルの起動を開始します.
    sudo systemctl status cloudflared
    
    あなたがそれを発送したホスト名を探索することによって、あなたのトンネルをテストしてください.
    どんな運でも、それはすべて働いて、あなたのCloudFlareトンネルは現在、セットアップされます.そして、サービスとして実行して、自動的に再起動を始めて、よく働きます!

    トンネル工事


    トンネルが起動すると、複数の接続ができます.CloudFlareは、1つのクラッシュ/リブート時に複数のマシンに接続し、他の接続を使用できると言います.
    CloudFlareへの個々の接続は、一度に1つのユーザ要求に制限されません.CloudFlareは、各接続は、一度に何百または何千もの要求を扱うことができると言います.
    各トンネルは最大100の接続をサポートし、信頼性のためのより多くのCloudfaresレプリカ/インスタンスを起動することができます.CloudFlareはロードバランシングのためにこれをすることを勧めません、そして、どんな接続が選ばれるかについて、保証をしません.彼らは、これのためのトンネルとともに彼ら自身のロードバランシング製品を使うことを勧めます.
    あなたは“アクセス”、“トンネル”の下にCloudflare Teams Dashを使用することができますそれぞれのトンネルの良い眺めを参照してください、それが持っているルートは、アップタイム/接続、および他のすべての関連情報を持っている.
    CloudFlareチームのために/Cloudflareのアクセスは、あなたがまた、50人のために使用することができます寛大な無料プランを持って、Google(または他のSSOオプションのトン)を使用してAuth.あなたは非常に簡単にあなたのトンネルを保護し、特定の電子メールまたは他のオプションだけに制限するアプリケーションポリシーを作成することができます.
    {トンネルUUID }.cfargotunnel.COMは仮想の/存在しないドメインです.そして、それはあなたがCNNameのあなたのトンネルと他の参照を指し示すとき、内部で使用されるだけです.他のCloudflareの顧客は自分のトンネルで自分のドメインを指し示すことができず、CloudFlareのアクセスやその他の制限を回避することができない.

    クロージングノート


    うまくいけば、これはあなたが理解し、Cloudflareトンネルを作成するのに役立ちました.私は自分自身のためにこのチュートリアルを作成し、Cloudflareのトンネルのドキュメントが存在し、ほとんどすべてをカバーしていますが、多くの詳細については光沢があり、初心者には本当に混乱することができます.
    読書ありがとう.質問があれば知らせてください.私はほとんど小さいウェブサイト/フォーラムではありますが、かなりの時間のCloudflareトンネルを使用しました.