Frp 内网穿透配置和客户端自启

  • 客户端环境 Ubuntu 18.10 x64
  • 服务端环境 CentOS 7.4 x64
  • Git 2.19.1

安装 FRP

到 Frp 官方GitHub下载 Release 解压安装

或者使用Git 克隆项目

1
$ git clone https://github.com/fatedier/frp.git

注意下载对应的处理器版本

部署 FRP

将下载的 Release 解压得到如下文件

Frp目录文件

frpc 为客户端的文件, frps 为服务端的文件

将frps.*的文件上传到服务器,frpc.*的文件部署到客户端,为了避免文件缺失,可以全部文件部署到服务端和客户端

Frps 服务端配置

编辑 frps.ini 文件

1
$ vi frps.ini

进行如下配置

1
2
3
4
5
6
7
8
9
10
[common]
bind_port = 7000 # Frps 的端口
bind_addr = 0.0.0.0 # Fprs 使用的IP地址
vhost_http_port = 8080 # 自定义的http访问地址
bind_udp_port = 7007 # Frps 绑定的UDP协议地址
token = your_token # 客户端连接 Fprs 的凭据
dashboard_port = 70 # Frps Web 管理面板的端口
dashboard_user = your_user # Frps Web 管理面板的管理员账号
dashboard_pwd = your_password # Frps Web 管理面板的管理员密码
dashboard_addr = 0.0.0.0 # Frps Web 管理面板使用的IP地址

启动 Frps

配置完成后,启动Frps

1
2
$ chmod a+x frps
$ ./frps -c fprs.ini

当看到如下图时,说明Frps启动完成

Frps启动成功

Frpc 客户端配置

编辑 frpc.ini 文件

1
$ vi frpc.ini

进行如下配置

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = your_server_ip # Frps 部署的服务端IP
server_port = 7000 # Frps 运行的端口
token = your_token # Frps 连接的凭据

[ssh-Desktop] # 连接的label 用于服务端管理和区分
type = tcp # 连接类型
local_ip = 127.0.0.1 # 本地的IP
local_port = 22 # SSH 的本地运行端口
remote_port = 6666 # 远程访问的端口

启动 Frpc

1
2
$ chmod a+x frpc
$ ./frpc -c frpc.ini

当看到下图时,说明Frpc启动完成

Frpc启动成功

设置 Frpc 自启动脚本

以 Ubuntu 为例设置Frpc的脚本,网上的教程或者一键脚本可能启动后并不能成功的连接到Frps,可能是网卡还没有初始化导致,使用延迟的方法,在生产环境中十分影响效率,因此这里使用ping来判断网络是否连接,并连接到Frps

1
2
$ cd /etc/init.d
$ sudo vi frpc

将下面内容写入到 frpc

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
57
58
59
#!/bin/sh  

### BEGIN INIT INFO
# Provides: frpc
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start/stop frpc
# Description: starts frpc using start-stop-daemon
### END INIT INFO


START=50
PIDF=` ps -A | grep frpc | awk '{print $1}'`

case "$1" in

start)
i=0
while [ $i -le 0 ]
do
ping -c 1 你的服务器IP > /dev/null 2>&1
if [ $? -eq 0 ];then
rm -rf /opt/frp/frpc.log #frpc的日志路径
touch /opt/frp/frpc.log #frpc的日志路径
nohup /opt/frp/frpc -c /opt/frp/frpc.ini > /dev/null 2>&1 & #frpc的启动路径和配置文件路径
break
else
echo "网络异常无法启动frpc"
fi
done
echo "frpc启动完成"
;;

stop)
kill -3 $PIDF
rm -rf /opt/frp/frpc.log #frpc的日志路径
touch /opt/frp/frpc.log #frpc的日志路径
echo "frpc已经关闭"
;;

restart)
$0 stop
sleep 1
$0 start
;;

status)
ps -fe|grep /opt/frp/frpc.ini |grep -v grep #frpc的启动路径和配置文件路径
if [ $? -ne 0 ]
then
echo "frpc未启动"
else
echo "frpc已启动"
cat /opt/frp/frpc.log #frpc的日志路径
fi
;;
esac

将上面内容替换成Frps的IP和Frpc的路径,保存

1
2
$ sudo chmod a+x frpc
$ sudo systemctl enable frpc.service

这样一来,就可以在开机的时候顺利的连接到frps了

查看 Frps Web 面板

在浏览器输入 server_ip:port ,然后输入设置的面板管理账户登录到面板

Frps 面板登录成功

然后在 Proxies 中选择连接类型来查看已经连接的客户端信息

Frps 面板客户端信息