Skip to content

Instantly share code, notes, and snippets.

@NullPointerMaker
Created January 11, 2021 16:09
Show Gist options
  • Save NullPointerMaker/0323a15e968a40d5c6ca514f442d6ade to your computer and use it in GitHub Desktop.
Save NullPointerMaker/0323a15e968a40d5c6ca514f442d6ade to your computer and use it in GitHub Desktop.
动态路由分流系统

系统对外是全局代理。

Socks/HTTP 代理

IP 请求

若在忽略列表中则直连,否则查询 IP 位置:
若为境内 IP 则直连, 否则查询 IP 是否已在代理列表中:
若 IP 在列表中则远程代理,否则直连,等待直连结果:
若直连正常返回则结束,否则尝试远程代理:
若远程代理断开或重置则结束,否则将此 IP 添加进入代理列表。

域名请求

本地解析

若 IP 在忽略列表中则直连,否则查询 IP 位置:
若为境内 IP 则直连, 否则查询 IP 是否已在代理列表中:
若 IP 在列表中则远程代理(远程解析域名),否则直连,等待直连结果:
若直连正常返回则结束,否则尝试远程代理(远程解析域名):
若远程代理断开或重置则结束,否则将此被污染的 IP 添加进入代理列表。

远程解析

若在忽略列表中则直连,否则查询域名是否在 GeoSite 数据库 cngeolocation-!cn@cn 规则列表中:
若为境内域名则直连, 否则查询域名是否已在代理列表中:
若域名在列表中则远程代理,否则直连,等待直连结果:
若直连正常返回则结束,否则尝试远程代理:
若远程代理断开或重置则结束,否则将此域名添加进入代理列表。

透明代理

路由表

设置路由表:忽略列表直连,代理列表远程代理,境内路由直连,其余路由透明代理。
尝试直连,等待直连结果:
若直连正常返回则结束,否则尝试远程代理:
若远程代理断开或重置则结束,否则将此 IP 添加进入代理路由表,根据用户设置决定是否持久存入代理列表。

内部路由

若在忽略列表中则直连,否则查询 IP 位置:
若为境内 IP 则直连, 否则查询 IP 是否已在代理列表中:
若 IP 在列表中则远程代理,否则直连,等待直连结果:
若直连正常返回则结束,否则尝试远程代理:
若远程代理断开或重置则结束,否则将此 IP 添加进入代理列表。

DNS 污染

透明代理只有 IP 路由。需要另行解决 DNS 污染:

GeoIP/CHNRoutes

ChinaDNS
SmartDNS

GeoSite

对于不在 cngeolocation-!cn@cn 规则列表中的域名进行远程解析。

Fake IP

RFC3089
用户 DNS 查询请求返回 Fake IP 并记录对应域名,用户通过 Fake IP 请求建立连接。
系统根据 Fake IP 查到对应域名,封装成为本地代理请求进行域名路由。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment