背景#
現在、自作の内網貫通ツールを使用する必要があり、frp を選択しました。frp には多くのバージョンがあり、以前使用していたのは frp_0.51.2_windows_386 バージョンで、現在は frp_0.59.0_windows_amd64 にアップグレードしました。この frp の主な機能は、ポイントツーポイントの内網貫通(p2p)、内網サービスの安全な公開、そしてサーバーをプロキシとして使用する 3 つの方法です。ポイントツーポイントまたは安全な公開サービスの方法を使用する準備をしています。以前は常にサーバープロキシの方法で内網貫通を行っていましたが、これにより自分のマシンが公に露出してしまい、非常に危険です。ある時、サーバーログを確認したところ、私のサーバーが公開しているポートに対する多くのリクエストを発見し、狙われている可能性があることに気付き、他のポートに変更しました。現在はセキュリティ意識を高め、ポイントツーポイントまたは安全な公開方法に切り替えています。攻撃者のスキャンや侵入を防ぐために、サービスが提供するデフォルトポートを使用せず、自分で変更することをお勧めします。
現在の使用目的は:Windows コンピュータへのリモート接続、Web サービスを公に公開することです。
一、準備作業#
公式ダウンロードリンク:https://github.com/fatedier/frp/releases/tag/v0.59.0
ここで 2 つのダウンロードリンクを提供します:
123 ネットワークドライブ:https://www.123pan.com/s/tB5A-psnYd.html? 提取コード: TA7T
ランゾウネットワークドライブ:https://nxg.lanzoul.com/b03ivhzl1i パスワード:7ijd
frp_0.59.0_linux_amd64.tar.gz ====》Linux サーバーにアップロードするためのもの
frp_0.59.0_windows_amd64.zip ====》 Windows ローカルで起動するためのもの
注意:Linux 版をダウンロードすると、Windows システムでウイルス警告が表示される場合がありますので、設定でダウンロードディレクトリを許可(除外)してください。ダウンロードしてサーバーにアップロードできます。
公式サイトからダウンロードしても同様の警告が表示されるので、自分で確認できます。
二、サーバーの設定#
2.1 frp のアップロードと設定#
まず、frp_0.59.0_linux_amd64.tar.gz 圧縮ファイルをカスタムディレクトリにアップロードします。ここでは /root/frp ディレクトリを例にします:
tar -zxvf frp_0.59.0_linux_amd64.tar.gz
位置:/root/frp/frp_0.59.0_linux_amd64
frps.toml の設定ポートを変更:
bindPort = 7002
これでサービスの設定が完了しました。
2.2 systemd
のインストール#
yum install systemd
2.3 frps.service
ファイルの作成と編集(vim エディタを使用)#
vim /etc/systemd/system/frps-59.service
2.4 内容の記入#
[Unit]
# サービス名、カスタマイズ可能
Description = frp_0.59.0_linux_amd64 server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# frpsを起動するコマンド、frpsのインストールパスに変更する必要があります
ExecStart =/root/frp/frp_0.59.0_linux_amd64/frps -c /root/frp/frp_0.59.0_linux_amd64/frps.toml
[Install]
WantedBy = multi-user.target
注意:/root/frp/frp_0.59.0_linux_amd64/frps は、サーバーにアップロードして解凍した後の frps ファイルに対応しています。
上記の 3 ステップは参考にできます:https://gofrp.org/docs/setup/systemd/
その後、リフレッシュします:
systemctl daemon-reload
# 上記のコマンドが機能しない場合は、以下のコマンドを試してください
systemctl daemon-reexec
2.5 起動と停止のコマンド#
root 管理者権限がない場合は、sudo を使用する必要があります。管理者権限がある場合は、sudo コマンドを使用せずに直接 systemctl start frps-59 を実行できます。
# frpを起動
sudo systemctl start frps-59
# frpを停止
sudo systemctl stop frps-59
# frpを再起動
sudo systemctl restart frps-59
# frpの状態を確認
sudo systemctl status frps-59
自動起動を設定:
sudo systemctl enable frps-59
三、クライアントの設定#
セキュアな公開サービス#
1、被アクセス者のマシン(ターゲットマシン)
frp_0.59.0_windows_amd64.zip ファイルを解凍:
位置:D:\programTool\frp\frp_0.59.0_windows_amd64
frpc.toml の設定を変更:
serverAddr = "サーバーのパブリックIPアドレス"
serverPort = 7002
[[proxies]]
name = "rdp_stcp_test"
type = "stcp"
# ここで設定されたsecretKeyと一致するユーザーのみがこのサービスにアクセスできます
secretKey = "7G5Y2QW9X312PYWQWE67"
localIP = "127.0.0.1"
localPort = 3389
これは被アクセス者のマシン、つまりターゲットマシンです。
cmd 起動コマンド:
.\frpc.exe -c .\frpc.toml
2、アクセス者のマシン
frp_0.59.0_windows_amd64.zip ファイルを解凍:
位置:D:\tool\technology\frp\frp_0.59.0_windows_amd64
frpc.toml の設定を変更:
serverAddr = "101.133.238.75"
serverPort = 7002
[[visitors]]
name = "rdp_stcp_visitor"
type = "stcp"
# アクセスするstcpプロキシの名前
serverName = "rdp_stcp_test"
# ここで設定されたsecretKeyと一致するユーザーのみがこのサービスにアクセスできます
secretKey = "7G5Y2QW9X312PYWQWE67"
bindAddr = "127.0.0.1"
bindPort = 7003
これはアクセス者のマシン、つまりこのマシンから前の設定済みのマシンにアクセスします。
cmd 起動コマンド:
.\frpc.exe -c .\frpc.toml
アクセス者のマシンが被アクセス者に接続
Windows に付属のリモート接続ツールを使用して:127.0.0.1:7003 にコンピュータのユーザー名とパスワードを入力すると、ターゲットマシンにアクセスできます。
ポイントツーポイントアクセスサービス#
1、被アクセス者のマシン(ターゲットマシン)
位置:D:\programTool\frp\frp_0.59.0_windows_amd64
frpc.toml の設定を変更:
serverAddr = "サーバーのパブリックIPアドレス"
serverPort = 7002
[[proxies]]
name = "p2p_rdp_test"
type = "xtcp"
# 共有秘密鍵(secretKey)がサーバー側と一致するユーザーのみがこのサービスにアクセスできます
secretKey = "AAAA5Y2QW9X312PYWQWE67"
localIP = "127.0.0.1"
localPort = 3389
2、アクセス者のマシン:
位置:D:\tool\technology\frp\frp_0.59.0_windows_amd64
frpc.toml の設定を変更:
serverAddr = "101.133.238.75"
serverPort = 7002
[[visitors]]
name = "p2p_rdp_visitor"
type = "xtcp"
# アクセスするP2Pプロキシの名前
serverName = "p2p_rdp_test"
secretKey = "AAAA5Y2QW9X312PYWQWE67"
# SSHサービスにアクセスするためのローカルポートをバインド
bindAddr = "127.0.0.1"
bindPort = 7004
# トンネルを自動的に開いたままにする必要がある場合は、trueに設定
keepTunnelOpen = true
これはアクセス者のマシン、つまりこのマシンから前の設定済みのマシンにアクセスします。
cmd 起動コマンド:
.\frpc.exe -c .\frpc.toml
アクセス者のマシンが被アクセス者に接続
Windows に付属のリモート接続ツールを使用して:127.0.0.1:7004 にコンピュータのユーザー名とパスワードを入力すると、ターゲットマシンにアクセスできます。
Windows 自動起動設定#
D:\programTool\frp\frp_0.59.0_windows_amd64 と D:\tool\technology\frp\frp_0.59.0_windows_amd64 ディレクトリに作成します。
方法一:#
frpc-start.bat
@echo off
:home
frpc -c frpc.toml
goto home
この frp-start.bat のショートカットを Windows の自動起動ディレクトリに入れます。
このスクリプトはコンソールウィンドウを表示できるので、あまり優雅ではありません。
方法二:#
frpc-start.bat
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd D:\programTool\frp\frp_0.59.0_windows_amd64
frpc -c frpc.ini
exit
frp クライアントは比較的安定しているので、方法二で十分です。不安定な場合は方法一を選択できます。
方法三#
frpc-start.bat
常に接続を試みることができます
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
:home
frpc -c frpc.toml
goto home
この frpc-start.bat スクリプトは、D:\programTool\frp\frp_0.59.0_windows_amd64 ディレクトリに置かれます。