云计算百科
云计算领域专业知识百科平台

使用一个公网服务器做内网穿透超详细

📌 FRP – Linux & Win 内网穿透教程

📖 目录

  • 🌍 什么是 FRP?
  • ⚡ 安装与配置
  • 🎯 服务器端配置
  • 🏠 客户端配置
  • 📝 测试与验证
  • 📌 结语

🌍 什么是 FRP?

FRP(Fast Reverse Proxy)是一款可以用于内网穿透的开源工具,支持 TCP/UDP/HTTP/HTTPS 协议,可以将内网服务暴露到公网,实现从任意网络环境访问到你的服务器或电脑。

内网穿透用于解决局域网设备对外提供服务的问题。当我们在局域网中部署了web服务或其他服务,但只有局域网IP而没有公网IP时,外部设备无法直接访问这些服务。通过内网穿透技术,可以让公网上的用户访问到局域网内的服务。

🔗 Frp官网:https://github.com/fatedier/frp

⚡ 安装与配置

❗ 前置要求

  • 一台有公网IP的服务器
  • 你需要实现内网穿透的服务器或电脑

🔹 1. 下载 FRP

前往 GitHub FRP Releases 下载适合你系统的版本:

💡 提示:

  • 文件格式是 frp_0.61.1_xxx(适用系统)_yyy(系统架构).tar.gz
  • Windows系统下载 frp_0.61.1_windows_amd64.zip
  • Linux系统amd架构下载 frp_0.61.1_linux_amd64.tar.gz
  • Linux系统arm架构下载 frp_0.61.1_linux_arm64.tar.gz

Linux查看系统架构的指令:

uname -m

输出示例:

  • x86_64: 表示 64 位 x86 架构(也称为 AMD64)
  • i686 或 i386: 表示 32 位 x86 架构
  • aarch64: 表示 64 位 ARM 架构
  • mips: 表示 MIPS 架构
Windows下载方式:

直接点击链接下载,下载完把zip解压出来

Linux下载方式:

# AMD架构下载
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

# ARM架构下载 树莓派 香橙派 用这个下载
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_arm64.tar.gz

Linux解压文件:

# AMD架构是这个
tar -xvzf frp_0.61.1_linux_amd64.tar.gz

# ARM架构是这个
tar -xvzf frp_0.61.1_linux_arm64.tar.gz

> tar命令参数详解:
>`-x`: 解压模式(extract)
>`-v`: 显示详细过程(verbose)
>`-z`: 使用gzip解压缩(gunzip)
>`-f`: 指定文件名(file)
>
> 所以 `tar -xvzf` 的含义是:
> 1. `-x`: 告诉tar要解压文件
> 2. `-v`: 在解压过程中显示正在解压的文件名
> 3. `-z`: 因为这是.gz格式,需要用gzip解压
> 4. `-f`: 后面接要解压的文件名
>
> 💡 Tips: 这些参数的顺序可以调整,但是`-f`参数后面必须紧跟文件名

#### 进入文件夹
```bash
cd frp_0.61.1_linux_amd64 # AMD架构
# 或
cd frp_0.61.1_linux_arm64 # ARM架构

💡 提示:根据你的系统架构,只需执行相应的命令。

🎯 服务器端配置

服务器端通常称为 frps,即 FRP 服务端,指的是有公网IP的服务器。

🔹 1. 服务器端 frps.toml 配置

在解压后的文件夹中,我们需要配置 frps.toml 文件:

# Linux查看文件
ls
# 通常会看到: frpc frpc.toml frps frps.toml LICENSE

# 编辑配置文件
nano frps.toml # 或者使用vim: vim frps.toml

将以下配置复制到frps.toml中(删除原有内容):

# ==============================
# FRP 服务器端(frps.toml)配置
# ==============================

# 绑定监听地址(默认 `0.0.0.0` 代表监听所有 IP)
bindAddr = "0.0.0.0"

# 服务器监听端口(客户端需要通过该端口连接 FRP 服务器)
bindPort = 7000

# HTTP 端口(用于内网 HTTP 代理穿透)
vhostHTTPPort = 80

# HTTPS 端口(用于内网 HTTPS 代理穿透)
vhostHTTPSPort = 443

# 子域名支持
# 可以通过 `subDomainHost` 解析动态子域名
# 例如:如果 `subDomainHost` 配置为 "example.com"
# 那么客户端可以使用 `test.example.com` 访问内网服务
# 如果你没有域名或不使用此功能,请删除此行!
# 如果你要用IP直连例如:168.0.0.1:8848,就把这行删掉,不要配置!
subDomainHost = "xxxx.com" # 请替换为你的真实域名

# =============================================
# Web 控制台(Dashboard)配置
# =============================================

# 监控界面监听地址(`0.0.0.0` 代表所有 IP 可访问)
webServer.addr = "0.0.0.0"

# Web 管理面板端口(可在浏览器访问,默认 7500)
# 你可以通过 `http://你的公网IP:7500` 访问 FRP 管理面板
webServer.port = 7500

