准备工作

  • 公网ip服务器(阿里云、腾讯云等) -服务端
  • 内网服务器 -客户端
  • frp下载相应版本。
    • frp_0.21.0_linux_amd64.tar.gz
  • 其中 frpc 是客户端运行的文件 frps 是服务端运行的文件。

服务端frps配置

frps.ini是服务端的配置文件,这是一个简化版本,只包含了必须的配置项。 其余的配置项在frps_full.ini中,可以根据自己的需要在frps.ini中添加。 在默认的frps.ini中只包含了端口一项,默认为7000 笔者使用的frps配置如下:

[common] 
bind_port = 7000 
token = sDesQJk@KlO #客户端连接服务器端的口令

配置完成后直接运行 ./frps -c ./frps.ini 服务端就配置好了 服务端重启frp

netstat -lnpt | grep frp

杀掉进程:kill -15 21451
启动:nohup ./frps -c ./frps.ini
后台:nohup ./frps &
日志:tail -f nohup.out

客户端frpc配置

和服务端类似,frpc.ini是客户端的配置文件,所有的配置项在frpc_full.ini中能看到。 笔者用的frpc配置如下:


[common] server_addr = xxx.xxx.xxx.xxx # 服务端ip
server_port =7000 #服务端端口
token = sDesQJk@KlO #连接服务端口令
[ssh] 
type = tcp 
local_ip = 127.0.0.1
local_port = 22 #要穿透的本地端口
remote_port =6661 # 暴露到外网的端口

配置完成后直接运行 ./frpc -c ./frpc.ini

配置Linux客户端

tar xzvf frp_0.21.0_linux_amd64.tar.gz
cp frp_0.21.0_linux_amd64/frpc /usr/bin/frpc
cp frp_0.21.0_linux_amd64/frpc.ini /etc/frpc.ini
chmod 755 /usr/bin/frpc 
chmod 755 /etc/frpc.ini

Linux客户端启停

frpc -c /etc/frpc.ini

此时frpc是前台运行的,可以通过&符号将其后台

frpc -c /etc/frpc.ini &

要关闭nohub后台运行进程,先

ps -aux|grep frpc

找到frpc的运行ID,然后kill -9 id号,就可以删除后台运行进程。

测试

通过 ssh 访问内网机器,假设用户名为 test: ssh -oPort=6661 test@x.x.x.x 这里ip为服务端ip,端口为我们暴露到外网的端口即 6661


systemctl配置自动启动

以服务端为例 创建service

sudo vim /lib/systemd/system/frps.service

在frps.service里写入以下内容

[Unit] 
Description=fraps service 
After=network.target network-online.target syslog.target Wants=network.target network-online.target

[Service] 
Type=simple

#启动服务的命令(此处写你的frps的实际安装目录) 
ExecStart=/your/path/frps -c /your/path/frps.ini

[Install] 
WantedBy=multi-user.target
  • 然后启动 frps: sudo systemctl start frps
  • 再打开自启动: sudo systemctl enable frps
  • 重启: sudo systemctl restart frps
  • 停止: sudo systemctl stop frps
  • 查看应用日志: sudo systemctl status frps

相关资料