V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
Archeb
V2EX  ›  奇思妙想

迫于 IPv6 接口标识足足有 64 位,可否用来做一个真正的 DNS 代理?

  •  
  •   Archeb · 2018-11-06 12:41:19 +08:00 · 3788 次点击
    这是一个创建于 2194 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想法是这样的。
    1、客户端请求 DNS (例如查询 www.google.com
    2、DNS 服务器获得 www.google.com 的正确解析结果(如 216.58.219.132 ),记下来
    3、DNS 服务器返回一个代理服务器的地址给客户端(如 2001:DB8::1234 )
    4、DNS 服务器告诉代理服务器这个转发请求(如 发送到 2001:DB8::1234 这个地址的流量全部转发到 216.58.219.132 )
    5、实现代理效果

    因为 IPv4 的地址稀缺,而 v6 地址的丰富性使得这样的用法成为可能?

    不知道以上思路有什么缺点,或者其实已经存在这样的应用(感觉应该有),欢迎指出
    第 1 条附言  ·  2018-11-06 16:01:30 +08:00
    我也发现了,这就是 DNS64+NAT64,23333
    只不过 不需要网关处理映射, 也支持 ipv6 nat
    21 条回复    2018-11-09 23:21:32 +08:00
    squid157
        1
    squid157  
       2018-11-06 12:47:29 +08:00
    NAT64 ?
    noe132
        2
    noe132  
       2018-11-06 12:48:02 +08:00 via Android
    dns 是有缓存的。
    gy911201
        3
    gy911201  
       2018-11-06 12:50:55 +08:00
    如果是内网,其实 ipv4 都够用,随便找个内网的网段去做就是了……
    实话说,其实用不了多少个 IP ………
    Archeb
        4
    Archeb  
    OP
       2018-11-06 12:54:36 +08:00
    @gy911201 就是公网情况下的...几百个吧要的
    @squid157 你这么一说感觉确实其实就是 DNS64 ( NAT64 )
    @noe132 缓存应该和这个不相影响吧...
    jessynt
        5
    jessynt  
       2018-11-06 13:01:33 +08:00
    Surge for Mac 的 enhanced mode
    jessynt
        6
    jessynt  
       2018-11-06 13:06:45 +08:00
    0ZXYDDu796nVCFxq
        7
    0ZXYDDu796nVCFxq  
       2018-11-06 13:11:22 +08:00 via Android
    2. 直接返回那个 v6 地址
    5. 实现代理效果

    另外,DNS 不是只有 HTTP 在用,这种进不了 RFC 又涉及到基础设施的,改协议没什么价值,没人跟你玩,除非你把上下游都搞定
    iceheart
        8
    iceheart  
       2018-11-06 13:28:12 +08:00 via Android   ❤️ 1
    1.你对 IPV6 的认知是错的,IPV6 是 128 位的,不是 64 位
    2.你对 DNS 服务器一无所知。DNS 只负责解析名字,它不知道,也没法知道你拿解析到的地址去干啥,返回一个代理对它来说就是错误的解析。
    3.你对代理的认知也是错的,代理是指建立在某种协议之上的,不存在对所有协议的代理。我的私有协议就是不支持代理,dns 把我的域名解析到一个代理服务器上,这不是搞事情么
    BOYPT
        9
    BOYPT  
       2018-11-06 13:34:38 +08:00
    除了 #8 的纠错,类似的想法早已经是标准 RFC,俗称称作 DNS64+NAT64,是给纯 ipv6 用户访问只有 v4 地址的服务器的。

    草案中已经规定,64:ff9b::/96 地址段是用来映射 ipv4 所有地址成为 ipv6 地址,DNS64 服务器对于 AAAA 请求,发现上有的域名没有 AAAA 记录而只有 A 记录,就把 A 记录的地址转换成 64:ff9b::前缀的 v6 地址作为 AAAA 响应返回。网关上自然也是做好了 NAT64 的转换。
    Archeb
        10
    Archeb  
    OP
       2018-11-06 14:22:30 +08:00 via Android
    @iceheart 看清楚 我说 64 位是接口标识 前 64 位是网络前缀
    返回的是代理服务器的 ip 地址
    好好看帖子
    Archeb
        11
    Archeb  
    OP
       2018-11-06 14:23:50 +08:00 via Android
    @BOYPT 确实就是 NAT64 的思路,只不过我觉得一样可以代理 ipv6 和支持大部分协议
    Archeb
        12
    Archeb  
    OP
       2018-11-06 14:26:47 +08:00 via Android
    @gstqc 不需要也不想其他人跟我配合,自己搭建 dns 和 代理服务器 即可
    goofool
        13
    goofool  
       2018-11-06 14:51:16 +08:00
    为啥不直接跟代理服务器连接
    Archeb
        14
    Archeb  
    OP
       2018-11-06 15:24:22 +08:00 via Android
    @goofool 只要客户端支持 ipv6 支持修改 dns 就可以用 无需额外客户端软件
    未来 v6 普及了就好
    oovveeaarr
        15
    oovveeaarr  
       2018-11-06 15:30:19 +08:00
    不对呀,这根 NAT64 不是没差嘛,支持协议的事情不是应该代理服务器自己去做的么。
    IPv4 一共就 32 位,IPv6 128 位,所以拿出一个 96,就可以完整映射 IPv4 了,剩下的想怎么搞怎么搞。
    gy911201
        16
    gy911201  
       2018-11-06 19:44:34 +08:00
    @Archeb 放到公网其实有一个问题,就是你鉴权很难去做……
    基本上相当于一个 RBQ 了…………
    Tink
        17
    Tink  
       2018-11-07 02:11:53 +08:00 via iPhone
    先不说 ipv6,这不就是自建 dns+sniproxy 实现翻墙的变通么?
    missdeer
        18
    missdeer  
       2018-11-07 08:50:09 +08:00
    同意 17 楼,IPv4 就有机场这么搞了,自建 DNS+SNIProxy
    Archeb
        19
    Archeb  
    OP
       2018-11-07 09:53:26 +08:00 via Android
    @missdeer
    @Tink

    最多说 dns 部分思路相同
    ipv6 下可以一一对应
    Archeb
        20
    Archeb  
    OP
       2018-11-07 10:00:01 +08:00 via Android
    @gy911201
    同样利用 ipv6 地址足够的特点
    给每个用户分配单独的 dns 地址
    反正也没法批量扫描
    Archeb
        21
    Archeb  
    OP
       2018-11-09 23:21:32 +08:00
    @Tink
    @missdeer
    TLS1.3 SNI 加密之后呢?(光速逃
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:48 · PVG 05:48 · LAX 13:48 · JFK 16:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.