現在の環境では、家庭用回線でパブリックIPv4を持っている家庭は多くありませんが、誰もがウェブサイトを構築して遊んでみたいと思っています。あるいは、大手クラウドストレージ業者の課金方式や手段に耐えられず、高い要求を持つストレージニーズを解決するためにプライベートクラウドを構築したい人もいます。IPv6などの手段で解決できますが、ルーターのファイアウォールや国内のIPv6普及率の問題に制限されています。現在のIPv6は国内ではIPv4の補完手段のようなもので、真の意味での代替は実現していません。(純粋なIPv6サイトなんて聞いたことないですし)
そこで、Frpのような内部ネットワークトンネリングソフトウェアを使用して、パブリックIPv4がない状況でも外部ネットワークからのアクセスを実現する必要があります
(本記事では対応システムのインストールには触れず、frpcとfrpsの構築と使用方法のみを扱います)
(本記事で紹介するfrps/frpcのバージョンはすべて0.53.0です(記事を半分書いたところで大型アップデートが来ました...)。バージョンの差が大きすぎると接続できないなどのバグが発生します)
まず、Frpが何に使えるのか、どこで使えるのかを理解しましょう(以下は一般的な使用シーンの一部のみを挙げています)
frpsはサーバー側、frpcはクライアント側です
Frpで何ができるかを理解したところで、実践を始めましょう!
frpsは軽量なリバースプロキシクライアントで、内部ネットワークトンネリング機能を実現できます。frpsはfrpcクライアントと組み合わせて使用する必要があり、frpsはパブリックIPを持つマシンにデプロイし、frpcはトンネリングが必要な内部ネットワークサービスがあるマシンにデプロイします
接続ポート(必須)
認証とパスワード(オプション、推奨) (OIDC認証についてはgofrpドキュメントを参照してください。ここでは最も一般的なtokenのみ説明します)
TLS接続暗号化(オプション)
Webインターフェース(オプション) (WebSSLを設定しない場合、ウェブページはhttpで表示されます)
HTTP(s)リスニングポート(オプション) (通常は80と443ですが、nginxなどに使用されている場合は別のポートを指定する必要があります)
制限(オプション)
接続数制限(オプション)
その他の一般的な設定ファイルについてはgofrpを参照してください
(この記事を書かなければINIが非推奨になったことも知らなかったでしょう。多くの新しい設定は自分でもまだ理解できていないので、この記事を書くために急いで勉強しました)
以下の設定ファイルは例に過ぎません。実際の状況に応じて適切に修正してください
設定パラメータは1-1を参照
ここでは2つの方法があります。1つはxxx.batを設定して
C:\Users<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
ディレクトリに置く方法で、ユーザーがログイン後にxxx.batを自動起動できます。この方法はシンプルで直接的です
もう1つの方法は、nssm.exeを使用してfrpsをシステムサービスとして設定する方法で、ユーザーアカウントにログインせずにバックグラウンドで実行できます
私自身は2つ目の方法を使用していますが、念のため両方の方法を説明します
1つ目:frpsディレクトリにxxx.batファイルを新規作成し、以下の内容を入力します
右クリックでショートカットを作成し、そのショートカットを以下のディレクトリに移動すれば完了です
C:\Users<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
その後frps.toml設定ファイルを更新する場合は、cmdウィンドウを閉じてxxx.batを再起動すれば問題ありません
2つ目:nssm公式サイトを開いてnssm.exeをダウンロードします。国内からのアクセスが遅い場合は、本サイトが提供する123Panからダウンロードできます
解凍後、win64/32でnssm.exeを見つけてaディレクトリに置き、cmdを開いてaディレクトリにcdしてから実行します
コマンドを入力してEnterを押すとウィンドウがポップアップします。実際の状況に応じて下図のように入力し、Install serviceを押せば完了です

