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

📌 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服务时才需要配置:

  1. 使用HTTP/HTTPS穿透和子域名功能时

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

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

    • 如果服务器上已有Web服务占用了80/443端口,可以修改为其他端口(例如8080/8443)
    • 修改后,通过http://yourdomain.com:8080或使用URL重写访问

只有使用HTTP/HTTPS类型代理时才需要关注这两个端口,纯TCP转发模式不受这两个端口的影响。

不同协议的访问方式

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

  1. 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指定的端口访问

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

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

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

  3. 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

  4. 同时使用域名和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指定的端口访问。

关于域名+端口转发

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

  1. 使用域名+端口访问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,不是本地端口。

  2. 使用域名直接转发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

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

    如果要将域名的不同端口转发到本地不同服务,需要为每个端口配置单独的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代理的访问。

  4. 使用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服务有以下重要优势:

  1. 自动启动:服务器重启后自动启动frps,无需手动干预
  2. 故障恢复:服务崩溃后自动重启frps服务
  3. 标准日志:通过journald统一管理日志,方便问题排查
  4. 优雅停止:正确处理服务停止信号,确保资源正确释放
  5. 依赖管理:可以设置服务启动顺序和依赖关系
  6. 状态监控:使用标准命令查看服务状态和健康情况

相比直接使用screen或nohup运行frps,systemd提供了更加完善、标准和可靠的服务管理方式。

配置步骤:
  1. 创建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
    
  2. 重新加载systemd配置

    sudo systemctl daemon-reload
    

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

  3. 启动frps服务

    sudo systemctl start frps
    

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

  4. 设置开机自启

    sudo systemctl enable frps
    

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

  5. 查看服务状态

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

使用方法

  1. 在服务器上运行frps:

    ./frps -c frps.toml
    
  2. 在内网设备上运行frpc:

    ./frpc -c frpc.toml
    
  3. 通过以下方式访问内网服务:

    • 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

安全提示

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

常见问题解决

1. JSON解析错误问题

问题现象:

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

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

原因分析:

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

  1. 使用了较新版本的frp,但配置文件格式仍使用旧版本的INI格式
  2. 配置文件中存在无效的格式或者格式问题

解决方案:

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

  2. 使用正确的配置文件版本

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

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

端口配置项默认值作用是否必需
bindPort7000客户端和服务端通信的端口必需
webServer.port7500管理面板访问端口可选
vhostHTTPPort80HTTP协议穿透端口仅HTTP类型必需
vhostHTTPSPort443HTTPS协议穿透端口仅HTTPS类型必需
remotePort自定义TCP/UDP协议穿透的公网访问端口仅TCP/UDP类型必需
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值