Top Menu

如何用家里的服务器作为检测节点

国外的检测节点很容易获得,但是国内的就比较难,原因在于国内接入需要备案,但是如果仅仅是自用的话,其实家里的服务器也可以用来作为检测节点。

目前已知最新的阻断方式是针对特定端口的,所以传统的Ping测试或针对80的TCP检测都已经失效。

下面就如何在家用服务器上配置检测节点进行说明

主要内容如下

  • 使用FRP进行内网穿透
  • 设置目标服务器的返回内容
  • 配置本地检测服务

使用FRP进行内网穿透

家用服务器有一个特点就是通常在防火墙后端,为了安全考虑,并不建议在防火墙上开启UPNP或DMZ,因为不可控因素太多。所以在不对防火墙进行任何修改的前提下,就要使用FRP进行安全的内网穿透。

FRP使用说明

FRP的使用在官方文档已有详细说明,我们首先需要一台主机配置并运行FRPS,然后在本地服务器上配置并运行FRPC,FRP是二进制文件,无需安装,下载后即可使用。

FRP的核心是配置文件,下面的[required]需要替换为实际内容

FRPS.ini

记得在服务器的UFW打开对应7000端口,因为这里用了http的端口复用,所以只需要开一个7000端口就可以,管理和通信都是用的7000端口。

subdomain_host用于给frp服务指定独立的域名,这样在服务端apache反代的时候才可以区分frp流量

FRPC.ini

host_header_rewrite用于在本地apache反代时区分穿透流量,如果使用tcp协议+端口,则无需这行

完成后,在客户端frpc所在目录新建一个frpc_run.sh,在服务端新建一个frps_run.sh

frpc_run.sh

frps_run.sh

并赋予这两个文件和frp执行文件744权限,

运行frps和frpc

在服务器和客户端分别运行frps_run.sh和frpc_run.sh

接着在服务器端的apache中新建一个反代站点,域名就是配置文件中设置的frp域名,反代目标为本地7000端口

通过绑定的域名访问,如果没有在本地为frp流量建立站点,那么访问后就会显示apache的默认站点,就说明配置完成了

接着在本地的apache中新建一个反代站点,域名是frpc设置的host_header_rewrite,反代目标就是本地的检测服务地址

设置目标服务器的返回内容

因为检测服务需要一个内容反馈来判断是否访问成功,所以需要在目标服务器上配置内容反馈。

SSR服务内置了一个默认反馈内容的配置项

把这个配置项开启后,所有对SSR的普通访问都会返回设置的网站内容,也就满足了我们需要的检测返回内容的功能。

配置本地检测服务

完成了检测通道和返回内容的配置,接下来就是本地服务器上的后台服务了,可以用很多方法来实现,主要的功能就是将frp传来的请求分析出地址并对地址进行访问,并将访问的返回结果反馈给frp来源。

这里以php举例,使用了guzzlehttp/guzzle插件

test_tcp_request.php

请求地址:

http://subdomain.subdomain_host/test_tcp_request.php?url=baidu.com

http://subdomain.subdomain_host/test_tcp_request.php?url=google.com

返回值:

接着就可以在服务器端调用这个检测节点的API接口了。

一般调用的流程如下

请求:http://subdomain.subdomain_host/test_tcp_request.php?url=节点地址:服务端口

返回:code=0异常,code=200正常。

There are no comments yet

  • Hello, guest

Powered by WordPress. Designed by WooThemes