frp內網穿透詳細教程(簡單易懂)
文章目錄
- frp內網穿透詳細教程(簡單易懂)
- frp是什么?
- 工作原理
- 準備工作
- frp工具的使用
- 第一步:下載安裝包
- 第二步:公網部署frps
- 第三步:內網部署frpc
- 第四步:啟動frps和frpc
- 第五步:通過ssh訪問內網服務器
- 使用systemd
- 安裝systemd(一般都有,可忽略)
- 創建服務端frps.service文件
- 創建客戶端frpc.service文件
- 使用systemd命令管理frp服務(frps/frpc)
- 設置frps/frpc開機自啟動
frp是什么?
frp 是一款高性能的反向代理應用,專注于內網穿透。它支持多種協議,包括 TCP、UDP、HTTP、HTTPS 等,并且具備 P2P 通信功能。使用 frp,可以安全、便捷地將內網服務暴露到公網,通過擁有公網 IP 的節點進行中轉。
工作原理
frp 主要由兩個組件組成:客戶端(frpc) 和 服務端(frps)。通常情況下,服務端部署在具有公網 IP 地址的機器上,而客戶端部署在需要穿透的內網服務所在的機器上。由于內網服務缺乏公網 IP 地址,因此無法直接被非局域網內的用戶訪問。用戶通過訪問服務端的 frps,frp 負責根據請求的端口或其他信息將請求路由到相應的內網機器,從而實現通信。
準備工作
獲取公網IP:可以購買阿里云,騰訊云等服務器,便宜的即可。只需要獲取到公網ip。
內網IP:有一臺自己的服務器。
frp工具的使用
第一步:下載安裝包
這里我們用的是Ubuntu 20.04,首先在服務端(公網服務器)和客戶端(內網服務器)下載好對應的安裝包。
wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz# 解壓文件
tar -zxvf frp_0.53.2_linux_amd64.tar.gz
第二步:公網部署frps
在具有公網 IP 的機器上部署 frps,編輯 frps.toml 文件。以下是簡化的配置,其中設置了 frp 服務器用于接收客戶端連接的端口:
bindPort = 7000
第三步:內網部署frpc
在需要被訪問的內網機器上部署 frpc,編輯 frpc.toml 文件,假設 frps 所在服務器的公網 IP 地址為 x.x.x.x。以下是示例配置:
serverAddr = "x.x.x.x"
serverPort = 7000[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"(可自己修改)
localPort = 22
remotePort = 6000(自己修改)
localIP 和 localPort 配置為需要從公網訪問的內網服務的地址和端口。
remotePort 表示在 frp 服務端監聽的端口,訪問此端口的流量將被轉發到本地服務的相應端口。
第四步:啟動frps和frpc
先通過 ./frps -c ./frps.toml
啟動服務端,再通過 ./frpc -c ./frpc.toml
啟動客戶端。
連接成功后會有success字樣。
注:啟動成功后,記得用nohup命令掛起,讓其在后臺運行
第五步:通過ssh訪問內網服務器
使用以下命令通過 SSH 訪問內網機器,假設用戶名為 test(test修改為自己服務器的用戶名):
ssh -o Port=6000 test@x.x.x.x
frp 將請求發送到 x.x.x.x:6000
的流量轉發到內網機器的 22 端口。
那我不小心重啟或者關機了,怎么辦?
接下來我們使用 systemd 來管理 frp 服務,控制 frps 服務端/frpc客戶端的啟動、停止、配置后臺運行以及開機自啟動。
使用systemd
安裝systemd(一般都有,可忽略)
如果您的 Linux 服務器上尚未安裝 systemd,可以使用包管理器如 yum
(適用于 CentOS/RHEL)或 apt
(適用于 Debian/Ubuntu)來安裝它:
# 使用 yum 安裝 systemd(CentOS/RHEL)
yum install systemd# 使用 apt 安裝 systemd(Debian/Ubuntu)
apt install systemd
創建服務端frps.service文件
使用文本編輯器 (如 vim) 在 /etc/systemd/system
目錄下創建一個 frps.service
文件,用于配置 frps 服務。
sudo vim /etc/systemd/system/frps.service
寫入內容
[Unit]
# 服務名稱,可自定義
Description = frp server
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 啟動frps的命令,需修改為您的frps的安裝路徑
ExecStart = /path/to/frps -c /path/to/frps.toml[Install]
WantedBy = multi-user.target
創建客戶端frpc.service文件
使用文本編輯器 (如 vim) 在 /etc/systemd/system
目錄下創建一個 frpc.service
文件,用于配置 frpc 服務。
寫入內容
[Unit]
# 服務名稱,可自定義
Description = frp client
After = network.target syslog.target
Wants = network.target[Service]
Type = simple
# 啟動frpc的命令,需修改為您的frpc的安裝路徑
ExecStart = /path/to/frps -c /path/to/frpc.toml[Install]
WantedBy = multi-user.target
使用systemd命令管理frp服務(frps/frpc)
如果在服務端我們就啟動frps,在客戶端我們就啟動frpc。
# 啟動frp
sudo systemctl start frps/frpc
# 停止frp
sudo systemctl stop frps/frpc
# 重啟frp
sudo systemctl restart frps/frpc
# 查看frp狀態
sudo systemctl status frps/frpc
設置frps/frpc開機自啟動
sudo systemctl enable frps/frpc
通過遵循上述步驟,您可以輕松地使用 systemd 來管理 frp 服務,實現啟動、停止、自動運行和開機自啟動。確保替換路徑和配置文件名稱以匹配您的實際安裝。