banner
About 1,500 words
5 minutes

使用frp实现内网穿透,通过域名访问本地服务

-
-
No tags

Summary

本文介绍使用 frp 实现无需客户端的内网穿透方案。需在公网服务器部署 frps,本地服务器部署 frpc 并配置代理服务。通过 Nginx Proxy Manager 配置反向代理与 SSL 证书,最终实现域名访问内网服务。

与Tailscale或ZeroTier相比,此方式无需安装客户端,可以通过域名直接访问内网服务。
需要有一个公网ip的服务器,消耗服务器流量,连接速度取决于公网服务器的网速。

公网服务器安装frps服务

说明

1Panel 、飞牛os、宝塔等可以在应用商店中安装,操作方法基本相同。

  1. 应用商店中搜索并安装frps应用,并进入安装目录

    blog image
  2. 编辑.env文件

    blog image
Plain Text
CONTAINER_NAME="1Panel-frps-Nzx7"
CPUS=0
MEMORY_LIMIT=0
PANEL_APP_PORT_HTTP=7500   #后台端口
PANEL_APP_PORT_SERVICE=7000  #服务端口
PASSWORD="后台密码"
USER_NAME="后台用户名"
  1. 编辑frps.toml文件

    blog image
Plain Text
bindAddr = "0.0.0.0"
bindPort = 7000

auth.method = "token"
auth.token = "token123456"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "用户名"
webServer.password = "密码"

本地服务器安装frpc服务

  1. 应用商店中搜索并安装frpc应用,并打开后台

    blog image
  2. 后台配置需要穿透的服务

    blog image

配置

以ssh服务和nextcloud服务为例,本地端口分别是22和2380

blog image
Plain Text
serverAddr = "168.138.215.235" #公网服务器ip
serverPort = 7000

auth.method = "token"
auth.token = "token123456"

webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "后台用户名"
webServer.password = "密码"
webServer.pprofEnable = false

[[proxies]]
name = "ssh"   #ssh服务
type = "tcp"
localIP = "127.0.0.1"  #本地ip
localPort = 22  #本地端口
remotePort = 222  #远程端口

[[proxies]]
name = "nextcloud"  #nextcloud服务
type = "tcp"
localIP = "127.0.0.1"
localPort = 2380   #本地端口
remotePort = 6001   #远程端口

[[proxies]]
name = "onlyoffice"
type = "tcp"
localIP = "127.0.0.1"
localPort = 2280
remotePort = 6002

[[proxies]]
name = "joplin"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22300
remotePort = 6003
  1. 重启frp服务,查看运行情况

    frpc端

    blog image

frps端

blog image


4. 公网ip+远程端口访问本地服务

blog image

配置反向代理实现域名访问本地服务

  1. 将公网ip解析到域名上

    blog image
  2. 公网服务器安装nginx-proxy-manager

    blog image
  3. 配置反向代理

    blog image

4.申请ssl证书

blog image
  1. 配置完成,通过域名访问服务

    blog image

效果如下

blog image

END

Related Posts

No related posts found