V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vkx222
V2EX  ›  DNS

防 DNS 投毒不影响国内 CDN 加速的智能 SOCKS5 软件

  •  
  •   vkx222 · 2014-07-30 12:16:08 +08:00 · 7565 次点击
    这是一个创建于 3773 天前的主题,其中的信息可能已经有所发展或是发生改变。
    0. 提供SOCKS5代理和仅支持CONNECT的HTTP代理功能.
    1. 防止墙的投毒功能(需要开启或添加一个位于墙外的Other dns)
    2. 软件本身现在还没有科学上网功能,需要指定后端代理(配置界面的Proxy backend)才可能有智能科学上网功能.
    3. 如果没有指定后端代理那么本软件就是一个普通的SOCKS5代理,最早是用来这样(宿舍IPv6 <---> IPv6实验室 <---> 外网)免费上外网的,具有IPv4和IPv6的相互转发功能
    4. 内存和CPU占用率很低,IOCP模型,绑定非127.0.0.1时可以供一定规模的用户使用.

    注意: 某些地区可能由于线路问题开启位于墙外的DNS后可能解析速度变慢, 如果有后端代理可以关闭所有Other dns仍能正常工作.

    具体配置说明参考图片。
    http://autorouteproxy.tk/dlfiles/1.png
    http://autorouteproxy.tk/dlfiles/2.png
    第 1 条附言  ·  2014-07-30 14:17:47 +08:00
    更详细的说明如下
    0. 提供SOCKS5代理和仅支持CONNECT的HTTP代理功能.
    1. 防止墙的投毒功能(需要开启或添加一个位于墙外的Other dns).
    2. 软件本身现在还没有科学上网功能,需要指定后端代理(配置界面的Proxy backend)才可能有智能科学上网功能. 对于墙外的网站可以一直使用后端代理或者检测到被墙后才使用代理(选中Detect whether need proxy to visit target host).
    3. 有DNS缓存和异步查询,DNS查询过程中不影响其它连接的速度.
    4. 列表显示网站域名的情况: 是否位于墙外,IP是否被封,域名是否被污染,是否TCP阻断.
    5. 如果没有指定后端代理那么本软件就是一个普通的SOCKS5代理,最早是用来这样(宿舍IPv6 <---> IPv6实验室 <---> 外网)免费上外网的,具有IPv4和IPv6的相互转发功能.
    6. 检测DNS投毒的IP列表,网站是否位于墙外是否被墙等数据均自动生成并更新,不需要手动添加或网络更新.
    7. 内存和CPU占用率很低,IOCP模型,绑定非127.0.0.1时可以供一定规模的用户使用.

    注意:
    某些地区可能由于线路问题开启位于墙外的DNS后解析速度会变慢, 如果有后端代理可以关闭所有Other dns仍能正常工作.
    第一次访问被墙网站的时候可能有连接被阻断或者连接超时(可能长达21秒)等现象,刷新后即可正常访问
    44 条回复    2014-12-10 14:28:07 +08:00
    vkx222
        1
    vkx222  
    OP
       2014-07-30 12:17:16 +08:00
    下载地址和网站,另外谁能帮忙贴个图啊,我这贴不上,只有连接
    http://www.autorouteproxy.tk/dlfiles/asproxy-r3936.zip
    http://www.autorouteproxy.tk/
    Shared
        2
    Shared  
       2014-07-30 12:35:40 +08:00   ❤️ 1
    Shared
        3
    Shared  
       2014-07-30 12:35:59 +08:00   ❤️ 1
    immjun
        4
    immjun  
       2014-07-30 12:55:36 +08:00
    不错~ 功能很全面
    vkx222
        5
    vkx222  
    OP
       2014-07-30 13:01:21 +08:00
    @Shared 多谢贴图
    austinchou0126
        6
    austinchou0126  
       2014-07-30 13:04:35 +08:00 via iPad
    类似COW
    yexiaoxing
        7
    yexiaoxing  
       2014-07-30 13:19:59 +08:00
    出错。
    log: http://pan.baidu.com/s/1sjwf6Yp (4kda)
    解压密码:v2ex
    yjd
        8
    yjd  
       2014-07-30 13:42:55 +08:00
    tk域名想回收就会被回收-_-!!
    vkx222
        9
    vkx222  
    OP
       2014-07-30 14:02:16 +08:00
    @yexiaoxing 后端代理填写的个是不对,格式应当如下这两种
    goagent;dst:127.0.0.1:8087
    socks5;dst:127.0.0.1:7070
    vkx222
        10
    vkx222  
    OP
       2014-07-30 14:03:07 +08:00
    @immjun 我想更详细的描述一下功能,可惜主贴不能更新了,贴在下面吧

    0. 提供SOCKS5代理和仅支持CONNECT的HTTP代理功能.
    1. 防止墙的投毒功能(需要开启或添加一个位于墙外的Other dns).
    2. 软件本身现在还没有科学上网功能,需要指定后端代理(配置界面的Proxy backend)才可能有智能科学上网功能. 对于墙外的网站可以一直使用后端代理或者检测到被墙后才使用代理(选中Detect whether need proxy to visit target host).
    3. 有DNS缓存和异步查询,DNS查询过程中不影响其它连接的速度.
    4. 列表显示网站域名的情况: 是否位于墙外,IP是否被封,域名是否被污染,是否TCP阻断.
    5. 如果没有指定后端代理那么本软件就是一个普通的SOCKS5代理,最早是用来这样(宿舍IPv6 <---> IPv6实验室 <---> 外网)免费上外网的,具有IPv4和IPv6的相互转发功能.
    6. 检测DNS投毒的IP列表,网站是否位于墙外是否被墙等数据均自动生成并更新,不需要手动添加或网络更新.
    7. 内存和CPU占用率很低,IOCP模型,绑定非127.0.0.1时可以供一定规模的用户使用.

    注意:
    某些地区可能由于线路问题开启位于墙外的DNS后解析速度会变慢, 如果有后端代理可以关闭所有Other dns仍能正常工作.
    第一次访问被墙网站的时候可能有连接被阻断或者连接超时(可能长达21秒)等现象,刷新后即可正常访问
    vkx222
        11
    vkx222  
    OP
       2014-07-30 14:07:47 +08:00
    @yjd 我还有几个tk用了两年多了,万一被收了到时候邮件联系[email protected]
    vkx222
        12
    vkx222  
    OP
       2014-07-30 14:13:17 +08:00
    @austinchou0126 确实有些类似,记得当时好像看过cow的代码,应该是对每个完整的http请求包进行转发,我这个是对tcp数据流直接转发,不关心包内容的,当然还是受后端代理的限制,比如goagent就不能支持websocket,通过这个代理再通过goagent的数据也不支持websocket。我会尽量完善,环形大家提宝贵意见。
    yexiaoxing
        13
    yexiaoxing  
       2014-07-30 14:42:48 +08:00
    @vkx222 若是单纯的http代理呢?
    renzhn
        14
    renzhn  
       2014-07-30 14:45:01 +08:00
    上个google+,youtube就崩了啥情况,后端goagent
    vkx222
        15
    vkx222  
    OP
       2014-07-30 15:50:54 +08:00
    @renzhn 能把dmp文件,日志,配置文件发给我么 [email protected]
    @yexiaoxing 等明天放有这个功能的版本吧,不过提前说好了,只适用与纯透明代理(比如新版的开启 transport选项的goagent)或者支持CONNECT方法的http代理。
    renzhn
        16
    renzhn  
       2014-07-30 16:05:56 +08:00
    @vkx222 已发送
    vkx222
        17
    vkx222  
    OP
       2014-07-30 17:23:55 +08:00
    新版本 http://autorouteproxy.tk/dlfiles/asproxy-r3943.zip
    @renzhn 实验一下新版本如果过一段时间还崩可以的话继续给我发那些文件,不崩的话也可以给我发日志。另外不知道你用的是什么操作系统。这个bug是在shutdown调用失败的时候我故意引起程序崩溃产生dmp的,这个地方我再仔细研究一下。

    @yexiaoxing 新版本增加了对纯透明代理的支持代理格式如下
    transport;dst:127.0.0.1:8087
    可用于开启了 transport 选项的goagent
    vkx222
        18
    vkx222  
    OP
       2014-07-30 22:29:38 +08:00
    发布新版本r3950,支持http代理作为后端(但是该代理需要支持CONNECT) 不知道@yexiaoxing什么时候会用到这种情况。
    yexiaoxing
        19
    yexiaoxing  
       2014-07-30 22:31:20 +08:00
    @vkx222 其实我需要的是利用网络上的HTTP代理作为后端啦。
    手里有一个apn,抓出来的http代理。
    vkx222
        20
    vkx222  
    OP
       2014-07-30 22:49:12 +08:00
    @yexiaoxing 一直没整明白APN是什么东西,它具体以什么方式提供什么服务呢
    yexiaoxing
        21
    yexiaoxing  
       2014-07-30 23:52:43 +08:00
    @vkx222 其实就是一套自动化的代理。
    apn 主要是给 iPhone 用的,生成对应运营商的 mobileconfig 文件,使得蜂窝网络下也可翻墙。
    jerryjhou
        22
    jerryjhou  
       2014-07-31 01:04:29 +08:00
    @vkx222 本质上就是HTTP CONNECT代理,但是必须在墙内(在墙外会被重置),就是国内中转。你这个运行在一台公网可访问的墙内机器上,然后配置手机的APN设置中的"代理"和"端口"即可(全局代理到境内机器,再在这台机器上分流境内外流量或被墙未被墙流量)

    有些手机支持用PAC在手机上分流
    vkx222
        23
    vkx222  
    OP
       2014-07-31 08:33:36 +08:00
    @jerryjhou 多谢普及

    @yexiaoxing 还没用过iphone呢 sigh
    chztv
        24
    chztv  
       2014-07-31 08:44:05 +08:00
    @vkx222 windows 版的啊?木有 MAC?
    vkx222
        25
    vkx222  
    OP
       2014-07-31 09:17:00 +08:00
    @chztv 木有mac,不过考虑将来弄一个openwrt上的
    vkx222
        26
    vkx222  
    OP
       2014-07-31 12:36:15 +08:00
    忍不住上来说一下,使用transport模式后端接开启transport = 1的goagent,能感觉速度快了一些。DNS的解析方式还是不完美,有些影响速度,也可能是我的ISP提供的dns有问题,争取下个版本解决这个问题吧。
    renzhn
        27
    renzhn  
       2014-07-31 14:48:53 +08:00
    @vkx222 winserver 2008 r2 ...
    vkx222
        28
    vkx222  
    OP
       2014-07-31 15:46:15 +08:00
    @renzhn 又有过崩溃么,日志里面出现过包含shutdown字样的记录么
    wohan
        29
    wohan  
       2014-07-31 18:17:03 +08:00
    @vkx222 和goagent配合很好,后端是shadowsoskcs的时候工作不正常。

    另外,两种情况的后端,永远是can't resolve youtube.com. 但后端是goa的时候能打开网页

    [16:16:13] proxy\socks_test.c(81): dns_req_fini
    [16:16:13] proxy\socks_test.c(84): dns_fini (null)
    [16:16:13] proxy\socks_test.c(51): log_udp_fini
    [16:16:13] proxy\socks_test.c(43): sock_fini
    [16:16:13] proxy\socks_test.c(32): log_fini
    [16:16:13] proxy\socks_test.c(29): log_init
    [16:16:13] proxy\socks_test.c(39): sock_init
    [16:16:13] proxy\socks_test.c(60): v4_isp: 202.103.44.150
    [16:16:13] proxy\socks_test.c(77): DnsCachePath: (null)
    [16:16:13] proxy\socks_test.c(107): WWWRoot.Listen: html, 127.0.0.1:7088
    [16:16:13] proxy\socks_test.c(140): proxy_init: AutoDetect
    [16:16:13] proxy\socks_test.c(90): set_priority: true
    [16:16:13] gfw new 44 1 fb-nosuch-aq23xamz9sd1lx37d 218.30.64.194
    [16:16:17] Can't resolve <youtube.com>
    [16:16:17] Can't resolve <www.youtube.com>
    [16:16:18] Can't resolve <youtube.com>
    vkx222
        30
    vkx222  
    OP
       2014-07-31 18:58:39 +08:00
    @wohan 无法解析的域名有可能是因为dns投毒,程序丢弃了错误的结果,直接用后端连接了,不用管它。我用shadowsocks-libev试验了一下,确实不能工作,以前只是试验过ssh和plink的socks5代理。问题是我把socks5的版本请求和连接请求拼包发送了(为了加快速度),ssh和plink能够区分这种情况。
    如下代码的 173 行开始往后
    https://github.com/madeye/shadowsocks-libev/blob/master/src/local.c
    ssize_t r = recv(server->fd, buf, BUF_SIZE, 0); 直接接收了一大块数据
    然后到 325 行
    else if (server->stage == 0)
    {
    struct method_select_response response;
    response.ver = SVERSION;
    response.method = 0;
    char *send_buf = (char *)&response;
    send(server->fd, send_buf, sizeof(response), 0);
    server->stage = 1;
    return;
    }
    发送个响应就没有下文了,按道理应该继续处理包里面的剩余数据。
    不知道他为什么没有处理“TCP粘包”的情况。
    我考虑修正一下吧,希望能联系一下这个作者。
    vkx222
        31
    vkx222  
    OP
       2014-07-31 20:35:14 +08:00
    @wohan 已经给shadowsocks-libev作者提交patch了,不知道会不会合并
    https://gist.github.com/anonymous/97551b8d9509f4829ef4
    renzhn
        32
    renzhn  
       2014-07-31 22:50:02 +08:00
    @vkx222 目前win8.1用着还行,崩过一次,只是托盘图标菜单点了经常出现CreateProcess什么的
    vkx222
        33
    vkx222  
    OP
       2014-08-01 04:27:02 +08:00
    @renzhn 这次崩溃有dmp和日志么?出现CreateProcess是因为没有正确配置好浏览器路径导致的,参考第一张图片的最后面那部分的说明。看来这部分有必要做成初始化时自动查找浏览器路径。
    vkx222
        34
    vkx222  
    OP
       2014-08-01 08:47:06 +08:00
    新版本发布
    http://www.autorouteproxy.tk/dlfiles/asproxy-r3958.zip

    增加对shadowsocks的支持,确切的说是socks5的严格版本,以前由于拼包发送导致shadowsocks-libev不能正确处理。
    如果不想改配置文件可以在后端代理那加上一条 shadowsocks;dst:127.0.0.1:1080

    保存的缓存dns记录不兼容以前的版本了,程序能自行处理,但无法载入旧的记录了

    dns部分改进,如果以前由于dns服务器慢导致体验差,这次改进应该非常明显。
    renzhn
        35
    renzhn  
       2014-08-01 09:29:06 +08:00
    @vkx222 还有个dump记不清什么什么原因导致的,发给你了
    vkx222
        36
    vkx222  
    OP
       2014-08-01 10:53:56 +08:00
    @renzhn 那个pdb文件没有存调试不了,你能看下这个时间的日志么 2014-07-31 21:47:02
    pi1ot
        37
    pi1ot  
       2014-08-15 12:50:14 +08:00   ❤️ 1
    比较好奇是如何拿到浏览器的访问记录和检测每个网站的状态的
    vkx222
        38
    vkx222  
    OP
       2014-08-15 16:54:00 +08:00
    @pi1ot 哈哈,神奇吧
    pi1ot
        39
    pi1ot  
       2014-08-15 21:31:40 +08:00
    TossPig
        40
    TossPig  
       2014-08-27 03:05:31 +08:00
    cannot load http://c.autorouteproxy.tk/json_info?1. No 'Access-Control-Allow-Origin' header is present on the requested resource.
    这是要去拿啥东西?跨域有问题,,,给屏蔽了
    ashang
        41
    ashang  
       2014-10-10 13:07:15 +08:00
    ⊙v⊙ 还是没太明白怎么用,想用它的自动学习功能。已指定后端代理,但浏览器代理设置为哪个地址呢?
    vkx222
        42
    vkx222  
    OP
       2014-12-04 19:13:44 +08:00
    @TossPig 就是判断你是不是用了这个代理来访问后台页面,然后跳转。
    @ashang Chrome的话指定参数 --proxy-server=socks5://127.0.0.1:7080 就会使用这个代理了。firefox设置socks5代理的方法请自行搜索。
    ashang
        43
    ashang  
       2014-12-08 11:01:34 +08:00
    @vkx222 之前是用proxysharp设置可能是因为选成socks4了所以一直是Can't resolve </ HTTP/1.1Host>。现在用socks5正常。
    但是,自动识别无效哇。勾了Detect whether need proxy to visit target host,save-restart了也不行。
    vkx222
        44
    vkx222  
    OP
       2014-12-10 14:28:07 +08:00
    @ashang 控制页面的iplist页先flush一下,然后访问一下被墙的网站看看呢。另外我没有试验过和proxysharp配合的情况。另外这个软件只有分流的作用,没有翻墙的作用,需要自己添加用于翻墙的代理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:28 · PVG 04:28 · LAX 12:28 · JFK 15:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.