frps-nssmfrps.toml設定ファイルを更新する場合は、再度ここを見つけて右クリックで再起動すれば問題ありません
このステップはWindowsと同じですが、選択するバージョンがLinuxになります
直接wgetでも可能です。例えば
国内でGitHubからダウンロードできない場合は、ファイルをローカルにダウンロードしてから、対応するディレクトリに手動でアップロードしてください
上記のどの方法でダウンロードしても、最終的には特定のディレクトリに解凍する必要があります
例えば/usr/local/frpsに解凍したい場合は、次のように入力します
これでファイルの準備ができました。次は設定とデプロイを始めましょう!
最初にエディタをインストールします。すでにインストール済みの場合はこの項目をスキップしてください
CentOS:
Ubuntu/Debian:
エディタをインストールしたら、/usr/local/frpsディレクトリにcdしてTOML設定ファイルを編集します
ここでfrps.tomlファイルを設定します
(以下の設定ファイルは例に過ぎません。実際の状況に応じて適切に修正してください)
設定パラメータは1-1を参照
設定が完了したら:wqと入力して保存します
/usr/local/frpsにcdしてから./frps -c frps.tomlを使用できます
または直接使用することもできます
起動時に自動起動を設定したい場合は、frpsのシステムサービスを新規作成してください
次にfrps.service内に以下を入力します:
保存して終了した後、以下の内容を入力すればfrpsを起動時に自動起動するよう設定できます
これでfrpsは正常に動作しているはずです。クラウドサーバー/宝塔にファイアウォールなどがある場合は、ポートを開放することを忘れないでください (実はLinuxにはDockerでデプロイする方法もありますが、まだ理解できていません)
手元にはSynologyのNASしかないため、Synologyのシステムで説明します 他のシステムも実際にはほとんど同じで、すべてLinuxシステムをベースに開発されています。一部のNASがarmアーキテクチャであるため、frpsのバージョンを変更する必要があるだけです。ただし、システムファイルを勝手にいじると深刻な結果を招く可能性があるので、できるだけ触らないでください! ただし、Dockerが使える場合は基本的にすべてのシステムで同じです
インストール方法は2つあります 1つはサードパーティパッケージ(非常に簡単)、もう1つはDocker(比較的複雑) まず最初の方法から説明します
Synology公式パッケージにはfrpsが収録されていないため、サードパーティパッケージを追加する必要があります ここでパッケージセンター→右上の設定→パッケージソース→追加を開きます 矿神源を追加します。名前は何でも構いません
追加後、確定をクリックすると、左側にコミュニティが新しく追加されているのが見えます。それを開いて、Frpsサーバー側を見つけてインストールすれば完了です インストール完了後に開くと、設定ファイルの入力ページがあります。設定ファイルを入力して保存すれば自動的に実行されます。設定ファイルの例:
設定パラメータは1-1を参照
一般的には推奨しません。一部のNASはARMアーキテクチャを使用しており、Dockerを使用できないためです。NASがDockerを使用できることを確認してからインストールしてください
Container Managerを開きます。なければインストールしてください。Synology公式パッケージセンターにあります
左側のレジストリをクリックしてsnowdreamtech/frpsを検索し、ダブルクリックしてイメージをダウンロードします
(タグはlatestで構いません。特定のバージョンを指定したい場合は0.53.0、0.52.1などを入力してください)
インストール完了後、コンテナに移動して新しいコンテナを追加し、イメージはsnowdreamtech/frpsを選択、コンテナ名は何でも入力して次へをクリックします
ここで外に出て手動でfrps.toml設定ファイルを作成し、設定を入力します。設定ファイルの例:
設定パラメータは1-1を参照
設定ファイルを書き終えたら保存し、NAS共有フォルダのdockerディレクトリ内のfrpsフォルダにコピーします
例:/volume1/docker/frps
この時点でContainer Manager画面に戻ります
ストレージスペース設定でファイルを追加を選択し、先ほど作成したfrps.toml設定ファイルを選択します
例:/volume1/docker/frps/frps.toml
出てくると、右側にもう1つのパスを入力する必要があることに気づきます。これはDockerコンテナ内の設定ファイルのパスです
直接/etc/frp/frps.tomlと入力すれば完了です。あとは次へを続けてクリックするだけです
これで構築完了です。ルーターのファイアウォールやシステムのファイアウォールなどを無効にすることを忘れないでください
frpcは軽量なリバースプロキシクライアントで、内部ネットワークトンネリング機能を実現できます。frpcはfrpsサーバー側と組み合わせて使用する必要があり、frpcはトンネリングが必要な内部ネットワークサービスがあるマシンにデプロイし、frpsはパブリックIPを持つマシンにデプロイします。
に接続
認証とパスワード(OIDC認証についてはgofrpドキュメントを参照してください。ここでは最も一般的なtokenのみ説明します)
からサーバーへの接続でTLS暗号化を有効にする
TCPトンネルの作成
UDPトンネルの作成
HTTP/HTTPSトンネルの作成
転送の暗号化/圧縮(トンネル内に追加)
これらのトンネルタイプが最も一般的に使用されます。tcpmux、stcp、sudp、xtcpについてはまだ理解できていません ただし、tcpmuxは重要なので、時間があれば後で追記します
一般的な設定を理解したところで、正式にデプロイを始めましょう!
実際、ここはfrpsとほとんど同じで、プログラムと設定ファイルが異なるだけです デプロイ方法はまったく同じです
例:(リモートデスクトップのポートをマッピングして、外部ネットワークからアクセスできるようにしたい場合) 注意!以下は説明用の例に過ぎません。自分のニーズに応じて2-1を参照して作成してください
ここでは2つの方法があります。1つはxxx.batを設定して
C:\Users<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
ディレクトリに置く方法で、ユーザーがログイン後にxxx.batを自動起動できます。この方法はシンプルで直接的です
もう1つの方法は、nssm.exeを使用してfrpcをシステムサービスとして設定する方法で、ユーザーアカウントにログインせずにバックグラウンドで実行できます
私自身は2つ目の方法を使用していますが、念のため両方の方法を説明します
1つ目:frpcディレクトリにxxx.batファイルを新規作成し、以下の内容を入力します
右クリックでショートカットを作成し、そのショートカットを以下のディレクトリに移動すれば完了です
C:\Users<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
その後frpc.toml設定ファイルを更新する場合は、cmdウィンドウを閉じてxxx.batを再起動すれば問題ありません
2つ目:nssm公式サイトを開いてnssm.exeをダウンロードします。国内からのアクセスが遅い場合は、本サイトが提供する123Panからダウンロードできます
解凍後、win64/32でnssm.exeを見つけてaディレクトリに置き、cmdを開いてaディレクトリにcdしてから実行します
コマンドを入力してEnterを押すとウィンドウがポップアップします。実際の状況に応じて下図のように入力し、Install serviceを押せば完了です

