使用場景:
內網發布的Web項目,怎樣在公網環境中訪問到
一 前提:
需要有一個公網IP,為安全起見,公網IP以23.23.23.23為例。
公網IP機器作為服務器
內網機器作為客戶端
二 前提:服務端與客戶端需要安裝frp
服務端與客戶端需要安裝frp
下載地址:frp
frp支持linux平臺和windows平臺。
一般linux平臺下載的版本為:frp_版本號linux_amd64.tar.gz,windows平臺下載的版本為:frp版本號_windows_amd64.zip。
linux版本文件的解壓命令為tar -zxvf 文件名 ;windows版本文件直接右鍵解壓即可。
文件解壓后,一般都含有frps(frp服務端運行文件)、frpc(frp客戶端運行文件)、frps.ini(frp服務端配置文件)、frpc.ini(frp客戶端配置文件),以及frp_full.ini(frp全部配置文件解釋說明和參考。
2.1 服務端Frp安裝配置:
服務端因為是Windows系統,直接下載,解壓
修改 frps.ini文件為:
[common]
#穿透的端口
bind_port = 7000
#http端口設置
vhost_http_port = 8047
#客戶端連接令牌
token = 20190704token123token
#https端口設置
#vhost_https_port=8047
#顯示的日志級別
log_level = info
#https端口設置
#vhost_https_port=8047
2.2 客戶端Frp安裝配置:
fcj@ubuntu:~/Desktop/Frp$ tar -zxvf frp_0.27.0_linux_amd64.tar.gz
frp_0.27.0_linux_amd64/
frp_0.27.0_linux_amd64/frps_full.ini
frp_0.27.0_linux_amd64/frps.ini
frp_0.27.0_linux_amd64/frpc
frp_0.27.0_linux_amd64/frpc_full.ini
frp_0.27.0_linux_amd64/frps
frp_0.27.0_linux_amd64/LICENSE
frp_0.27.0_linux_amd64/frpc.ini
frp_0.27.0_linux_amd64/systemd/
frp_0.27.0_linux_amd64/systemd/frpc@.service
frp_0.27.0_linux_amd64/systemd/frpc.service
frp_0.27.0_linux_amd64/systemd/frps.service
frp_0.27.0_linux_amd64/systemd/frps@.service
fcj@ubuntu:~/Desktop/Frp$ tar -zxvf frp_0.27.0_linux_amd64.tar.gz
frp_0.27.0_linux_amd64/
frp_0.27.0_linux_amd64/frps_full.ini
frp_0.27.0_linux_amd64/frps.ini
frp_0.27.0_linux_amd64/frpc
frp_0.27.0_linux_amd64/frpc_full.ini
frp_0.27.0_linux_amd64/frps
frp_0.27.0_linux_amd64/LICENSE
frp_0.27.0_linux_amd64/frpc.ini
frp_0.27.0_linux_amd64/systemd/
frp_0.27.0_linux_amd64/systemd/frpc@.service
frp_0.27.0_linux_amd64/systemd/frpc.service
frp_0.27.0_linux_amd64/systemd/frps.service
frp_0.27.0_linux_amd64/systemd/frps@.service
客戶端修改 frpc.ini文件為
[common]
server_addr = 23.23.23.23
server_port = 7000
token = 20190704token123token
admin_addr = 10.17.128.45
admin_port = 7400
admin_user = admin
admin_pwd = admin
[web01]
type = http
local_ip =10.0.2.109
local_port =8010
custom_domains =23.23.23.23
#密碼保護web
#http_user = fcj
#http_pwd = fcj
#https
#[test_htts2http]
#type = https
#custom_domains =custom_domains = 23.23.23.23
#plugin = https2http
#plugin_local_addr = 127.0.0.1:80
# HTTPS 證書相關的配置
#plugin_crt_path = ./server.crt
#plugin_key_path = ./server.key
#plugin_host_header_rewrite = 127.0.0.1
#https end
三 運行:
- 服務端
C:\frp_0.27.0_windows_amd64>frps -c frps.ini &
2019/07/01 03:25:55 [I] [service.go:139] frps tcp listen on 0.0.0.0:7000
2019/07/01 03:25:55 [I] [service.go:181] http service listen on 0.0.0.0:8047
2019/07/01 03:25:55 [I] [root.go:204] Start frps success
- 客戶端
fcj@ubuntu:~/Desktop/Frp/frp_0.27.0_linux_amd64$ sudo ./frpc -c frpc.ini
2019/07/01 03:26:05 [I] [service.go:221] login to server success, get run id [b35d408225204ec3], server udp port [0]
2019/07/01 03:26:05 [I] [proxy_manager.go:137] [b35d408225204ec3] proxy added: [web01]
2019/07/01 03:26:05 [I] [service.go:109] admin server listen on 10.17.128.45:7400
2019/07/01 03:26:05 [I] [control.go:144] [web01] start proxy success
啟動成功后就可以通過23.23.23.23:8047 訪問到內網發布的項目
五 frp其他功能:
1訪問加密:
由于所有客戶端共用一個 frps 的 http 服務端口,任何知道你的域名和 url 的人都能訪問到你部署在內網的 web 服務,但是在某些場景下需要確保只有限定的用戶才能訪問。
frp 支持通過 HTTP Basic Auth 來保護你的 web 服務,使用戶需要通過用戶名和密碼才能訪問到你的服務。
該功能目前僅限于 http 類型的代理,需要在 frpc 的代理配置中添加用戶名和密碼的設置。
# frpc.ini
[common]
#服務端的訪問地址(可用ip或者域名)。
server_addr = 23.23.23.23
#需要穿透的服務端端口,與服務端配置一樣
server_port = 7000
#服務端連接令牌
token = token123token
#普通網站發布映射
[web]
type = http
#本地訪問的端口
local_port = 8020
#自己定義域名(可用ip或者域名)。在此使用的公網IP,因為沒有域名
custom_domains = 23.23.23.23
#密碼保護web
http_user = abc
http_pwd = abc
#普通網站發布 end
通過瀏覽器訪問 http://23.23.23.23:8047,需要輸入配置的用戶名和密碼才能訪問。
2客戶端監控頁面:
Admin UI
Admin UI 可以幫助用戶通過瀏覽器來查詢和管理客戶端的 proxy 狀態和配置。
需要在 frpc.ini 中指定 admin 服務使用的端口,即可開啟此功能:
[common]
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
打開瀏覽器通過 http://127.0.0.1:7400 訪問 Admin UI,用戶名密碼默認為 admin。
如果想要在外網環境訪問 Admin UI,將 7400 端口映射出去即可,但需要重視安全風險。