Skip to content

Instantly share code, notes, and snippets.

@NullPointerMaker
Created January 11, 2021 16:09
Show Gist options
  • Select an option

  • Save NullPointerMaker/0323a15e968a40d5c6ca514f442d6ade to your computer and use it in GitHub Desktop.

Select an option

Save NullPointerMaker/0323a15e968a40d5c6ca514f442d6ade to your computer and use it in GitHub Desktop.

Revisions

  1. NullPointerMaker created this gist Jan 11, 2021.
    47 changes: 47 additions & 0 deletions DynamicRoutingSystem.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,47 @@
    系统对外是全局代理。

    ## Socks/HTTP 代理
    ### IP 请求
    若在忽略列表中则直连,~~否则查询 IP 位置:~~
    ~~若为境内 IP 则直连,~~ 否则查询 IP 是否已在代理列表中:
    若 IP 在列表中则远程代理,否则直连,等待直连结果:
    若直连正常返回则结束,否则尝试远程代理:
    若远程代理断开或重置则结束,否则将此 IP 添加进入代理列表。
    ### 域名请求
    #### 本地解析
    若 IP 在忽略列表中则直连,~~否则查询 IP 位置:~~
    ~~若为境内 IP 则直连,~~ 否则查询 IP 是否已在代理列表中:
    若 IP 在列表中则远程代理(远程解析域名),否则直连,等待直连结果:
    若直连正常返回则结束,否则尝试远程代理(远程解析域名):
    若远程代理断开或重置则结束,否则将此被污染的 IP 添加进入代理列表。
    #### 远程解析
    若在忽略列表中则直连,~~否则查询域名是否在 GeoSite 数据库 `cn``geolocation-!cn@cn` 规则列表中:~~
    ~~若为境内域名则直连,~~ 否则查询域名是否已在代理列表中:
    若域名在列表中则远程代理,否则直连,等待直连结果:
    若直连正常返回则结束,否则尝试远程代理:
    若远程代理断开或重置则结束,否则将此域名添加进入代理列表。

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

    ### DNS 污染
    透明代理只有 IP 路由。需要另行解决 DNS 污染:
    #### GeoIP/CHNRoutes
    ChinaDNS
    SmartDNS
    #### GeoSite
    对于不在 `cn``geolocation-!cn@cn` 规则列表中的域名进行远程解析。
    #### Fake IP
    [RFC3089](https://tools.ietf.org/rfc/rfc3089)
    用户 DNS 查询请求返回 Fake IP 并记录对应域名,用户通过 Fake IP 请求建立连接。
    系统根据 Fake IP 查到对应域名,封装成为本地代理请求进行域名路由。