一.介紹
前面介紹了ngrok,也說了它的1.x版本具有一些Bug並且作者放棄了維護,那么,誰能夠取代ngrok在內網穿透工具中的地位呢?我覺得frp也許可以,frp是fast reverse proxy的縮寫,其可用於反向代理和內網穿透,支持tcp, udp, http, https 協議,這比ngrok還多了個udp。並且發布以來廣受歡迎,積累了不少用戶,作者也是很勤快,一直在修復bug和更新新特性。
並且,作者是個中國人,所以在GitHub上還有中文文檔,寫的還挺詳細的,不過……不去看文檔是很多人的特點,所以我這邊還是記點東西來介紹下簡單的安裝和操作配置。
二.安裝配置
frp提供了熱門平台的程序文件,所以安裝也變得比較簡單了,我這邊的是Linux 64位平台的,其它的請自己去下——>傳送門
1
2
3
4
5
|
wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_amd64.tar.gz
tar xzf frp_0.12.0_linux_amd64.tar.gz
mv frp_*/frps /usr/bin/
mkdir /etc/frp/
rm -rf frp_*
|
然后根據下面配置你自己改了填到配置文件中
1
|
vi /etc/frp/frps.ini
|
下面是我翻譯的帶說明的服務端配置文件,就這么湊和着看吧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
[common]
#frp服務器監聽地址,如果是IPV6地址必須用中括號包圍
bind_addr = 0.0.0.0
#frp服務器監聽端口
bind_port = 7000
#kcp的udp監聽端口,如果不設那就不啟用
#kcp_bind_port = 7000
#指定使用的協議,默認tcp,可選kcp
#protocol = kcp
#如果要使用vitual host,就必須設置
#vhost_http_port = 80
#vhost_https_port = 443
#Web后台監聽端口
dashboard_port = 7500
#Web后台的用戶名和密碼
dashboard_user = admin
dashboard_pwd = admin
#Web后台的靜態資源目錄,調試用的,一般不設
#assets_dir = ./static
#日志輸出,可以設置為具體的日志文件或者console
log_file = /var/log/frps.log
#日志記錄等級,有trace, debug, info, warn, error
log_level = info
#日志保留時間
log_max_days = 3
#啟用特權模式,從v0.10.0版本開始默認啟用特權模式,且目前只能使用特權模式
#privilege_mode = true
#特權模式Token,請盡量長點且復雜
privilege_token = 12345678
#特權模式允許分配的端口范圍
privilege_allow_ports = 2000-3000,3001,3003,4000-50000
#心跳超時,不用改
#heartbeat_timeout = 90
#每個代理可以設置的連接池上限
#max_pool_count = 5
#認證超時時間,一般不用改
#authentication_timeout = 900
#如果配置了這個,當你的模式為http或https時,就能設置子域名subdomain
#subdomain_host = frps.com
#是否啟用tcp多路復用,默認就是true,不用管
#tcp_mux = true
|
在這個配置文件中老版本是可以不啟用特權模式或者同時添加其它的section來在服務端配置其它的轉發設置的,但是從v0.10.0版本開始后特權模式暫時是唯一可用的(因為方便,不用為了一個配置而既要改服務端又要改客戶端)
在修改好服務端配置文件后,我們可以啟用frp的服務端了
1
|
frps -c /etc/frp/frps.ini
|
然后服務端就OK了,下面開始配置客戶端,客戶端程序自己在GitHub上面下,各個平台的包里面frps是服務器,frpc就是客戶端
配置文件如下,自己修改后保存為frpc.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
[common]
#frp服務器地址
server_addr = 1.2.3.4
#frp服務器端口
server_port = 7000
#特權模式Token
privilege_token = 12345678
#轉發SSH
[ssh]
type = tcp
#可以指定為其它IP,默認是本地
#local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
#啟用加密
use_encryption = true
#啟用壓縮
use_compression = true
#轉發Web
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
#修改header中的host
#host_header_rewrite = dev.yourdomain.com
#啟用簡單HTTP認證
#http_user = abc
#http_pwd = abc
#在服務端配置了subdomain_host的情況下用於自定義二級域名
#subdomain = test
#在存在多個相同域名的情況下通過請求的URL路由到不同的配置
#locations = /news,/about
#轉發DNS請求
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
#轉發Unix域套接字(這兒是Docker)
[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
#HTTP代理
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
#配置http代理的簡單認證
#plugin_http_user = abc
#plugin_http_passwd = abc
|
以上是大部分的參考,如果你有啥需要的參照着改就行了
在Linux等平台下,執行如下命令就行
1
|
frpc -c /path/to/frpc.ini
|
而在Windows下,需要你創建一個frpc.exe的快捷方式,然后將參數加到快捷方式屬性的目標那一欄的frpc.exe后面,也可以自己百度下如果將命令注冊為系統服務來實現常駐
成功運行后,訪問服務器的7500端口會有一個WebGUI,如下,顯示當前的狀態,左側的Proxies里會顯示客戶端注冊的各種轉發規則
至於客戶端這兒有日志提示是否連上服務器,是否成功啟用配置啥的
總的來說還是挺好用的,比較期待以后還有啥新的功能_(:з」∠)_