Frp知识:客户端通过服务端上网的说明|Frp没有正向代理功能
- 2023-03-08
- 1308
- 飞驰的心
Frp是什么,怎么配置这类基础问题自己去搜,网上成篇累牍的教程本文不再赘述,如果你遇到下面这个棘手的问题,那么我们可以一起讨论一下:
前提:Frp穿透完成,你在内网发布了网站,网站也能被公网用户正常访问;
问题:如果你做小程序开发、公众号开发、或者调用某些第三方api的时候,对方往往会要求你设置一个IP白名单(对方出于安全考虑仅仅白名单内的IP进行通信)。这时候Frp的兄弟就抓瞎了(如果有固定的公网IP还搞什么Frp呢)……
Frp目前解决的是外网穿透至内网,使你内网的服务可以通过Frp发布出来;简单地说就是:外 to 内 (反向代理)
而你内网web应用如果调用第三方api的时候(也就是内网对外联网请求数据),仍然走的是本地网络连接,你是无法通过Frp服务端的IP连接互联网的。(正向代理),这时候api的运营方如果检测你的ip的话,人家检测到了仍然是你本地内网的出口ip(不是Frp服务器端的固网ip),如果api方要求添加ip白名单,我看你拿啥给人添。
我翻遍了互联网,Frp好像没有正向代理的功能,偶尔有一个篇提起Frp正向代理的文章,说的也含含糊糊。于是我花了一上午时间彻彻底底把官网例子看了一遍。
官方提供的Frp软件本身是集成有http代理和socket服务的,调试也不难,但是但是但是,你可千万别理解错了,至少我之前就理解错了,以为:在服务端配置好http代理或soceet5以后,客户机就能使用服务端的出口进行上网,其实不是这样的。和咱理解的刚好相反……
服务端正常配置完以后,http代理和socket主要是在客户端的ini中配置,配置完以后:通过第三方的代理软件连接服务端的IP+端口,就可能以http代理或socket的方式进入内网(折腾了半天还是外进内),唉……
结论:如果你有通过服务器外连上网的需求,你也就别有什么幻想了,乖乖的——
1、在Frp服务端(公网服务端)再架设一个正向代理服务(也就是传统意义的代理服务器)。
2、在Frp客户端(也就是内网)装一个全局代理服务(Proxifier),然后本地(内网)的所有外连请求都会从公网IP发出。
附:为什么要装这个Proxifier软件,因为它是一个全局代理软件,如果不装你只能设置你的浏览器走代理,装上以后,你这个计算机上的所有联网请求都会走代理(这就是全局的意思)。
附2:常用配置模板,这是更实用的配置,可不是网上那种千篇一律抄来抄去的模板
#服务端配置项 [common] bind_port = 7000 bind_udp_port = 7001 token = 与客户端对应的连接密码 tcp_mux = true allow_ports = 80,443,8000,14330 #需要开多少个对外服务端口在这里设置 vhost_http_port = 80 #虚拟主机专用配置:有了它你才可以在客户端根据域名区分,将不同的网站转发至不同的内网ip上 vhost_https_port = 443 #ui管理界面设置 use_compression = true dashboard_addr = 0.0.0.0 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = admin #日志 log_file = ./log/frps.log log_level = info log_max_days = 3 #可以设置一个404页,如果客户端没有启动或连接失败,会触发这个页面 custom_404_page = ./page/404.html
#客户端配置项 [common] server_addr = 外网服务端ip server_port = 7000 token = 与服务端的连接密码 use_compression = true log_file = ./log/frpc_124.log log_level = info log_max_days = 3 #管理ui的配置项 admin_addr = 192.168.1.70 admin_port = 7401 admin_user = admin admin_pwd = 123456 #虚拟主机设置:根据不同的域名转发至不同的内网服务器 [web_home] type = http local_port = 80 local_ip = 192.168.1.98 custom_domains = demo.fvce.com,home.fvce.com #虚拟主机设置:其他域名转发至另外的服务器中 [http] type = http local_ip = 192.168.1.72 local_port = 80 custom_domains = * #证书类网站也可以区别转发 [https] type = https local_ip = 192.168.1.72 local_port = 443 custom_domains = *
评论
全部评论
共{{commentCount}}条{{rs.Msg_Content}}