frpc-nssmfrpc.toml設定ファイルを更新する場合は、再度ここを見つけて右クリックで再起動すれば問題ありません
このステップはWindowsと同じですが、選択するバージョンがLinuxになります
直接wgetでも可能です。例えば
国内でGitHubからダウンロードできない場合は、ファイルをローカルにダウンロードしてから、対応するディレクトリに手動でアップロードしてください
上記のどの方法でダウンロードしても、最終的には特定のディレクトリに解凍する必要があります
例えば/usr/local/frpcに解凍したい場合は、次のように入力します
これでファイルの準備ができました。次は設定とデプロイを始めましょう!
最初にエディタをインストールします。すでにインストール済みの場合はこの項目をスキップしてください
CentOS:
Ubuntu/Debian:
エディタをインストールしたら、/usr/local/frpcディレクトリにcdしてTOML設定ファイルを編集します
ここでfrpc.tomlファイルを設定します
例:(SSHのポートをマッピングして、外部ネットワークからアクセスできるようにしたい場合)
注意!以下は説明用の例に過ぎません。自分のニーズに応じて2-1を参照して作成してください
設定が完了したら:wqと入力して保存します
/usr/local/frpcにcdしてから./frpc -c frpc.tomlを使用できます
または直接使用することもできます
起動時に自動起動を設定したい場合は、frpcのシステムサービスを新規作成してください
次にfrpc.service内に以下を入力します:
保存して終了した後、以下の内容を入力すればfrpcを起動時に自動起動するよう設定できます
これでfrpcは正常に動作しているはずです (実はLinuxにはDockerでデプロイする方法もありますが、まだ理解できていません)
手元にはSynologyのNASしかないため、Synologyのシステムで説明します
他のシステムも実際にはほとんど同じで、すべてLinuxシステムをベースに開発されています。一部のNASがarmアーキテクチャであるため、frpcのバージョンを変更する必要があるだけです。ただし、システムファイルを勝手にいじると深刻な結果を招く可能性があるので、できるだけ触らないでください! ただし、Dockerが使える場合は基本的にすべてのシステムで同じです
インストール方法は2つあります 1つはサードパーティパッケージ(非常に簡単)、もう1つはDocker(比較的複雑) まず最初の方法から説明します
Synology公式パッケージにはfrpcが収録されていないため、サードパーティパッケージを追加する必要があります ここでパッケージセンター→右上の設定→パッケージソース→追加を開きます 矿神源を追加します。名前は何でも構いません
追加後、確定をクリックすると、左側にコミュニティが新しく追加されているのが見えます。それを開いて、Frpcクライアントを見つけてインストールすれば完了です
インストール完了後に開くと、設定ファイルの入力ページがあります。設定ファイルを入力して保存すれば自動的に実行されます。
設定ファイルの例:(DSMのポートをマッピングして、外部ネットワークからアクセスできるようにしたい場合)
注意!以下は説明用の例に過ぎません。自分のニーズに応じて2-1を参照して作成してください
一般的には推奨しません。一部のNASはARMアーキテクチャを使用しており、Dockerを使用できないためです。NASがDockerを使用できることを確認してからインストールしてください
Container Managerを開きます。なければインストールしてください。Synology公式パッケージセンターにあります
左側のレジストリをクリックしてsnowdreamtech/frpcを検索し、ダブルクリックしてイメージをダウンロードします
(タグはlatestで構いません。特定のバージョンを指定したい場合は0.53.0、0.52.1などを入力してください)
インストール完了後、コンテナに移動して新しいコンテナを追加し、イメージはsnowdreamtech/frpcを選択、コンテナ名は何でも入力して次へをクリックします
ここで外に出て手動でfrpc.toml設定ファイルを作成し、設定を入力します。
設定ファイルの例:(DSMのポートをマッピングして、外部ネットワークからアクセスできるようにしたい場合)
注意!以下は説明用の例に過ぎません。自分のニーズに応じて2-1を参照して作成してください
設定ファイルを書き終えたら保存し、NAS共有フォルダのdockerディレクトリ内のfrpsフォルダにコピーします
例:/volume1/docker/frpc
この時点でContainer Manager画面に戻ります
ストレージスペース設定でファイルを追加を選択し、先ほど作成したfrpc.toml設定ファイルを選択します
例:/volume1/docker/frpc/frpc.toml
出てくると、右側にもう1つのパスを入力する必要があることに気づきます。これはDockerコンテナ内の設定ファイルのパスです
直接/etc/frp/frpc.tomlと入力すれば完了です
あとは次へを続けてクリックするだけです
これでデプロイ完了です。アクセスを試してみてください
(frpcを書くのは本当に楽でした。ほとんどfrpsからコピーしたので)
(仕方ないです、この2つのデプロイ方法は本当にまったく同じで、プログラムと設定ファイルを変えるだけなので)
公共frpとは、文字通り一般に公開されているfrpのことで、無料で使えるものも有料のものもあります
では、なぜ公共frpを使うのでしょうか?
そうです、上記で教えた内容がどれだけ詳しく分かりやすくても、frpサーバーを維持するには時間もお金も労力もかかります
例を挙げましょう。今、5人の友達とmc(マインクラフト)をプレイしたいとします。国内サーバーを使いたくなく、50個のmodを追加したい場合。プレイ体験のために、bing AIとBardによると、各プレイヤーには1.5-2Mbpsの帯域幅を用意すべきとのことです。自建frpのコストで計算すると、少なくとも8-10Mbpsのサーバーを準備しないと快適にプレイできません。では、大手クラウドベンダーでは、アリババクラウドとファーウェイクラウドは月額255-350元、テンセントクラウドは月額130-150元かかります (これは軽量アプリケーションで、月間トラフィック1200-2000Gに制限されています)
海外のマシンなら帯域幅が安いと言う人もいますが

小規模業者のマシンなら安いと言う人もいます
ですから、サーバーを購入すること自体がすでにかなり面倒なことなのです。ゲームをしたいだけの人もいるのに、最終的にはたくさんのサーバーを買ってしまう(私のように)
時には本当に落ち着いて、自分が本当に何を必要としているのか考えるべきです
これが公共frpを使用する理由です
具体的にどの公共frpがあるかはここでは推奨しません。広告と言われるのを避けるためです
公共frpは通常、独自のDocsドキュメントがあるので、ここでは詳しく説明しません
とにかくほとんど同じです。自建を理解すれば、基本的に大体分かるはずです