如何在广域网访问校园内网里的服务呢?我们需要一个叫做frp工具为我们进行反向代理。那么反向代理是如何工作的呢?首先,我们需要一个处在公网之中有公网IP的主机,装好frp服务的内网服务器会每隔一段时间就向远程主机发送一个数据包,这样在路由器中就始终会有一个端口分配给这个内网服务器,外网主机可以随时通过这条连接向内网的服务器发送数据。当我们在广域网访问内网服务器的时候,我们的请求会先发送给我们处在外网的主机,当这台主机接收到了数据,就会转发这个数据包给内网的服务器,服务器中运行的程序接收到了这个数据包,又会转发给指定的端口,所以,我们的访问就这样转发给了内网的服务器。服务器发送的数据包也通过这种途径转发给了外网的访问者,从而实现了外网访问内网的功能。

下面我们就具体谈一谈如何快速部署frp服务。

细节参见github文档

网主机端(server):

首先,你需要有一台外网主机,比如VPS,这里的东西就不赘述了。

接着,我们通过ssh登陆主机,执行以下命令:

1
2
3
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

然后按要求填写参数

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
Loading network version for frps, please wait...frps Latest release file frp_0.8.1_linux_amd64.tar.gz    
#此步骤会自动获取frp最新版本,自动操作,无需理会
Loading You Server IP, please wait...You Server IP:12.12.12.12
#自动获取你服务器的IP地
Please input your server setting:Please input frps bind_port [1-65535](Default Server Port: 5443):
#输入frp提供服务的端口,用于服务器端和客户端通信
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
#输入frp的控制台服务端口,用于查看frp工作状态
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
#输入frp进行http穿透的http服务端口Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
#输入frp进行https穿透的https服务端口Please input privilege_token (Default: WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq):
#输入frp服务器和客户端通信的密码,默认是随机生成的Please input frps max_pool_count [1-200](Default max_pool_count: 50):
#设置每个代理可以创建的连接池上限,默认50
Please select log_level #####
1: info
2: warn
3: error
4: debug
############################
Enter your choice (1, 2, 3, 4 or exit. default [1]):
#设置日志等级,4个选项,默认是info
Please input frps log_max_days [1-30](Default log_max_days: 3 day):
#设置日志保留天数,范围是130天,默认保留3天。
##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):
#设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效

设置完成后检查你的输入,如果没有问题按任意键继续安装

1
2
3
4
5
6
7
8
9
10
11
12
============== Check your input ==============
You Server IP : 12.12.12.12
Bind port : 5443
Dashboard port : 6443
vhost http port : 80
vhost https port: 443
Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq
Max Pool count : 50
Log level : info
Log max days : 3
Log file : enable
==============================================

安装结束后显示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Congratulations, frps install completed!
==============================================
You Server IP : 12.12.12.12
Bind port : 5443
Dashboard port : 6443
vhost http port : 80
vhost https port: 443
Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq
Max Pool count : 50
Log level : info
Log max days : 3
Log file : enable
# 将上面信息添加到你的frp客户端中吧
==============================================
frps Dashboard: http://12.12.12.12:6443/
# 这个是frp控制台访问地址
==============================================

这里补充几条这个脚本的命令:

更新命令: ./install-frps.sh update

卸载命令: ./install-frps.sh uninstall

服务器端管理命令:

1
frps {start|stop|restart|status|config|version}

Dashboard:

通过浏览器查看 frp 的状态以及代理统计信息展示。打开浏览器通过 http://[server_addr]:6443 访问 dashboard 界面,用户名密码默认为 admin

dashboard
dashboard

内网服务器端(client):

我们进入这个网页:https://github.com/fatedier/frp/releases

找到适合我们服务器的安装包,下载到服务器中,假设我们下载amd64版的到了/home文件夹中

执行命令cd /home

进入文件夹中,然后执行命令 tar -zxvf frp_0.14.0_linux_amd64.tar.gz进行解压

接着进入解压后的目录中cd frp_0.14.0_linux_amd64

然后开始修改配置文件vim frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[common]
server_addr = x.x.x.x
#填frp服务端的ip(也就是外网主机的IP)
server_port = 5443
#填frp服务端的frp提供服务的端口
privilege_token = WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq
#填 frp服务器和客户端通信的密码
tcp_mux = 50
#与外网主机中“每个代理可以创建的连接池上限,默认50”项相同
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
#remote_port`就是通过外网访问内网服务器ssh服务时的端口。
[web]
type = http
local_port = 80
#内网服务器http服务的端口
custom_domains = leanote.njunova.com
#指向外网主机的域名

官方的完整配置文件:https://github.com/fatedier/frp/blob/master/conf/frpc_full.ini

保存配置文件,执行命令

./frpc -c ./frpc.ini启动frpc

后台运行和自启动

使用nohup指令后台运行

nohup指令的使用方法相对简单,只需要在nohup后面加上frp的运行指令即可。下面示范的指令是运行frp客户端。

1
nohup ./frpc -c ./frpc.ini &

这样就成功让frp在后台运行了。

添加开机自启动

由于服务端(外网主机端)使用了脚本安装,已经自动开启了自启动,所以我们只需要设置客户端(内网服务器)的开启自启。

比如你的frp目录在/home/frp

那么执行命令nano /etc/rc.local编辑自启动文件

在里面的 exit 0前一行加入 sudo nohup /home/frp/frpc -c /home/frp/frpc.ini &就可以啦!

参考链接:

文章原地址

Github地址