Frp (Fast Reverse Proxy) 是一个专用于内网穿透的高性能的反向代理应用,主要解决了内网环境中无法访问内部服务的问题。

Frp 支持 TCP、UDP、HTTP、HTTPS 和 WebSocket 等协议,可以将内网服务以 HTTP、HTTPS 或者 TCP 的方式通过一个公网 IP 提供出来。这对于需要从外部访问公司内部网络、家里电脑或者其它内网环境的场景非常有用。

效果展示

没错,正如你看到的这样,只需一条命令即可开启内网穿透服务!

使用 Docker 一键部署

网上的部署教程都需要你编写配置文件,我不喜欢每次部署都写配置文件,一般喜欢直接打包一套常用配置到镜像中,通过环境变量修改配置。所以制作了一个专属镜像,如下,安装 docker 后只需要一条命令,启动 frps 服务端。记得修改下面的 AUTH_TOKEN

docker run -d --name frps \
  -e AUTH_TOKEN=uEvePwkdw8 \
  -e ALLOW_PORTS=40000-60000 \
  --network=host \
  --restart=unless-stopped \
  monlor/frps:latest

部署完成后,你需要在服务器以及你的云服务器控制台上开通以下端口

  • 连接端口:7000
  • http服务端口:8080
  • 客户端tcp可连接端口范围:40000-60000

客户端配置

这里以 Mac 为例

安装 frpc 客户端

brew install frpc

配置 easyfrp 命令

脚本如下,配置好脚本中4个变量后,添加到你的环境变量文件,bash对应的是:~/.bashrczsh对应的是:~/.zshrc

FRP_SERVER=你的frp服务器ip或域名
# frp 服务端连接端口,默认7000
FRP_PORT=7000
# frp 服务端配置的 AUTH_TOKEN
FRP_TOKEN=uEvePwkdw8
# frp 允许连接的端口范围
FRP_ALLOW_PORTS=40000-60000

# 下面的函数不用修改
easyfrp() {
  if [ -z "${1}" ]; then
    echo "参数错误!格式:easyfrp 本地IP:端口 远程端口"
    return 1
  fi
  local local_ip=$(echo ${1} | cut -d ':' -f 1)
  local local_port=$(echo ${1} | cut -d ':' -f 2)
  local start_port=$(echo ${FRP_ALLOW_PORTS} | cut -d '-' -f1)
  local end_port=$(echo ${FRP_ALLOW_PORTS} | cut -d '-' -f2)
  local remote_port=${2:-$(( RANDOM % (end_port-start_port+1) + start_port ))}
  echo "将本地服务:${local_ip:-127.0.0.1}:${local_port} 映射到远程:${FRP_SERVER}:${remote_port}"
  frpc tcp -s ${FRP_SERVER}:${FRP_PORT} -t ${FRP_TOKEN} -i ${local_ip:-127.0.0.1} -l ${local_port} -r ${remote_port}
}

一键启用穿透服务

🎉恭喜你,部署完成!take it easy!

easyfrp <本地IP>:<本地端口> <远程端口>

示例

easyfrp 127.0.0.1:6379 56379
easyfrp 127.0.0.1:6379
easyfrp :6379

输入日志

将本地服务:127.0.0.1:6379 映射到远程:xxx.xxx.xxx:51339
2023/06/08 15:03:17 [I] [service.go:295] [a30e44c116b41f18] login to server success, get run id [a30e44c116b41f18]
2023/06/08 15:03:17 [I] [proxy_manager.go:152] [a30e44c116b41f18] proxy added: []
2023/06/08 15:03:17 [I] [control.go:172] [a30e44c116b41f18] [] start proxy success
最后修改:2023 年 06 月 08 日
如果觉得我的文章对你有用,请我喝杯咖啡吧☕️~