1. 程式人生 > 其它 >frp內網穿透、反向代理

frp內網穿透、反向代理

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
[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、更多使用方式,查詢官方文件