基本框架

VPS节点功能.pdf

主要功能

  1. 利用VPS宽带拨号获取的公网IP提供代理IP服务.
  2. 插件运行后,一旦VPS连接网络,主动连接至服务端,服务端存储IP地址,宽带账号,上线时间,MAC地址,VPS名称信息,省份,城市,服务器节点名称;
  3. 然后由服务端通过多个端口转发到具体的VPSIP地址,即:隧道代理
  4. 如服务端公网IP:1.1.1.1
  5. 代理IP:1.1.1.1:10001-->指向其中一个VPSIP地址:111.111.111.1
  6. 代理IP:1.1.1.1:10002-->指向其中一个VPSIP地址:111.111.112.2
  7. 客户使用必须使用白名单才允许访问。

信息收集/编辑/API

  1. 收集VPS的信息 并存储字段如下 | IP地址 | VPS名称 | 拨号口MAC | 宽带账号 | 省份 | 城市 | 上线时间 | 离线时间 | 代理端口 | 最大速率 | 是否活跃 | | —- | —- | —- | —- | —- | —- | —- | —- | —- | —- | —- | | ipAddr | vpsname | mac | adslname | province | city | conntime | disctime | proxyPort | rateLimit | active |

注意:
情况1,如果VPS宽带重拨直接更新数据库对应的IP地址即可。
情况2,如果VPS更换了宽带,则更新数据库对应的宽带账号
情况3,如获取省份城市VPS名称时被访问的API可能会压力过大,因为有些VPS拨号的频率太大。

  1. 提供API用于设定某一台VPS所获取IP地址的最大可利用的速率。(字段参数自定)
  2. 提供API用于删除某一个IP地址(VPS)(字段参数自定)
  3. 提供API用于获取可用的IP地址,如province=12&count=100 则返回省份为12的可用IP地址+端口,数量100个

    如province=0&count=100 则随机返回100个可用IP地址,如province=12&city=2&count=100 则返回 指定城市的100个可用IP。
    数据返回格式:
    1.1.1.1:10001
    1.1.1.1:10003
    1.1.1.1:10010

  4. ~~执行任意命令行命令: ~~(取消)

  5. 提供API用于(卸载/停止)/重启客户端服务(之前本打算执行自定义命令来停止或者卸载客户端)(字段参数自定)
  6. VPS离线时,标记对应数据库IP地址不可用
  7. 提供白名单添加API

    数据库存储白名单 字段至少包含如下:

网站用户名 白名单IP 添加时间 失效时间 添加人 添加人的IP地址 编辑时间
username whiteip addtime expiertime admin opipaddr edittime
  1. 提供API用地修改白名单IP(字段参数自定)
  2. 提供API用于删除白名单(字段参数自定)
  3. 客户端生成的访问日志发送到ELK

日志发送协议使用TCP 如tcp:XXX.LOG.CN:5555 直接发送JSON数据即可;(真实地址稍晚提供)
字段如下:

日志类型(固定值) 用户地址(IP+端口) 宽带地址(IP+端口) 访问的目的IP+端口/URL 宽带拨号设备MAC地址 系统版本/windows/linux 时间戳(2020-05-06 23:00:02)
type userAddr adslAddr targetAddr mac os timestamp
  1. {
  2. "type":"proxy-log", //固定字段,固定值,不能修改
  3. "userAddr":"114.104.173.66:2365",
  4. "adslAddr":"2.2.2.2:5565",
  5. "targetAddr":"https://www.baidu.com",
  6. "timestamp":"2022-05-16 23:20:20",
  7. "mac":"00:11:22:33:55:66",
  8. "os":"linux"
  9. }

注意:每一条发送的日志JSON字符串末尾加上换行符”\r\n”