Total Pageviews

5,613,434

Monday, 14 February 2022

Plug2Proxy

由出口服务器插入入口服务器实现流量代理的小工具。

注意!这玩意儿不适合普通科学上网场景。

由出口服务器主动连接入口服务器实现流量代理的小工具,需要出口服务器能直连入口服务器。

特性

  • 出口服务器无需暴露端口。
  • 出口服务器挂了不需要修改入口服务器配置。

我主要是打算用于零散的服务器下载加速,因为长时间不上,很可能上面的科学上网配置已经失效了。

用例

需安装 Node.js 较新版本,我用的 16。可使用 pm2 启动。

npm install --global plug2proxy

入口

plug2proxy in.p2p.js

配置文件 in.p2p.js,详见 in/server.tsin/proxy.ts

const FS = require('fs');

module.exports = {
  mode: 'in',
  server: {
    password: '12345678',
    listen: {
      // 这是给代理出口连的端口。
      port: 8001,
    },
    http2: {
      // 可使用 acme.sh 等工具生成。
      cert: FS.readFileSync('server.crt'),
      key: FS.readFileSync('server.key'),
    },
  },
  proxy: {
    listen: {
      // 这是给终端连的。
      host: '127.0.0.1',
      port: 8000,
    },
  },
};

出口

plug2proxy out.p2p.js

配置文件 out.p2p.js,详见 router.tsout/client.ts

module.exports = {
  mode: 'out',
  router: {
    rules: [
      {
        type: 'geoip',
        match: 'CN',
        route: 'direct',
      },
      {
        type: 'ip',
        match: 'private',
        route: 'direct',
      },
    ],
    fallback: 'proxy',
    // MaxMind GeoLite2(Country)配置,用于 geoip 规则。
    geolite2: {
      // https://support.maxmind.com/hc/en-us/articles/4407111582235-Generate-a-License-Key
      licenseKey: '...',
    },
  },
  clients: [
    {
      password: '12345678',
      connect: {
        // 入口服务器连接参数。
        authority: 'https://localhost:8001',
      },
    },
  ],
};

路线图

  • P2P 连接。
from https://github.com/vilic/plug2proxy

No comments:

Post a Comment