Frp は高性能なリバースプロキシアプリケーションであり、内部ネットワークのサービスを簡単に管理し、これらのサービスをパブリックネットワークに公開することができます。Frp の主な目的は、内部ネットワークのトンネリングを実現し、外部ネットワークのユーザーが内部ネットワークのサービスにアクセスできるようにすることです。以下は、Frp のアプリケーションシナリオのいくつかです:
- トンネリング:Frp を使用すると、Web サーバー、FTP サーバー、SSH サーバーなど、内部ネットワークのサービスをパブリックネットワークに公開できます。
- 内部リモートデスクトップ:Frp を使用すると、外部ネットワークから内部ネットワークのコンピュータにリモートデスクトップ接続でき、リモート管理やメンテナンスが容易になります。
- クラウドコンピューティングプラットフォームの構築:Frp を使用すると、企業はプライベートクラウド環境を構築し、仮想マシン、ストレージ、計算リソースなどのサービスを提供できます。
- ネットワークモニタリング:Frp を使用してネットワークモニタリングシステムを構築し、ポートフォワーディングを使用してモニタリングサービスをパブリックネットワークに公開し、管理者がリモートで表示できるようにします。
要するに、Frp は非常に便利なツールであり、企業や個人が内部ネットワークのサービスを簡単に管理およびアクセスできるようにサポートします。
公式ウェブサイト:https://github.com/fatedier/frp/releases/tag/v0.48.0
公式ドキュメント:https://gofrp.org/docs/setup/systemd/
背景#
todesk の個人版(無料)を使用してリモートデスクトップ(Win10、Win11)に接続する場合、ネットワーク環境が悪い場合には使用が非常に不便です。そのため、frp というツールを使用することを考えました。
前提条件#
サーバーにはセキュリティグループルールを開放する必要があります。
例えば、私の Alibaba Cloud サーバーを使用します。
具体的な設定方法は次のとおりです:
frp の実装アイデア:#
まず、サーバーとクライアントが何であるかを明確にしましょう。
FRP のサーバー(Server)とクライアント(Client)は、FRP ツールの 2 つの異なる役割を指します。
サーバーは、FRP のリモートサーバーであり、パブリックネットワーク上で実行され、通常は内部ネットワークトンネリング機能を提供するために使用されます。外部ネットワークから内部ネットワークのデバイスにアクセスする必要がある場合は、パブリックネットワークに FRP サーバーをデプロイし、適切なマッピングルールを設定して、パブリックネットワークからのリクエストを内部デバイスに転送します。
クライアントは、FRP ツールのローカルコンポーネントであり、アクセスされる内部ネットワークデバイス上で実行され、リモートサーバーと接続します。クライアントは自分自身の ID 情報をサーバーに登録し、定期的にハートビートパケットをサーバーに送信して接続を維持します。クライアントがサーバーに正常に接続すると、外部ネットワークはクライアントが存在する内部ネットワークデバイスにサーバーを介してアクセスできるようになります。
環境のインストール#
Linux システムで systemd を使用して frps とその設定の起動時に実行する方法
ここでは、Linux サーバー(CentOS)を使用します。
systemd
のインストール#
yum install systemd
frps.service
ファイルの作成と編集(vim エディタを使用)#
vim /etc/systemd/system/frps.service
コンテンツの記入#
[Unit]
# サービス名、カスタマイズ可能
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# frpsを起動するコマンド、frpsのインストールパスを変更する必要があります
# 例えば、私の解凍されたfrpパッケージはこのパスにあります /root/frp/frps
# ExecStart = /root/frp/frps/frps -c /root/frp/frps/frps.ini
ExecStart = /path/to/frps -c /path/to/frps.ini
[Install]
WantedBy = multi-user.target
以下の図を参照してください:
上記の 3 つのステップは次を参照してください:https://gofrp.org/docs/setup/systemd/
ダウンロードと解凍#
方法 1:
すでに作成された /root/frp ディレクトリに移動し、次のコマンドを実行して frp パッケージをダウンロードします:
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_arm64.tar.gz
方法 2:
ダウンロードリンク:https://github.com/fatedier/frp/releases
Linux 版(CentOS)をダウンロードします。次の図のバージョンをダウンロードします:
frp の Linux パッケージをカスタムディレクトリにアップロードします。
例:
/root/frp/ ディレクトリ(フォルダ)に配置し、次にこのファイルを解凍します frp_0.48.0_linux_amd64.tar.gz
tar -zxvf frp_0.48.0_linux_amd64.tar.gz
次に、名前を変更します:
mv 元のファイル名変更後のファイル名
mv frp_0.48.0_linux_amd64 frps
または、解凍してから直接名前を変更します。
サーバー(サーバー)の設定#
frp パッケージを解凍した後のディレクトリでファイルを設定します:
例:frp を解凍した場所は /root/frp/frps/ です
frps.ini ファイルを設定します
vim frps.ini
以下の内容を入力します:
[common]
# サーバーポート
bind_port = 7000
binf_addr = 0.0.0.0
bind_udp_port = 7000
authentication_method = token
# 認証トークンの値には、大文字小文字のアルファベット、数字などが含まれます
token = カスタムトークン
# ダッシュボード
dashboard_user = admin
# ダッシュボードのパスワード
dashboard_pwd = 123456
dashboard_port = 7500
設定を保存して終了します
systemd
コマンドを使用して frps を管理します。
# frpを起動する
systemctl start frps
# frpを停止する
systemctl stop frps
# frpを再起動する
systemctl restart frps
# frpのステータスを確認する
systemctl status frps
frps を起動時に自動的に実行するように設定します:
systemctl enable frps
以下は、ダッシュボードのスクリーンショットです:
クライアント frp の設定#
ダウンロードリンク:https://github.com/fatedier/frp/releases
次の図のように、カスタムフォルダに解凍します。
クライアントの設定(ローカルの Win10)#
frp パッケージを解凍した後、frpc.ini 設定ファイルを見つけてテキストエディタで開きます。
次の図のように:
以下のように設定します:
# グローバル設定
[common]
# サーバーのパブリックIPアドレス
server_addr = あなたのサーバーのパブリックIPアドレス、適宜変更してください
# サーバーポート
server_port = 7000
authentication_method = token
token = カスタムトークン
# リバースプロキシの名前、任意の名前を設定できます
[RDP]
# RDPはTCPプロトコルです
type = tcp
# ローカルIP
local_ip = 127.0.0.1
# リモートデスクトップのデフォルトポート
local_port = 3389
# 外部ネットワークへのポート
remote_port = 7001
注意:サーバーの設定のトークンとクライアントの設定のトークンは同じである必要があります。
参考:https://cloud.tencent.com/developer/article/1710141
ディレクトリで cmd を入力し、frpc.exe を実行します。
以下のスクリーンショットを参照してください:
これで設定は完了です。
次に、リモートデスクトップに接続します。
リモートデスクトップへの接続#
次のスクリーンショットのように、コンピュータにはサーバーの IP アドレスにポートを追加します。
例:139.224.12.12:7001(外部ネットワークへのポート)
私のコンピュータは Microsoft のメールアドレスを使用しているため、ユーザー名は[email protected]であり、パスワードは Microsoft のメールアドレスのパスワードに対応します。
また、ローカルアカウントでログインしている場合は、ユーザー名はローカルのユーザー名であり、パスワードは起動時のパスワードです。
IP アドレスを入力するのが面倒な場合は、IP アドレスをドメインにバインドするか、ポートを入力せずにリバースプロキシを使用することもできます。
結論#
要するに、frp はリモートデスクトップだけでなく、内部ネットワークトンネリング、侵入テストなど、さまざまな用途に使用できます。
添付ファイル#
参考 1:https://cloud.tencent.com/developer/article/1710141
参考 2:https://www.cnblogs.com/zhanggaoxing/p/9221705.html
Alibaba Cloud 公式サイト:https://account.aliyun.com/login/login.htm