Frp内网穿透简单搭建教程

frp — 内网穿透与反向代理工具

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 TCPUDPHTTPHTTPS 等协议。

官方资源

除了安装过程,中文文档已经非常详细地介绍了使用过程,如遇到问题,建议先查看官方文档。

frp 工作原理

frp 的工作原理如下:

  1. 服务端运行,监听一个主端口,等待客户端的连接;
  2. 客户端连接到服务端的主端口,并告诉服务端要监听的端口和转发类型;
  3. 服务端 fork 新的进程来监听客户端指定的端口;
  4. 外网用户连接到 客户端指定的端口,服务端通过与客户端的连接将数据转发到客户端;
  5. 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

总结

frp 是一个强大的工具,通过其服务端与客户端的协作,能够帮助用户快速搭建内网穿透与反向代理服务,解决内网应用暴露的问题。详细了解和使用 frp,您可以访问官方文档获取更多信息。

一、Frp服务端搭建教程

  1. 下载 Frp
    访问 Frp 项目的 GitHub仓库 ,下载最新版本文件。

  2. 上传文件至公网服务器
    将下载的 frpsfrps.toml 文件上传到公网服务器上。

  3. 配置文件示例 (frps.toml)
    在服务器上配置下列参数:

# 服务端监听地址
bind_addr = "0.0.0.0"
# 服务端监听端口
bind_port = 7100
# KCP 协议监听端口
kcp_bind_port = 7100

# Web 面板配置
web_server.addr = "0.0.0.0"
web_server.port = 7500
web_server.user = "user"         # 访问Web面板的用户名
web_server.password = "password" # 访问Web面板的密码

# 日志配置
log.to = "/frpslog/frps.log"
log.level = "info"
log.max_days = 3

# 身份验证配置
auth.method = "token"
auth.token = "lGTU9rQb5lp4L4zMsr" # 证明服务器和客户端交互的秘钥

# 虚拟主机端口配置
vhost_http_port = 80
vhost_https_port = 443

# 允许的端口范围配置
allow_ports = [
    { start = 6000, end = 7000 },
]

二、使用 Systemd 管理 Frp 服务

在 Linux 系统下,使用 systemd 可以完成 Frp 服务的启动、停止和自启配置。

  1. 确保您的 Linux 服务器安装了 systemd
# CentOS/RHEL
yum install systemd

# Debian/Ubuntu
apt install systemd
  1. 创建 frps.service 文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

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

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target
  1. 使用 systemd 命令管理 frps 服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
  1. 设置 frps 开机自启动

三、Frp客户端搭建教程

  1. 下载 Frp
    访问 Frp 项目的 GitHub仓库 ,下载最新版本文件。

  2. 上传文件至内网服务器
    将下载的 frpcfrpc.toml 文件上传到公网服务器上。

  3. 配置文件示例 (frpc.toml)
    在服务器上配置下列参数:

# 连接服务端的地址和端口
server_addr = "192.168.1.10"
server_port = 7100
login_fail_exit = true

# 日志配置
log.to = "./frpc.log"
log.level = "info"
log.max_days = 3

# 身份验证配置
auth.method = "token"
auth.token = "lGTU9rQb5lp4L4zMsr"

# 配置 UDP 代理
[[proxies]]
name = "Factorio"
type = "udp"
local_ip = "127.0.0.1"
local_port = 34197
remote_port = 34197

# 配置 TCP 代理
[[proxies]]
name = "Minecraft"
type = "tcp"
local_ip = "127.0.0.1"
local_port = 25565
remote_port = 25565

# HTTP 代理配置
[[proxies]]
name = "web"
type = "http"
local_port = 80
custom_domains = ["blog.gvxin.com"]

# HTTPS 代理配置
[[proxies]]
name = "blog.gvxin.com"
type = "https"
custom_domains = ["blog.gvxin.com"]

# 插件配置
[proxies.plugin]
type = "https2http"
local_addr = "127.0.0.1:80"

# HTTPS 证书路径
crtPath = "./server.crt"      # 修改成对应域名的 crt 证书路径
keyPath = "./server.key"      # 修改成对应域名的 key 证书路径
request_headers.set.x-from-where = "frp"

四、使用 Systemd 管理 Frp 服务

在 Linux 系统下,使用 systemd 可以完成 Frp 服务的启动、停止和自启配置。

  1. 确保您的 Linux 服务器安装了 systemd
# CentOS/RHEL
yum install systemd

# Debian/Ubuntu
apt install systemd
  1. 创建 frps.service 文件

使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frpc.service 文件,用于配置 frps 服务。

sudo vim /etc/systemd/system/frpc.service

写入内容

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frpc -c /path/to/frpc.toml

[Install]
WantedBy = multi-user.target
  1. 使用 systemd 命令管理 frpc 服务
# 启动frp
sudo systemctl start frpc
# 停止frp
sudo systemctl stop frpc
# 重启frp
sudo systemctl restart frpc
# 查看frp状态
sudo systemctl status frpc
  1. 设置 frpc 开机自启动

参考资料