frp內網穿透、反向代理
阿新 • • 發佈:2022-03-04
frp下載地址
https://github.com/fatedier/frp/releases
官網文件
https://github.com/fatedier/frp/blob/dev/README.md
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、開啟服務端繫結埠白名單
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
執行命令啟動服務及加入開機自啟 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、更多使用方式,查詢官方文件[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