frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网
IP 节点的中转暴露到公网。
github 下载地址:github.com/fatedier/frp/releases
frp配置参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [common] bind_port = 7000 # 启用面板 dashboard_port = 7500 # 面板登录名和密码 dashboard_user = admin dashboard_pwd = xxxxxx # 使用http代理并使用80端口进行穿透 vhost_http_port = 80 # 使用https代理并使用443端口进行穿透 vhost_https_port = 443 # 日志路径 log_file = ./frps.log # 日志级别 log_level = info # 日志最大保存天数 log_max_days = 7 # 认证超时时间 authentication_timeout = 900 # 认证token,客户端需要和此对应 token=123123123 # 最大连接数 max_pool_count = 5 max_ports_per_client = 0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [common] bind_port = 7000 # 启用面板 dashboard_port = 7500 # 面板登录名和密码 dashboard_user = admin dashboard_pwd = xxxxxx # 使用http代理并使用80端口进行穿透 vhost_http_port = 80 # 使用https代理并使用443端口进行穿透 vhost_https_port = 443 # 日志路径 log_file = ./frps.log # 日志级别 log_level = info # 日志最大保存天数 log_max_days = 2 # 认证超时时间 authentication_timeout = 900 # 认证token,客户端需要和此对应 token=123123123 # 最大连接数 max_pool_count = 5 max_ports_per_client = 0
frpClient 1 2 3 4 5 6 7 8 9 10 11 12 [common] serverAddr = 127.0.0.1 serverPort = 7000 auth.method = "token" auth.token = "gKpsGx0AMSVRVjAVvo2Qa94kU81" [web] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 8080
frpServer 1 2 3 4 5 6 7 8 9 10 11 [common] bind_addr = 0.0.0.0 bindPort = 7000 auth.method = "token" auth.token = "gKpsGx0AMSVRVjAVvo2Qa94kU8" dashboard_addr = 0.0.0.0 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = "SuxqcRvNC2iknszYNpZmuxfrtp"
公网、内网服务器都下载一份。
找到第一条,然后下载 frp_windwos_amd64.zip 这个 (amd64 是 64 系统,386 是 32 位系统,现在电脑基本 64 位了),比如图片上的 frp_0.33.0_windows_amd64.zip
2、将 frp_0.33.0_windows_amd64.zip 解压至任意目录
3、进入解压目录这里所有 frpc 开头的文件都是客户端文件,所以全部删了,我们服务器只需要 frps 开头的文件
4、配置服务端(公网服务器) 我们打开 frps.ini(我用的 notepad++ 编辑器,记事本也可以) 注意配置文件不支持注释,请不要把汉字复制进去
1 2 3 [common] bind_port = 7000 #与客户端绑定的进行通信的端口 vhost_http_port = 6081 #访问客户端web服务自定义的端口号
保存然后打开 cmd 进入当前目录(cmd 不会用自行百度),输入:frps.exe -c ./frps.ini,此时会提示网络防火墙安全警告,点允许
提示 start frps success 则服务启动成功
警告:云服务器一定要开放端口,不会开放自行百度,图中的 7000 是 frp 绑定的默认端口要打开,另外一个是 http(用不到可以删了)
至此服务端配置完成! 5、配置客户端(内网服务器),首先删掉 frps 开头文件文件,然后再进行配置,编辑 frpc.ini 注意配置文件不支持注释,请不要把汉字复制进去
1 2 3 4 5 6 7 8 9 [common] server_addr = xx.xx.xx.xx #公网服务器ip server_port = 7000 #与服务端bind_port一致 [yclj] type = tcp local_ip = 127.0.0.1 local_port = 3389 # 3389是windows的远程连接端口 remote_port = 24567 # 远程服务器端口(自定义)
保存然后执行 windows 使用 cmd 或者 powershell 进入当前目录,执行
frpc.exe -c frpc.ini 6、访问方式 (1) 远程连接 windows bind_post 要绑定 3389,其他的不行 ip:xx.xx.xx.xx:24567 (这个是服务器开放的端口,映射本地的 3389)
三、结尾
客户端连接服务端提示访问被拒绝,则需要服务端开放防火墙端口(学习的话全开就行了,生产环境除外)。
示例代码 frpc.ini(客户端)frpc.exe -c frpc.ini 1 2 3 4 5 6 7 8 9 [common] server_addr = xx.xx.xx.xx server_port = 7000 [yclj] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 80
frps.ini(服务端)frps.exe -c frps.ini 1 2 3 [common] bind_port = 7000 vhost_http_port = 6081
frp 如何增加密码校验 FRP(Fast Reverse Proxy)可以通过以下几种方式增加密码校验:
1. 使用 Token 鉴权 FRP 支持通过 Token 进行身份验证。你需要在服务端(frps)和客户端(frpc)的配置文件中设置相同的 token 值。
服务端配置(frps.toml) :
toml
复制
1 2 3 4 5 6 7 8 9 10 11 12 13 [common] bind_port = 7000 auth.method = "token" auth.token = "your_secret_token" auth.method = "token" auth.token = "gKpsGx0AMSVRVjAVvo2Qa94kU8" dashboard_addr = 127.0 .0.1 dashboard_port = 7500 dashboard_user = admindashboard_pwd = "SuxqcRvNC2iknszYNpZmuxfrtp"
客户端配置(frpc.toml) :
toml
复制
1 2 3 4 5 6 7 8 [common] server_addr = x.x.x.xserver_port = 7000 auth.method = "token" auth.token = "your_secret_token" auth.method = "token" auth.token = "gKpsGx0AMSVRVjAVvo2Qa94kU8"
2. 使用 OpenID Connect (OIDC) 鉴权 FRP 也支持使用 OpenID Connect (OIDC) 进行身份验证。
服务端配置(frps.toml) :
toml
复制
1 2 3 4 5 [common] bind_port = 7000 auth.method = "oidc" auth.oidc.issuer = "https://example-oidc-issuer.com/" auth.oidc.audience = "https://oidc-audience.com/.default"
客户端配置(frpc.toml) :
toml
复制
1 2 3 4 5 6 7 8 [common] server_addr = x.x.x.xserver_port = 7000 auth.method = "oidc" auth.oidc.clientID = "your_client_id" auth.oidc.clientSecret = "your_client_secret" auth.oidc.audience = "https://oidc-audience.com/.default" auth.oidc.tokenEndpointURL = "https://example-oidc-endpoint.com/oauth2/v2.0/token"
3. 使用 BasicAuth 鉴权 如果你需要对 HTTP/HTTPS 代理进行密码校验,可以使用 BasicAuth 鉴权。
客户端配置(frpc.ini) :
ini
复制
1 2 3 4 5 6 7 8 [http] type = httplocal_port = 80 remote_port = 8080 use_encryption = true use_compression = true http_user = adminhttp_passwd = 123456
服务端配置(frps.ini) :
ini
复制
1 2 [common] bind_port = 7000
4. 使用签名验证 在某些高级场景中,可以通过签名验证来保护配置文件不被篡改。例如,通过计算配置文件的 MD5 值并进行验证,但这种方法需要结合额外的工具或脚本实现。
5. 使用 TLS 双向认证 虽然 TLS 双向认证主要用于加密通信,但也可以通过证书来验证客户端和服务端的身份。
服务端配置(frps.toml) :
toml
复制
1 2 3 transport.tls.certFile = "/path/to/server.crt" transport.tls.keyFile = "/path/to/server.key" transport.tls.trustedCaFile = "/path/to/ca.crt"
客户端配置(frpc.toml) :
toml
复制
1 2 3 transport.tls.certFile = "/path/to/client.crt" transport.tls.keyFile = "/path/to/client.key" transport.tls.trustedCaFile = "/path/to/ca.crt"
根据你的需求选择合适的密码校验方式,并按照上述配置进行设置即可。