# Web 控制台管理账号(可自定义)
webServer.user = "admin"

# Web 控制台密码(请自行修改)
webServer.password = "xxxx"

# =============================================
# 身份验证(Authentication)配置
# =============================================

# 认证方式(防止未经授权的客户端连接)
# 目前 FRP 支持 `token` 和 `oidc` 方式,我们选用token
auth.method = "token"

# Token 认证(客户端需要匹配相同 token 才能连接)
# 通俗来说就是密码,写一个你能记住的,尽量长一点
# 示例: 123-abc-123abc
auth.token = "123-abc-123abc" # 请自行修改,不要用示例中的值

💡 提示:以上只是基本配置,查看完整配置参数可访问官方配置示例:frps_full_example.toml

🔹 2. 启动服务端frps

❗ 注意:启动指令必须在frp文件目录下执行!

Linux 启动指令

screen -S frps ./frps -c frps.toml

命令参数解析:

`screen`: Linux下的终端复用工具,可以让程序在后台运行
`-S frps`: 创建一个名为"frps"的新screen会话
`./frps`: 运行当前目录下的frps程序
`-c`: 指定配置文件参数
`frps.toml`: 配置文件名称,使用TOML格式

这个命令的作用是:
1. 创建一个新的screen会话,命名为"frps"
2. 在这个会话中运行frps程序
3. 使用frps.toml作为配置文件
4. 让frps在后台持续运行,即使关闭终端也不会停止

Windows启动指令

在文件目录里,点击上方的路径栏输入cmd后按回车打开命令窗口,然后输入:

frps.exe -c frps.toml

启动后不要关闭窗口!否则程序会终止运行。

成功启动后会出现类似以下信息:

[frps/root.go:105] frps uses config file: frps.toml
[server/service.go:237] frps tcp listen on 0.0.0.0:7000
[server/service.go:305] http service listen on 0.0.0.0:80
[server/service.go:319] https service listen on 0.0.0.0:443
[frps/root.go:114] frps started successfully
[server/service.go:351] dashboard listen on 0.0.0.0:7500

💡 常见问题 & 注意事项

端口冲突问题

如果服务器80或443端口已被占用,可更换vhostHTTPPort和vhostHTTPSPort端口:

vhostHTTPPort = 8080
vhostHTTPSPort = 8443

HTTP和HTTPS端口的作用
  • vhostHTTPPort(默认80端口):用于HTTP协议的内网穿透,当你使用"http"类型的代理时,所有HTTP请求会通过这个端口转发
  • vhostHTTPSPort(默认443端口):用于HTTPS协议的内网穿透,当你使用"https"类型的代理时,所有HTTPS请求会通过这个端口转发

