小天才
小天才
Published on 2025-04-01 / 7 Visits
0
0

Frp内网穿透

迁移服务器重装frps,将老版本ini配置文件改为toml配置文件。

https://gofrp.org/zh-cn/

https://www.cnblogs.com/nenhall/p/18686946

安装frps

frps服务端需要一台有公网ip的机器,本帖以阿里云ECS,需在防火墙开放服务监听端口。

下载frp

根据服务器处理器架构下载最新软件包并解压到/opt/frp

cd /opt
wget https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
tar -zxvf frp_0.61.2_linux_amd64.tar.gz
mv frp_0.61.2_linux_amd64 frp
rm -rf frp_0.61.2_linux_amd64.tar.gz

配置文件

最新版本已经不建议.ini配置,下述使用toml配置文件示例

vi /opt/frp/frps.toml

bindAddr = "0.0.0.0"
bindPort = 1234

# auth
auth.method = "token"
auth.token = "1234"

# Dashboard
webServer.addr = "0.0.0.0"
webServer.port = 6000
webServer.user = "1234"
webServer.password = "1234"

# log
log.to="./frps.log"
log.level = "trace"
log.maxDays = 3

启动脚本

简单写一个shell脚本控制frps的启停。使用vi创建并编辑run.sh脚本,随后chmod授权脚本。使用方式如下:

  • 启动 /opt/frp/run.sh start

  • 停止 /opt/frp/run.sh stop

  • 重启 /opt/frp/run.sh restart

vi /opt/frp/run.sh
chmod 755 /opt/frp/run.sh
#!/bin/bash

frps_start() {
    nohup /opt/frp/frps -c /opt/frp/frps.toml >/dev/null 2>&1 &
    echo -e "\033[32m frps start complete. \033[0m"
}

frps_stop() {
    killall frps
    echo -e "\033[32m frps stop complete. \033[0m"
}

main() {
    case "$1" in
    "start")
        frps_start
        ;;
    "stop")
        frps_stop
        ;;
    "restart")
        frps_stop
		frps_start
        ;;
    *)
        echo -e "\033[31m Unknown parameter: $1 \033[0m"
        return 1
        ;;
    esac
}

main "$@"

使用frpc

k2p路由器frpc版本为0.21.0,R3G路由器frpc版本0.42.0。经测试可以使用,老版本使用的ini配置文件,提供个toml格式的配置示例:

serverAddr = "120.24.1.53"  # 服务端的 IP 地址,客户端连接的目标地址
serverPort = 7000             # 服务端的监听端口,客户端通过此端口连接服务端
loginFailExit = true          # 登录失败时是否退出客户端,true 表示登录失败则退出

#log.to = "./frpc.log"        # 日志输出路径,注释掉表示不启用文件日志输出
log.level = "trace"           # 日志级别,trace 表示记录所有日志信息,包括调试信息
log.maxDays = 3               # 日志文件保留的最大天数

auth.method = "token"         # 鉴权方法,此处使用 token 方式进行身份验证
auth.token = "123456"  # 鉴权 token,客户端需要使用此 token 才能连接到服务端

transport.dialServerTimeout = 60  # 连接服务端的超时时间(单位:秒)

webServer.addr = "127.0.0.1"  # Web 服务器的绑定地址,仅监听本地访问
webServer.port = 7400          # Web 服务器的监听端口,用于访问 Web 管理界面
webServer.user = "admin"       # Web 管理界面的用户名
webServer.password = "admin"   # Web 管理界面的密码

# 定义代理服务,用于将本地服务暴露到公网
[[proxies]]
name = "django"               # 代理服务的名称
type = "http"                 # 代理类型,此处为 HTTP 代理
localIP = "127.0.0.1"         # 本地服务的 IP 地址
localPort = 8000              # 本地服务的端口
subdomain = "api"             # 子域名,通过 <subdomain>.<subdomainHost> 访问服务

[[proxies]]
name = "webui"                # 另一个代理服务的名称
type = "http"                 # 代理类型,此处为 HTTP 代理
localIP = "127.0.0.1"         # 本地服务的 IP 地址
localPort = 7860              # 本地服务的端口
subdomain = "webui"           # 子域名,通过 <subdomain>.<subdomainHost> 访问服务


Comment