Loading... ## 准备 首先从 GitHub 的 [Release](https://github.com/fatedier/frp/releases) 页面中下载最新版本的客户端和服务器二进制文件。所有文件都打包在一个压缩包中,还包含了一份完整的配置参数说明。 接着: 1. 解压下载的压缩包。 2. 将 `frpc` 复制到内网服务所在的机器上。 3. 将 `frps` 复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。 ## frpc部署 我这里将frpc文件的相关文件保存在了:`/usr/local/frpc`文件夹中。 1. **创建 frps.service 文件** 使用文本编辑器 (如 nano) 在 `/etc/systemd/system` 目录下创建一个 `frpc.service` 文件,用于配置 frpc 服务。 ``` nano /etc/systemd/system/frpc.service ``` **写入内容** ``` [Unit] # 服务名称,可自定义 Description = frpc After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml [Install] WantedBy = multi-user.target ``` 2. **使用 systemd 命令管理 frpc 服务** ``` # 启动frp systemctl start frpc # 停止frp systemctl stop frpc # 重启frp systemctl restart frpc # 查看frp状态 systemctl status frpc ``` 3. **设置 frpc 开机自启动** ``` systemctl enable frpc ``` 4. **配置frpc.toml,以下是frpc.toml的详细配置参考,包含常见的各种type服务类型:** 服务器连接配置 ```toml # frp服务端的地址,可以是IP或域名 serverAddr = "frps.example.com" # frp服务端的监听端口 serverPort = 7000 # 鉴权方式,通常为token auth.method = "token" # 与服务端一致的鉴权token auth.token = "your_token" # 客户端的唯一标识,避免与其他用户重复 user = "your_username" ``` HTTP服务配置 ```toml [[proxies]] name = "web_http" # 代理名称,需唯一 type = "http" # 代理类型为HTTP localIP = "192.168.1.100" # 本地服务的IP地址 localPort = 80 # 本地服务的端口号 # 自定义域名,可解析到frps服务器的域名或IP customDomains = ["yourdomain.com"] # 可选,访问服务时的用户名密码认证 httpUser = "admin" httpPwd = "password" ``` HTTPS服务配置 ```toml [[proxies]] name = "web_https" type = "https" localIP = "192.168.1.100" localPort = 443 customDomains = ["yourdomain.com"] # HTTPS服务的证书文件路径,若使用frps的TLS需正确配置 certificatePath = "/path/to/your/certificate.crt" privateKeyPath = "/path/to/your/private.key" ``` TCP服务配置 ```toml [[proxies]] name = "ssh_tcp" type = "tcp" localIP = "192.168.1.100" localPort = 22 # 映射到frps服务器的远程端口,可通过该端口访问本地服务 remotePort = 6000 ``` UDP服务配置 ```toml [[proxies]] name = "dns_udp" type = "udp" localIP = "192.168.1.100" localPort = 53 # 若不指定remotePort,则由frps自动分配 remotePort = 8000 ``` 多个服务复用一个域名的HTTP配置 ```toml [[proxies]] name = "web1_http" type = "http" localIP = "192.168.1.101" localPort = 80 # 使用path来区分不同的服务 locations = ["/web1/*"] customDomains = ["yourdomain.com"] [[proxies]] name = "web2_http" type = "http" localIP = "192.168.1.102" localPort = 80 locations = ["/web2/*"] customDomains = ["yourdomain.com"] ``` STCP(内网穿透到特定IP和端口)服务配置 ```toml [[proxies]] name = "stcp_example" type = "stcp" localIP = "192.168.1.100" localPort = 3306 # 指定frps服务器上用于监听该服务的端口和IP remoteAddr = "127.0.0.1:6001" ``` XTCP(增强型内网穿透)服务配置 ```toml [[proxies]] name = "xtcp_example" type = "xtcp" localIP = "192.168.1.100" localPort = 5500 # frps服务器上用于监听的端口 remotePort = 7000 # 可选,设置该选项后,客户端连接到frps的地址必须为frps服务器的地址 bindAddr = "frps.example.com" ``` PCDN(内容分发网络)服务配置 ```toml [[proxies]] name = "pcdn_example" type = "pcdn" localIP = "192.168.1.100" localPort = 8080 # 自定义域名,客户端通过该域名访问服务 customDomains = ["pcdn.yourdomain.com"] # 指定客户端访问服务时的协议,可为http或https protocol = "http" # 可选,设置为true时,frpc会定期向frps发送心跳包,保持连接活跃 heartbeat = true ``` Socks5代理服务配置 ```toml [[proxies]] name = "socks5_example" type = "socks5" localIP = "127.0.0.1" localPort = 1080 # 映射到frps服务器的远程端口 remotePort = 8080 # 可选,设置用户名密码认证 socks5User = "user" socks5Pwd = "password" ``` 其他通用配置项 ```toml # 全局代理的其他配置文件包含路径 includes = ["./other_config/*.toml"] # 客户端的元数据,可用于服务端的访问控制等 metadatas.var1 = "abc" metadatas.var2 = "123" # 是否启用TLS加密,若服务端支持TLS可启用以加密传输数据 tls.enable = true tls.certFile = "/path/to/client_cert.crt" tls.keyFile = "/path/to/client_key.key" # 日志配置 log.to = "./frpc.log" log.level = "info" log.maxDays = 3 # 健康检查配置 healthCheck.type = "tcp" # 或http healthCheck.timeoutSeconds = 3 healthCheck.maxFailed = 3 healthCheck.intervalSeconds = 10 # 带宽限制配置 transport.bandwidthLimit = "1MB" # 限制代理的带宽 transport.bandwidthLimitMode = "client" # 限制带宽的位置 # 加密与压缩配置 transport.useEncryption = false transport.useCompression = false # TCPmux配置 transport.tcpMux = true transport.tcpMuxKeepaliveInterval = 60 ``` 最后修改:2025 年 06 月 02 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