这两个端口只有在你需要转发HTTP/HTTPS服务时才需要配置:

  • 使用HTTP/HTTPS穿透和子域名功能时:

    • 需要保证这两个端口未被占用,或者修改为其他未被占用的端口
    • 例如,当你配置了type = "http"和subdomain = "test"时,用户可以通过http://test.example.com访问你的内网服务
  • 仅使用TCP端口转发时:

    • 如果你只使用TCP协议(例如type = "tcp"),无需关心这两个端口
    • 使用TCP协议时,用户通过服务器IP:远程端口访问,不经过HTTP/HTTPS端口
  • 端口占用情况:

    • 如果服务器上已有Web服务占用了80/443端口,可以修改为其他端口(例如8080/8443)
    • 修改后,通过http://yourdomain.com:8080或使用URL重写访问
  • 只有使用HTTP/HTTPS类型代理时才需要关注这两个端口,纯TCP转发模式不受这两个端口的影响。

    不同协议的访问方式

    根据不同的协议类型和配置,访问方式会有所不同:

  • TCP协议转发(例如SSH服务):

    [[proxies]]
    name = "ssh_service"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000

    访问方式:ssh -p 6000 username@server_ip

    这种方式不使用vhostHTTPPort和vhostHTTPSPort,直接通过remotePort指定的端口访问

  • HTTP协议转发(默认80端口):

    [[proxies]]
    name = "web_service"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 80
    subdomain = "test" # 假设域名为example.com

    访问方式:http://test.example.com

  • HTTP协议转发(修改为8080端口):

    # 服务端配置
    vhostHTTPPort = 8080

    # 客户端配置
    [[proxies]]
    name = "web_service"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 80
    subdomain = "test" # 假设域名为example.com

    访问方式:http://test.example.com:8080

  • 同时使用域名和TCP端口转发:

    如果你需要同时使用域名模式和TCP端口转发,这是两个独立的配置,访问方式也不同:

    # 客户端配置
    [[proxies]]
    name = "web_http"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 80
    subdomain = "test" # 通过test.example.com访问

    [[proxies]]
    name = "ssh_tcp"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000 # 通过server_ip:6000访问

    • Web服务访问:http://test.example.com:8080(如果vhostHTTPPort=8080)
    • SSH服务访问:ssh -p 6000 username@server_ip

    注意:域名后面的端口8080是HTTP服务的端口,而不是SSH端口。SSH服务使用专门的TCP转发,通过remotePort指定的端口访问。

  • 关于域名+端口转发

    很多用户对域名、端口和协议类型之间的关系存在疑惑,这里进行详细说明:

  • 使用域名+端口访问HTTP服务

    如果您在服务端修改了vhostHTTPPort (例如从80改为8080),那么通过域名访问时需要指定这个端口:

    # 服务端配置
    vhostHTTPPort = 8080

    # 客户端配置
    [[proxies]]
    name = "web"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 80 # 本地网站端口
    subdomain = "www" # 子域名

    访问方式:http://www.yourdomain.com:8080

    解释::8080是因为服务端的vhostHTTPPort设置为8080,不是本地端口。

  • 使用域名直接转发TCP服务(不支持)

    FRP不支持直接通过domain:port的方式访问TCP服务。例如,不能通过www.yourdomain.com:22来访问SSH服务。

    原因:域名解析是基于HTTP/HTTPS协议工作的,而TCP服务需要通过IP+端口直接访问。

    正确的做法是使用TCP类型的代理:

    [[proxies]]
    name = "ssh"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22 # 本地SSH端口
    remotePort = 6000 # 远程访问端口

    访问方式:ssh -p 6000 username@server_ip

  • 将域名+端口转发到本地不同端口

    如果要将域名的不同端口转发到本地不同服务,需要为每个端口配置单独的TCP代理:

    # 将server_ip:6000转发到本地22端口
    [[proxies]]
    name = "ssh"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000

    # 将server_ip:8080转发到本地80端口
    [[proxies]]
    name = "web"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 80
    remotePort = 8080

    # 将server_ip:1433转发到本地SQL Server
    [[proxies]]
    name = "sql"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 1433
    remotePort = 1433

    这种情况下,vhostHTTPPort和vhostHTTPSPort的设置不会影响TCP代理的访问。

  • 使用HTTP类型代理转发不同的本地Web服务

    如果您有多个本地Web服务,想要通过不同的子域名访问:

    # 服务端配置
    vhostHTTPPort = 8080

    # 客户端配置 – 转发本地80端口
    [[proxies]]
    name = "main_web"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 80
    subdomain = "www"

    # 客户端配置 – 转发本地8081端口的其他Web应用
    [[proxies]]
    name = "blog_web"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 8081
    subdomain = "blog"

    访问方式:

    • http://www.yourdomain.com:8080 → 本地80端口服务
    • http://blog.yourdomain.com:8080 → 本地8081端口服务

    注意:访问时端口8080是vhostHTTPPort的设置,与本地端口无关。

  • 总结:使用域名+端口访问时,需要区分HTTP/HTTPS协议和TCP/UDP协议的不同配置方式。对于HTTP/HTTPS协议,域名后的端口是指vhostHTTPPort;对于TCP/UDP协议,不能使用域名直接访问,需要使用IP+remotePort访问。

    访问Web监控面板

    通过 http://你的服务器IP:7500 可以访问FRP管理面板,查看连接状态。

    Linux退出程序窗口
    • 按下Ctrl+A松开,再按一下D可以退出程序窗口(程序仍在后台运行)
    • 使用screen -r frps可以回到程序窗口
    • 使用pkill frps可以结束程序进程
    使用systemd管理frps服务(推荐)

    systemd是现代Linux系统中的主要初始化系统和服务管理器,使用systemd管理frps服务有以下重要优势:

  • 自动启动:服务器重启后自动启动frps,无需手动干预
  • 故障恢复:服务崩溃后自动重启frps服务
  • 标准日志:通过journald统一管理日志,方便问题排查
  • 优雅停止:正确处理服务停止信号,确保资源正确释放
  • 依赖管理:可以设置服务启动顺序和依赖关系
  • 状态监控:使用标准命令查看服务状态和健康情况
  • 相比直接使用screen或nohup运行frps,systemd提供了更加完善、标准和可靠的服务管理方式。

    配置步骤:
  • 创建systemd服务文件

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

    写入以下内容:

    [Unit]
    Description=frps service
    Documentation=https://github.com/fatedier/frp
    After=network.target
    Wants=network.target

    [Service]
    Type=simple
    # 替换为你的实际路径
    ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.toml
    Restart=on-failure
    # 重启前等待的时间
    RestartSec=5s
    # 使用专门的用户运行(可选,增强安全性)
    # User=frp
    # Group=frp
    # 设置合理的资源限制(可选)
    # LimitNOFILE=1048576

    [Install]
    WantedBy=multi-user.target

  • 重新加载systemd配置

    sudo systemctl daemon-reload

    此命令让systemd重新加载所有配置文件,识别新创建的服务文件。

  • 启动frps服务

    sudo systemctl start frps

    此命令启动frps服务,systemd会执行ExecStart中指定的命令。

  • 设置开机自启

    sudo systemctl enable frps

    此命令将frps服务设置为系统启动时自动启动。

  • 查看服务状态

    sudo systemctl status frps

    输出示例:

    ● frps.service – frps service
    Loaded: loaded (/etc/systemd/system/frps.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2025-03-25 15:32:45 CST; 3h 24min ago
    Main PID: 1234 (frps)
    Tasks: 12 (limit: 4915)
    Memory: 22.4M
    CGroup: /system.slice/frps.service
    └─1234 /usr/local/frp/frps -c /usr/local/frp/frps.toml

  • 常用的systemd管理命令:

    # 启动服务
    sudo systemctl start frps

    # 停止服务
    sudo systemctl stop frps

    # 重启服务
    sudo systemctl restart frps

    # 重新加载配置(不中断服务)
    sudo systemctl reload frps

    # 查看详细日志
    sudo journalctl -u frps

    # 查看实时日志
    sudo journalctl -u frps -f

    # 检查服务是否开机启动
    sudo systemctl is-enabled frps

    # 禁用开机自启
    sudo systemctl disable frps

    为什么推荐使用systemd管理frps:
  • 稳定性:长期运行的服务需要可靠的管理机制,systemd能确保服务持续运行
  • 标准化:遵循Linux系统标准的服务管理方式,便于维护和操作
  • 方便排错:集中的日志管理和状态监控,大大简化故障排查
  • 安全性:可以限制服务的权限和资源使用,增强系统安全性
  • 专业性:使用systemd管理服务是生产环境的最佳实践
  • 注意事项:
  • 必须使用root权限创建和管理systemd服务
  • 确保ExecStart中的路径正确指向frps可执行文件和配置文件
  • 如果修改了frps配置文件,需要重启服务:sudo systemctl restart frps
  • 对于高安全需求场景,建议创建专门的非特权用户运行frps服务
  • 🏠 客户端配置

    客户端用于连接服务器,一般是内网服务器或个人电脑(如树莓派、香橙派或NAS)。

    🔹 1. 配置 frpc.toml

    客户端也需要下载相同版本的frp压缩包并解压,然后配置frpc.toml文件:

    # 服务端地址(填你有公网IP的服务器的IP或域名)
    serverAddr = "192.xxx.x.x"
    # 服务器端口(Frp服务端监听的端口)
    serverPort = 7000

    # 连接协议
    transport.protocol = "tcp"

    # 认证方式
    auth.method = "token"
    # 认证所使用的Token(要和服务端token完全一样!)
    auth.token = "123-abc-123abc"

    # 代理配置
    [[proxies]]
    # 代理名称(标识该代理的名称,根据你的喜好填写)
    name = "rocketcat"
    # 代理类型(http、https、tcp等)
    # 如果你有域名,就用http
    # 如果你没有域名,那就用IP直连,用tcp协议
    # 如果你用tcp协议就必须把服务端上subDomainHost配置删除!
    # type = "tcp" # IP+端口直连用这个
    type = "http"
    # 本地IP(Frp客户端需要将流量转发到的本地地址)
    localIP = "127.0.0.1"
    # 本地端口(Frp客户端需要将流量转发到的本地端口,根据你要穿透的端口来填写)
    localPort = 8848
    # 访问此代理的子域名
    # 如果你没有域名要用IP直连,请把这句删除掉,否则会导致无法连接!
    subdomain = "rocket" # 子域名请根据你拥有的域名配置,配置后通过rocket.xxx.com格式访问

    # 如果你不用域名,要用ip+端口直连,请必须加上这句!
    # 并且删除 subdomain = "rocket"
    # remotePort = 8848 # 这个端口和localPort配置的一模一样,这样才能正常访问!

    💡 提示:以上只是基本配置,查看完整配置参数可访问官方配置示例:frpc_full_example.toml

    🔹 2. 启动客户端frpc

    ❗ 注意:启动指令必须在frp文件目录下执行!

    Linux 启动指令:

    screen -S frpc ./frpc -c frpc.toml

    Windows启动指令:

    在文件目录里,点击上方的路径栏输入cmd后按回车打开命令窗口,然后输入:

    frpc.exe -c frpc.toml

    启动后不要关闭窗口!否则程序会终止运行。

    成功启动后会出现类似以下信息:

    [I] [sub/root.go:142] start frpc service for config file [frpc.toml]
    [I] [client/service.go:295] try to connect to server…
    [I] [client/service.go:287] [7c9de41e30e15c46] login to server success, get run id [7c9de41e30e15c46]
    [I] [proxy/proxy_manager.go:173] [7c9de41e30e15c46] proxy added: [rocketcat]
    [I] [client/control.go:168] [7c9de41e30e15c46] [rocketcat] start proxy success

    💡 常见问题 & 注意事项

    文件配置错误

    一定要注意客户端配置的是frpc.toml文件,不要配置错了。

    IP+端口访问模式配置
    • 配置的时候必须删除服务端的subDomainHost
    • 配置type为TCP模式type = "tcp"
    • 配置remotePort监听你的端口remotePort = 8848
    localIP设置说明

    localIP 参数可以设置为任何您内网中可以访问到的IP地址,不一定要是127.0.0.1:

    • 127.0.0.1:当您要转发的服务运行在与frpc相同的机器上时使用
    • 局域网IP地址(如192.168.1.x):当您想转发局域网中其他设备上的服务时使用
    • 具体设备IP:如果您有多网卡或复杂网络环境,可以指向特定网卡IP

    例如,如果您在设备A上运行frpc,但想转发设备B (192.168.1.100)上的Web服务:

    [[proxies]]
    name = "remote_web"
    type = "tcp"
    localIP = "192.168.1.100" # 设备B的IP
    localPort = 80
    remotePort = 8080

    确保从运行frpc的设备可以访问到localIP:localPort上的服务,否则转发将无法工作。

    Linux退出程序窗口
    • 按下Ctrl+A松开,再按一下D可以退出程序窗口(程序仍在后台运行)
    • 使用screen -r frpc可以回到程序窗口
    • 使用pkill frpc可以结束程序进程

    📝 测试与验证

    🔹 1. 检查端口

    在服务器端检查 FRPS 是否监听:

    ss -tunlp | grep 7000
    ss -tunlp | grep 7500

    🔹 2. 访问 HTTP 服务

    在浏览器访问你的网站:

    • 使用域名:http://subdomain.your-domain.com
    • 使用IP+端口:http://your-server-ip:port

    📌 实用配置示例

    IP直连+多端口转发配置示例

    以下是使用IP直连模式(无需域名)并转发多个端口的配置示例。假设服务器公网IP为59.110.160.18。

    服务器端配置 (frps.toml)

    # ==============================
    # FRP 服务器端配置 – IP直连示例
    # ==============================

    # 基础配置
    bindAddr = "0.0.0.0"
    bindPort = 7000

    # 注意:使用IP直连时,不要配置subDomainHost

    # Web控制台配置
    webServer.addr = "0.0.0.0"
    webServer.port = 7500
    webServer.user = "admin"
    webServer.password = "strong_password" # 请修改为强密码

    # 身份验证
    auth.method = "token"
    auth.token = "your_secure_token_123" # 请使用安全的token

    # 日志设置
    log.level = "info"
    log.maxDays = 3

    客户端配置 (frpc.toml)

    # ==============================
    # FRP 客户端配置 – IP直连+多端口示例
    # ==============================

    # 服务器连接信息
    serverAddr = "59.110.160.18"
    serverPort = 7000

    # 认证方式
    auth.method = "token"
    auth.token = "your_secure_token_123" # 必须与服务端相同

    # 连接协议
    transport.protocol = "tcp"

    # SSH服务转发示例 (通过59.110.160.18:2222访问内网SSH)
    [[proxies]]
    name = "ssh_service"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 2222 # 外网访问端口

    # Web服务转发示例 (通过59.110.160.18:8080访问内网Web服务)
    [[proxies]]
    name = "web_service"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 80
    remotePort = 8080 # 外网访问端口

    # 远程桌面转发示例 (通过59.110.160.18:3389访问内网RDP)
    [[proxies]]
    name = "rdp_service"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 3389
    remotePort = 3389 # 外网访问端口

    # 数据库服务转发示例 (通过59.110.160.18:3306访问内网MySQL)
    [[proxies]]
    name = "mysql_service"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 3306
    remotePort = 13306 # 外网访问端口,修改为13306避免与服务器本身的MySQL冲突

    使用方法

  • 在服务器上运行frps:

    ./frps -c frps.toml

  • 在内网设备上运行frpc:

    ./frpc -c frpc.toml

  • 通过以下方式访问内网服务:

    • SSH服务: ssh -p 2222 username@59.110.160.18
    • Web服务: 浏览器访问 http://59.110.160.18:8080
    • 远程桌面: 使用RDP客户端连接 59.110.160.18:3389
    • MySQL数据库: 使用数据库客户端连接 59.110.160.18:13306
  • 安全提示

  • 务必修改token为强密码,避免未授权访问
  • 推荐在服务器端启用防火墙,只开放必要端口
  • 考虑使用TLS加密传输数据,增强安全性
  • 定期检查frps的日志,监控异常连接
  • 常见问题解决

    1. JSON解析错误问题

    问题现象:

    执行 ./frps -c frps.ini 命令时出现以下错误:

    error unmarshaling JSON: while decoding JSON: json: cannot unmarshal string into Go value of type v1.ServerConfig

    原因分析:

    这个错误通常是由于以下原因导致的:

  • 使用了较新版本的frp,但配置文件格式仍使用旧版本的INI格式
  • 配置文件中存在无效的格式或者格式问题
  • 解决方案:

  • 使用TOML格式配置文件 根据官方文档,现在推荐使用TOML格式,按照本文档上述示例创建frps.toml配置文件

  • 使用正确的配置文件版本

    • 查看当前frp版本: ./frps -v
    • 确保配置文件格式与当前版本兼容
  • 端口作用总结

    在FRP配置中,不同的端口有不同的用途:

    端口配置项默认值作用是否必需
    bindPort 7000 客户端和服务端通信的端口 必需
    webServer.port 7500 管理面板访问端口 可选
    vhostHTTPPort 80 HTTP协议穿透端口 仅HTTP类型必需
    vhostHTTPSPort 443 HTTPS协议穿透端口 仅HTTPS类型必需
    remotePort 自定义 TCP/UDP协议穿透的公网访问端口 仅TCP/UDP类型必需
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 使用一个公网服务器做内网穿透超详细
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!