frp內網穿透、反向代理詳細配置


frp下載地址
官網文檔
 

1、軟件簡介

提供內網端口或者服務映射到公網服務器上,僅需一台公網服務器即可實現 互聯網訪問本地服務
軟件基本涵蓋了所有架構和平台

2、目錄說明

以linux為例,文件目錄和配置參數在架構下相同
frpc 客戶端程序,frpc.ini 客戶端默認配置文件,frpc_full.ini客戶端配置參考文檔。
frps 服務端程序,frps.ini 服務端默認配置文件,frpc_full.ini客戶端配置參考文檔。
systemd文件夾里存放客戶端和服務端service服務,可以將其加入系統服務,方便管理

3、基礎配置

服務器配置
[common]
bind_addr=0.0.0.0 #默認監聽所有連接,可省略
bind_port = 7000 #監聽端口
 
客戶端基本配置
[common]
server_addr = x.x.x.x #x.x.x.x為服務器ip
server_port = 7000 #綁定服務器監聽的端口
[test-rdp] #新建一個反向代理連接,名字是ssh,多個連接時不能同名
type = tcp #tcp連接
local_ip = 127.0.0.1 #客戶端地址
local_port = 22 #客戶端端口
remote_port = 22 #服務器端口

4、運行

運行服務端
當前路徑下執行:./frps
默認配置文件frps.ini,即./frps -c ./frps.ini #frps.ini可省略
 
運行客戶端
當前路徑下執行:./frpc
默認執行frps.ini文件,即./frpc -c ./frpc.ini #frpc.ini可省略
 
通過以上簡單配置,客戶端服務端分別運行后,就可以通過ssh xxxx:22 連接客戶端
 

5、進階操作

5.1、開啟客戶端、服務端控制台

開啟服務端控制台
frps.ini配置文件[common]鍵添加內容
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
開啟客戶端控制台
frps.ini配置文件[common]鍵添加內容
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
 

5.2、開啟token認證

frps.ini下[common]中添加
authentication_method = token #開啟token,默認toekn認證,可省略
token = xiaoxin
frpc.ini下[common]中添加
token = xiaoxin

5.3、開啟日志

服務端或客戶端配置文件[common]鍵添加內容
log_file = ./frps.log #指定日志存放路徑
log_level = info #設置日志級別,分別有trace, debug, info, warn, error
log_max_days = 3 #日志存放時間

5.4、開啟服務端綁定端口白名單

frps.ini下[common]中添加
allow_ports = 2000-3000,3001,3003,4000-50000

5.5、設置客戶端代理名稱

frpc.ini下[common]中添加
user = abixiaoxin

5.6、開啟客戶端訪問失敗重連

frpc.ini下[common]中添加
login_fail_exit = false #默認為true,表示不開啟失敗重連

5.5、后台運行

執行 nohup ./frps -c frps.ini 2>&1 &
查找frp相關進程,獲取frp進程號
ps aux|grep frp
結束frp相關進程號
kill -9 xxx

5.6、導入配置文件

frpc或frps的配置文件可由多個文件組成,通過includes參數設置要包含的配置文件
如frpc.ini下[common]中添加
includes = ./frpc-ssh.ini
includes = ./frpc-dns.ini

5.7、添加系統服務(linux系統為例)

編輯systemd目錄下的frpc.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
#User=nobody	#此處待確認,不注釋服務無法啟動
Restart=on-failure
RestartSec=5s
ExecStart=/home/kylin/frp/frpc -c /home/kylin/frp/frpc.ini #設置腳本執行路徑
ExecReload=/home/kylin/frp/frpc reload -c /home/kylin/frp/frpc.ini #設置腳本重啟執行路徑
#LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
執行命令啟動服務及加入開機自啟
cp ./frpc.service /lib/systemd/system/ #將文件放到指定位置
systemctl daemon-reload #重新加載服務
systemctl enable frpc.service #將服務設置開啟啟動
systemctl start frpc.service #啟動服務

5.8、客戶端設置tls連接

frpc.ini下[common]中添加
tls_enable = true
此參數可解決下面連接失敗的問題

5.9、限制服務端代理端口范圍

frps.ini下[common]中添加
allow_ports = 2000-3000,3001,3003,4000-50000

5.10、命令獲取frpc客戶端所有代理狀態

frpc status -c ./frpc.ini

5.11、通過客戶自有域名訪問本地web服務

frps.ini下[common]中添加
[common]
bind_port = 7000
vhost_http_port = 8080
frpc.ini下[common]中添加
[common]
server_addr = x.x.x.x
server_port = 7000
 
[web]
type = http
local_port = 80
custom_domains = www.example.com #添加域名A記錄到服務器ip或者cname記錄
 
[web2]
type = http
local_port = 81
custom_domains = www.example2.com #添加域名A記錄到服務器ip或者cname記錄
 
[web3]
type = http
local_port = 82
custom_domains = www.example3.com #添加域名A記錄到服務器ip或者cname記錄
 
測試訪問:
http://www.example.com:8080
http://www.example2.com:8080
http://www.example3.com:8080
達到效果:三個不同的域名,指向同一個ip,訪問的web服務不一致

5.12、搭建簡單的hfs服務

frpc.ini下[common]中添加
[common]
server_addr = x.x.x.x
server_port = 7000
 
[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
plugin_local_path = /tmp/files
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
 
測試訪問: http://x.x.x.x:6000/static/,輸入賬號密碼,訪問客戶端/tmp/files目錄下文件

5.13、熱加載frpc配置

1、如果開啟了客戶端控制台,可以通過訪問web頁面,修改配置后,重新加載配置
2、還可以通過在本地執行命令
./frpc reload -c ./frpc.ini #只會更新代理,[common]鍵中的配置不會修改
3、啟動前檢查配置是否正確
./frpc verify -c ./frpc.ini
 
6、更多使用方式,查詢官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM