FRP内网穿透

FRP 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网,这样没有公网IP的用户也能将内网服务暴露到公网了,速率由内网穿透服务器带宽和家庭宽带上传速率共同决定。

frpc是客户端,frps是服务端,一般没必要自建服务端,都是用第三方服务端,这里推荐 afrp,号称永久免费,香港节点很快

文档

这里记录一下 docker版frpc 的通用安装教程:

  1. 拉取frpc镜像
1
docker pull ghcr.io/fatedier/frpc:v0.61.2
  1. 运行frpc容器,将容器内frpc的配置文件目录/etc/frp映射到本地/frp目录
1
docker run --name frpc --net=host --restart=always -v /frp:/etc/frp --entrypoint /usr/bin/frpc -c /etc/frp/frpc.toml -d frpc:v0.61.2
  1. 创建配置文件frps.toml,配置文件详解:配置文件 | frpfrpc.toml 详解 - aFrp 文档

配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
serverAddr = "hk1.afrp.net" # FRP服务器域名,自定义域名 CNAME 需要解析到该地址
serverPort = 7000 # FRP服务器端口
user = "xdog" # 你的用户名,不能和别人重复

auth.method = "token" # FRP服务器验证方式
auth.token = "afrp.net" # 令牌

webServer.addr = "0.0.0.0" # dashboard 管理后台,默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0
webServer.port = 7400 # dashboard 管理后台端口
webServer.user = "admin" # dashboard 管理后台用户名,可选,默认为空
webServer.password = "password" # dashboard 管理后台密码,可选,默认为空

# 内网穿透服务1
[[proxies]]
name = "nav" # 内网穿透服务别名
type = "http" # 传输协议,需要内网穿透的网站是什么协议就用什么
localIP = "127.0.0.1" # 需要内网穿透服务网站的内网IP
localPort = 666 # 需要内网穿透服务网站的内网端口
customDomains = ["nav.xdog.top"] # 自定义域名

# 内网穿透服务2
[[proxies]]
name = "twikoo"
type = "https" # 需要把本地服务设置为 https://127.0.0.1:777/,本地访问时浏览器会报不安全
localIP = "127.0.0.1"
localPort = 777
customDomains = ["twikoo.xdog.top"]

# 内网穿透服务3 使用 https2http 插件将本地 HTTP 服务转换为 HTTPS 服务,并自动将HTTP跳转到HTTPS,且本地也可通过 http://127.0.0.1:888/ 正常访问
[[proxies]]
name = "twonav"
type = "https"
customDomains = ["twonav.xdog.top"]

[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:888"
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"

crtPath = "/etc/frp/ssl/fullchain.pem" # 内网穿透服务3的 SSL证书
keyPath = "/etc/frp/ssl/privkey.pem" # 内网穿透服务3的 SSL证书密钥