前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用frp搭建内网穿透、TCP/UDP代理、http/https代理、Socks5代理?

如何使用frp搭建内网穿透、TCP/UDP代理、http/https代理、Socks5代理?

作者头像
Power
发布2023-05-25 09:39:17
8.1K0
发布2023-05-25 09:39:17
举报
文章被收录于专栏:源码库

frp介绍

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp

1.原理

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。

用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。

2.代理

在 frp 中一个代理对应一个需要暴露的内网服务。一个客户端支持同时配置多个代理。frp 支持多种代理类型来适配不同的使用场景。

相关文档

https://gofrp.org/docs/concepts/

frp使用

1.安装

根据操作系统类型下载对应的可执行文件:https://github.com/fatedier/frp/releases,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。

编写配置文件,先通过 ./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。

2.配置文件

相关文档:https://gofrp.org/docs/features/common/configure/

3.身份认证

相关文档:https://gofrp.org/docs/features/common/authentication/

目前 frpc 和 frps 之间支持两种身份验证方式,token 和 oidc,默认为 token。

通过 frpc.ini 和 frps.ini 的 [common] 段落中配置 authentication_method 来指定要使用的身份验证方式。

只有通过身份验证的客户端(frpc)才能成功连接 frps。

4.通过自定义域名访问内网的 Web 服务

服务端定义一个虚拟主机端口,IP:端口,通过不同的解析到该IP的域名,触发客户端的不同的服务:

代码语言:javascript
复制
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com

[web2]
type = http
local_port = 8080
custom_domains = www.yourdomain2.com

将 www.yourdomain.com 和 www.yourdomain2.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。

通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上 80 端口的服务,访问 http://www.yourdomain2.com:8080 则访问到内网机器上 8080 端口的服务。

5.更多

相关文档:https://gofrp.org/docs/features/common/

搭建代理

默认情况下,frpc 只会转发请求到本地 TCP 或 UDP 端口,也就是通过 local_ip 和 local_port 指定的本地服务地址。

通过客户端插件的功能将一些简单的本地服务内置在 frpc 中,可以帮助用户在只启动 frpc 的情况下实现原本需要额外启动其他服务才能实现的功能。

在每一个代理的配置中,通过 plugin 指定需要使用的插件,插件的配置参数都以 plugin_ 开头。当启用客户端插件后,local_ip 和 local_port 不再需要配置。

客户端插件可以被应用在任意类型的代理中,但是需要插件本身的协议能够支持。例如静态文件访问插件可以通过 TCP 或者 HTTP 的代理暴露出去。

相关文档:https://gofrp.org/docs/features/common/client-plugin/ 

1.frpc

搭建代理IP需要在客户端配置,需要在服务器上面同时启用frps、frpc。

Guzzle 使用socks5代理IP:

代码语言:javascript
复制
$client = new Client([
    'proxy' => "socks5://1.15.101.31:5730",
    'verify' => false,
    'curl' => [
        CURLOPT_PROXYUSERPWD => 'anxin:123'
    ]
]);

Curl命令行使用scoks5代理IP:

代码语言:javascript
复制
curl -x socks5://1.15.101.31:5730 https://www.baidu.com

PHP Curl使用socks5代理:

代码语言:javascript
复制
$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = 'socks5://127.0.0.1:8888';
$proxyauth = 'user:password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

window设置:

代码语言:javascript
复制
http://socks=1.15.155.21
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • frp介绍
    • 1.原理
      • 2.代理
      • frp使用
        • 1.安装
          • 2.配置文件
            • 3.身份认证
              • 4.通过自定义域名访问内网的 Web 服务
                • 5.更多
                • 搭建代理
                  • 1.frpc
                  相关产品与服务
                  云服务器
                  云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档