前段时间,机缘巧合下,搞到了一台迷你主机,然后安装了虚拟机,使用了CentOs镜像,目前内部应用都已部署完成,奈何在穿透上,一直没落定,前段时间使用了sakurafrp,用了一段时间,总感觉有时候不太稳定,而且我也不想续费了,想找一款免费的使用,结果看到网友小宋的文章,感觉很合适,就开始动手了。。。

准备工作

  1. 一台安装了docker的本地主机(客户端服务端全程使用Docker)
  2. 一台云服务器用于中转(安装过docker)
  3. 有使用自定义域名,可以提前安装下宝塔或者其他面板。

Frpc服务端

ssh登录云服务器,切换为root用户

1
2
3
4
### 创建存放目录
mkdir /etc/frp
### 创建frps.ini文件
nano /etc/frp/frps.toml

frps.toml内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[common]
# 监听端口
bind_port = 7000
# 面板端口
dashboard_port = 7500
# 登录面板账号设置
dashboard_user = XXXX
dashboard_pwd = XXXX
# 设置http及https协议下代理端口(非重要)
vhost_http_port = 7080
vhost_https_port = 7081

# 身份验证
token = 12345678

上面监听端口和面板端口就不多做解释了,一个是用于接收数据,一个是可视化面板,面板账号密码可以自定义,身份验证token可以自定义,主要用于客户端和服务器验证,还是很重要的。然后配置保存!
执行以下命令,当然配置文件目录可以自定义哈!下面docker命令记着改一下就行。

1
docker run --restart=always --network host -d -v /data/frps/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps

如果没有报错,那么服务端就搭建成功,可以通过服务器IP+7500端口访问了。
如果无法访问,请在云服务防火墙放行7000,7500这两个端口,或者是你自定义的端口(如果你穿透的服务不需要外网监听,只是一些web界面,其实也可以不放行,直接反向代理就好了)。
如果你看到了下面面板界面,那么我们服务端就搭建好了。

Frpc客户端

和上面服务端一样,ssh登录客户端主机,并创建相应文件

1
2
3
4
### 创建存放目录
mkdir /etc/frpc
### 创建frps.toml文件
nano /etc/frpc/frpc.toml

配置frpc.toml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[common]
# server_addr为FRPS服务器IP地址
server_addr = x.x.x.x
# server_port为服务端监听端口,bind_port
server_port = 7000
# 身份验证
token = 12345678

[ssh]
type = tcp
local_ip = 192.168.228.200
local_port = 8888
remote_port = 13001

server_addr:云服务器外网ip
[ssh]:只是一个名字,可以自定义哈!
type:根据类型选择配置,大部分都是TCP访问。
local_ip:内网主机ip,由于我使用虚拟机,并配置了静态ip,所以这里指定ip比较好
local_port:内网主机映射的端口(如果需要ssh内网主机,将此端口改为22)
remote_port:云服务器外网端口,需要在防火墙处放开该端口
保存好上述配置,执行以下命令,无报错的话就可以查看Frps的面板了。

1
docker run --restart=always --network host -d -v /data/frpc/frpc.toml:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc

这时我们就可以通过IP+13001访问到内网宝塔界面了

域名访问

直接使用宝塔进行反向代理,完成域名或SSL访问