云记
首页
常用软件
操作系统
技术分享
东云生态
  • 技术网站
  • 其他
关于我们
首页
常用软件
操作系统
技术分享
东云生态
  • 技术网站
  • 其他
关于我们
  • 前端

    • WebStorm
    • Node.js
    • Nginx
  • 后端

    • IntelliJ IDEA
    • Java(JDK)
    • jd-gui
    • Maven
    • 项目部署
    • Nacos
  • 数据库

    • DataGrip
    • Navicat
    • PL/SQL
    • MySQL
    • Redis
  • 中间件

    • Tomcat
  • 版本控制

    • Git
    • TortoiseSVN
  • 自动化部署工具

    • Jenkins
  • SSH工具

    • MobaXterm
  • 其他

    • Beyond Compare 4
    • Jetbrains系列产品激活
    • 科学上网
    • Frp内网穿透

Frp内网穿透

简介

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。

文档

官方文档

准备工作

  1. 一台公网电脑或者公网服务器。
  2. 一台内网主机

下载

Github

  • 下载Linux服务端软件: frp_0.61.2_linux_amd64.tar.gz。
  • 下载Windows客户端软件: frp_0.61.2_windows_amd64.zip。

提示

  • frps(后缀省略):服务端执行文件
  • frps.toml:服务端配置
  • frpc(后缀省略):客户端执行文件
  • frpc.toml:客户端配置
  • LICENSE:许可

安装与配置

我的环境:内网为Windows环境,公网服务器为CentOS环境。

安装

  1. 将 frp_0.61.2_linux_amd64.tar.gz上传至服务器,解压,将文件夹放在任意位置,其中的 frpc、frpc.toml、LICENSE可以删除。
  2. 将 frp_0.61.2_windows_amd64.zip解压,把文件夹放在windows电脑任意位置,其中的 frps.exe、frps.toml、LICENSE可以删除。

配置(2种方式,任选一种即可)

IP+端口形式访问

假设公网IP为:115.240.13.56,公网使用【115.240.13.56:8098】访问内网【127.0.0.1:5173】对应的服务 frps.toml配置

# 服务端与客户端通信端口,frpc与frps一致
bindPort = 7000
# 服务可视化面板,可以查看frp服务状态以及统计信息
# 后台管理地址
webServer.addr = "0.0.0.0"
# 后台管理端口
webServer.port = 7500
# 后台登录用户名
webServer.user = "admin"
# 后台登录密码
webServer.password = "admin"

frpc.toml配置

# 服务器的公网ip
serverAddr = "115.240.13.56"
# 服务端与客户端通信端口,frpc与frps一致
serverPort = 7000

[[proxies]]
# 自定义名称
name = "web"
type = "tcp"
# 本地IP,访问本机时可省略该配置
localIp = "127.0.0.1"
# 本地端口,例如本地启动的服务需要使用5173端口访问,这里就写5173
localPort = 5173
# 暴露服务的公网入口
remotePort = 8098

域名形式访问

frps.toml配置

# 服务端与客户端通信端口,frpc与frps一致
bindPort = 7000
# 自定义的监听的端口,所有对服务器该端口访问将被转发到本地内网
vhostHTTPPort = 8098
# 服务可视化面板,可以查看frp服务状态以及统计信息
# 后台管理地址
webServer.addr = "0.0.0.0"
# 后台管理端口
webServer.port = 7500
# 后台登录用户名
webServer.user = "admin"
# 后台登录密码
webServer.password = "admin"

frpc.toml配置

# 服务器的公网ip
serverAddr = "115.240.13.56"
# 客户端与服务端通信端口,frpc与frps一致
serverPort = 7000

[[proxies]]
# 自定义名称
name = "web"
type = "http"
# 本地端口,例如本地启动的服务需要使用8000端口访问,这里就写8000
localPort = 5173
# 域名或服务器的公网ip,我做了反向代理,这里写的公网ip
customDomains = ["example.dongyunit.com"]

Nginx配置

server {
    listen 80;
    server_name example.dongyunit.com;

    location / {
        proxy_pass http://127.0.0.1:8098;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

运行

  1. 启动服务器: (1)修改执行权限
chmod +x ./frps

(2)启动

./frps -c ./frps.toml &
  1. 启动客户端(Windows): 命令提示符,以管理员身份运行,切换到frp目录下,执行如下命令:
frpc -c frpc.toml

提示

  • 将公网服务器端口开放
  • 将内网主机防火墙关闭

使用systemctl管理服务进程

如果每次都手动运行服务应该会在前台运行,不能退出,如果ctrl + c退出,frp服务也就结束了,因此建议使用systemctl进程管理实现服务的启动停止和重启。

  1. 在 /usr/lib/systemd/system/ 里面添加一个服务配置文件 frps.service
vim /usr/lib/systemd/system/frps.service

内容如下,记得修改对应的目录

[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Restart = on-failure
RestartSec = 5s
# 工作目录,修改为对应目录
WorkingDirectory = /usr/local/frp
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.toml

[Install]
WantedBy = multi-user.target

保存退出。

  1. 刷新配置
systemctl daemon-reload 
  1. 启动服务
systemctl start frps
  1. 查看对应的服务和端口有没有正常运行
systemctl status frps
  1. 查看有没有7000,7500端口
netstat -nltp
  1. 设置 frps 开机自启动
systemctl enable frps

systemd 命令

# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps

参数意义

  • serverAddr:这是 frp 服务器(云服务器)的地址(即公网ip),客户端会将其用于与服务器建立连接。

  • serverPort:这是 frp 服务器的端口,客户端使用此端口来连接服务器。

  • auth.token:这是用于授权和身份验证的令牌。客户端必须提供正确的令牌以与服务器通信。

  • type:这是服务的类型,用于告诉 frp 客户端如何处理请求。在这个示例中,服务类型是 HTTP,表示客户端将处理 HTTP 请求。

  • localPort:这是客户端本地服务运行的端口。

  • localIp:这是客户端本地服务的 IP 地址。通常,你将其设置为 "127.0.0.1",表示本地主机。

  • customDomains:这是自定义域名或主机名,将映射到 frp 客户端的本地服务。在这个示例中,客户端将 "公网ip" 映射到本地服务。

  • 这些参数的配置使 frp 客户端能够将传入的 HTTP 请求通过 frp 服务器转发到本地服务(在这种情况下,本地服务在 127.0.0.1:5173 上运行),从而实现反向代理和端口转发。

最后更新时间:
贡献者: xiaozhe
上一篇
科学上网