前言

仅供自己学习记录

一、简介

  • 1.1 frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议,最牛逼最好用的完全开源的内网穿透工具frps。frp是实现内网穿透的C/S架构软件,满足在外网环境下使用内网服务的需求
  • 1.2 原理如下图
  • 简单解释就是,A是公网服务器,B是内网服务器,C是个人用户。A安装frps服务端,B安装frpc客户端并指向A的IP端口,此时C想访问B的内网服务,只需要访问A的服务,A与B相互转发,完成C访问内网B。
  • frp内网穿透服务搭建_服务端

二、安装与使用

  • 2.1 文件下载(这里需要注意的是,同一个文件夹就包含了同类型系统的服务端frps和客户端frpc程序)
  • https://github.com/fatedier/frp/releases
  • frp内网穿透服务搭建_压缩包_02
  • 2.2 服务端安装
  • 将文件拷贝到服务器任意指定文件目录,并解压文件
  • tar -zxvf + 压缩包文件名
  • 2.3 修改服务端配置文件
  • 2.3.1进入解压的压缩包内,编辑服务端配置文件
  • vim frps.ini
  • 2.3.2修改如下内容,并保存退出
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的,这个token之后在客户端会用到
token = 52010  

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3
  • 2.4 开放端口规则
  • 2.4.1 如何是阿里云或者腾讯云,则需要打开上诉相应端口的入规则。如果是公网物理服务器,则需要开放相应防火墙端口,系统不一样的自己修改指令,当然可以直接关闭防火墙。
  • frp内网穿透服务搭建_压缩包_03
# 添加监听端口
sudo firewall-cmd --permanent --add-port=7000/tcp
# 添加管理后台端口
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --reload
  • 2.5 启动frps服务
  • 2.5.1 直接文件夹启动
  • 启动方式
# 前台启动
./frps -c ./frps.ini
# 后台启动
./frps -c ./frps.ini &
  • 停止方式
# 查询frp服务pid
ps -ef | grep frp
# 停止frp服务
kill -9 + pid
  • 2.5.2 全局启动设置
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps
  • 2.6 运行验证

  • 启动成功后,登录frp管理后台,默认 IP:7500,admin/admin,即可查看服务启动

  • frp内网穿透服务搭建_服务器_04

  • 2.7 客户端的安装

  • 2.7.1 假设客户端是内网的linux系统,将之前下载好的frp压缩包拷入本地linux文件夹,并解压缩

  • tar -zxvf + 压缩包文件名

  • 2.7.2 进入解压缩文件夹,编辑客户端配置文件

  • vim frpc.ini

  • 2.7.3 修改配置如下

# 客户端配置
[common]
server_addr = 公网服务器ip
server_port = 7000 # 与frps.ini的bind_port一致
token = 52010  # 与frps.ini的token一致

# 配置ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000  # 这个自定义,之后再ssh连接的时候要用

# 配置http服务,可用于小程序开发、远程调试等,如果没有可以不写下面的
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = test.hijk.pw  # web域名
remote_port = 自定义的远程服务器端口,例如8080
  • 2.7.4 如果开起了防火墙的,记得开放端口,如果没开的就不用管,系统不一样的自己修改指令
sudo firewall-cmd --permanent --add-port=6000/tcp
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
  • 2.8 frp客户端启动运行
# 前台启动
./frpc -c ./frpc.ini
# 后台启动
./frpc -c ./frpc.ini &
  • 2.9 验证
  • 2.9.1 前后端均正常启动成功后,打开第三方ssh连接客户端,连接公网IP:[映射端口],如47.55.66.88:6000,即可连接到B电脑ssh服务的22端口。