V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ech0x
V2EX  ›  宽带症候群

现在的路由器透明代理的原理都是什么?有没有基于域名的透明代理?

  •  
  •   ech0x · 2019-01-14 12:28:14 +08:00 · 14037 次点击
    这是一个创建于 2175 天前的主题,其中的信息可能已经有所发展或是发生改变。

    好像现在在路由器上用的通明代理,都是基于 Chinadns 来进行分流的,但这样还得自己解决 dns 污染的问题,所以我想问问现在有没有基于域名的透明代理方案,可以直接导入某著名 List 的。

    第 1 条附言  ·  2019-01-14 15:18:45 +08:00
    我想要实现的功能类似手机上的代理软件。
    软件同时接管 dns 和路由,client 向路由器发送 dns 请求,软件根据规则表判断是否要代理 dns 请求,然后根据匹配情况进行分流。
    第 2 条附言  ·  2019-01-14 23:09:20 +08:00
    clash 目前是最好的方案了。
    第 3 条附言  ·  2019-07-23 19:06:19 +08:00
    我现在用的是 Dnsmasq + ipset 的组合,但是如果不想折腾还是推荐使用 clash
    46 条回复    2019-09-17 09:56:48 +08:00
    zhaohanqing
        1
    zhaohanqing  
       2019-01-14 12:34:16 +08:00 via Android
    没有啊,现在很多都是内置了 XX List 的,DNS 也是可以走 tunnel 或者 pcap 的
    lifanxi
        2
    lifanxi  
       2019-01-14 12:41:30 +08:00
    dnsmasq + ipset 是不是就是你要的?
    yinheli
        3
    yinheli  
       2019-01-14 12:59:22 +08:00   ❤️ 1
    wd
        4
    wd  
       2019-01-14 13:04:00 +08:00 via iPhone
    看名字 chinadns 不是基于域名的?
    tony1016
        5
    tony1016  
       2019-01-14 13:05:33 +08:00
    Chinadns 只能解决目标是对的问题,要解决路径是通的,就得靠隧道。dnsmasq + ipset 是你想要的
    yichengfzu
        6
    yichengfzu  
       2019-01-14 13:06:22 +08:00 via iPhone   ❤️ 1
    clash
    lzvezr
        7
    lzvezr  
       2019-01-14 14:07:04 +08:00 via Android
    v2ray
    hjc4869
        8
    hjc4869  
       2019-01-14 14:09:08 +08:00
    可以做,不过实现方式有点丑。
    yov123456
        9
    yov123456  
       2019-01-14 15:01:42 +08:00   ❤️ 1
    https://github.com/Dreamacro/clash clash 开 redir 跑路由器上 开 enhancemode 设置 dns 监听,然后所有 dns 请求走 clash。
    clash 就可以从 dns 请求反推域名 然后走正常的域名匹配规则,支持 surge 那样的规则。
    ech0x
        10
    ech0x  
    OP
       2019-01-14 15:05:59 +08:00
    @lifanxi #2
    @tony1016 #5
    Chinadns 我觉得有挺大的不稳定性啊,第一:如果国内的 DNS 返回的 fake ip 是一个国内 ip 怎么办?第二:如果国内的 DNS 返回的国外 ip 不是一个 fake ip 而是一个经过线路优化的 ip 并且和可信 dns 返回的 ip 不同怎么办?第三:如果每个地址都要经过两次 dns 查询,初次访问的性能不会受到很大的影响吗?
    lucifer9
        11
    lucifer9  
       2019-01-14 15:09:26 +08:00
    v2ray 就可以啊
    ech0x
        12
    ech0x  
    OP
       2019-01-14 15:14:45 +08:00
    @lzvezr #7
    @lucifer9 #11
    v2ray 我看了一下好像也只能指定 ip 分流啊,不能指定域名分流啊......是我漏看了吗?
    zbinlin
        13
    zbinlin  
       2019-01-14 15:19:33 +08:00
    看到“透明代理”,还以为说的是 `transparent proxy` 呢?
    carrionlee
        14
    carrionlee  
       2019-01-14 15:28:12 +08:00 via Android
    楼上不是说了么 dnsmasq + ipset
    lucifer9
        15
    lucifer9  
       2019-01-14 15:40:03 +08:00
    tony1016
        16
    tony1016  
       2019-01-14 15:52:50 +08:00
    @ech0x 所以 china-dnsmasq-list 是个不错的项目,clash 的 dns 机制也可以
    ech0x
        17
    ech0x  
    OP
       2019-01-14 16:09:12 +08:00 via iPhone
    @tony1016 我好像一直看错了,把 dnsmasq 看成 Chinadns😂
    sodora
        18
    sodora  
       2019-01-14 16:48:57 +08:00
    v2ray 就可以啊
    titanium98118
        20
    titanium98118  
       2019-01-14 18:08:53 +08:00 via Android
    dnsmasq+ipset 就是,list 中的域名走 ss 查询
    ihciah
        21
    ihciah  
       2019-01-14 18:37:40 +08:00   ❤️ 1
    你这个做不到啊,因为查 DNS 和连接服务器是独立的。
    你通过 A 域名(需要代理)查到了一个 ip,通过 B 域名(不需要)也查到了相同的 ip,那么问题来了,这个 ip 要代理嘛?

    所以做成路由上的透明代理不太可行。浏览器插件这种能直接拿到域名和接管权可以做到最精准的控制。
    benedict00
        22
    benedict00  
       2019-01-14 19:54:32 +08:00 via Android
    clash
    Sunmxt
        23
    Sunmxt  
       2019-01-14 20:05:38 +08:00 via Android
    dnsmasq+ipset
    24
        24
    24  
       2019-01-14 20:40:23 +08:00 via Android
    @yov123456 2019 年了,可以用 doh 方案来代替 chinadns
    missdeer
        25
    missdeer  
       2019-01-14 20:44:39 +08:00   ❤️ 1
    DNS 方案再次推荐一下 CoreDNS,同时奉上我自用的 Corefile 生成脚本: https://gist.github.com/missdeer/5c7c82b5b67f8afb41cfd43d51b82c2d,国内外分流解析,完全满足楼主需求,国内域名数据来自 felixonmars 的国内域名列表,国内域名用 ISP 或 114 之类的 DNS server 解析,国外域名用 OpenDNS/Cloudflare/Google DNS server 解析。
    ech0x
        26
    ech0x  
    OP
       2019-01-14 22:25:31 +08:00
    @ihciah #21 可以的吧,A 域名需要代理查询到了一个 ip,代理软件缓存这个 ip 并且生成一个对应的 fake ip,然后因为代理软件是负责 dns 的,所以可以返回给 client 对应的 fake ip,client 向 fake ip 发送数据,路由把 client 发给 fake ip 的数据转发给代理软件。B 域名(不需要)也查到了相同的 ip,代理软件直接返回真实 ip。
    ihciah
        27
    ihciah  
       2019-01-14 22:40:44 +08:00
    @ech0x 哦这样感觉可以做。(不过有一点点问题:
    1. 你要能抓到所有的 DNS 流量。如果用户自定义了 DNS 或者有的 app 走了 doh,虽然拿到了无污染的结果但还是连不上
    2. 恶意域名可以向你的代理列表插数据
    yov123456
        28
    yov123456  
       2019-01-14 22:45:08 +08:00 via iPhone   ❤️ 1
    @24 clash 不依赖无污染的 dns 同时 clash 也支持 dot doh 作为上游 dns 哦

    @ech0x 这就是 clash 所实现的啊 说好几次了
    yov123456
        29
    yov123456  
       2019-01-14 22:48:10 +08:00 via iPhone   ❤️ 1
    @ech0x 不一定要 fake ip 真实即使被污染 ip 也可以 因为翻查匹配规则后是整个 tcp 连接给 proxy 的 surge 用 fake ip 是因为没有修改默认路由
    dszhblx
        30
    dszhblx  
       2019-01-15 01:14:11 +08:00 via iPhone
    想要 fan 的爽肯定要从域名解析处动手:
    存在一个域名白名单,在自己实现的 dns 服务器上,对于白名单内的域名(如 gxxglecom )走单独的上级 dns 服务器得到 ip 是 a.b.c.d。但返回给客户端的 dns 回应里把 a.b.c.d 改成 10.x.x.x 并记录下两者的映射关系。当客户端去连接 10.x.x.x 时,根据保存的映射关系用 fanQ 手段练到 a.b.c.d
    这样就实现了根据域名白名单进行 fq

    但是毕竟麻烦的是一个网站或者 app 通常要用到很多域名,把白名单配全是比较麻烦
    billytom
        31
    billytom  
       2019-01-15 08:42:52 +08:00
    有没有啥办法,在 windows 10 上用 Clash 做透明代理? 现在的 Clash for win 只是最基本的 http 代理,ps4 和电视机用不到
    yov123456
        32
    yov123456  
       2019-01-15 08:49:56 +08:00 via iPhone
    @billytom 把 clash 跑路由器或树莓派上 但是 clash 还不支持 udp ps4 游戏支持不了吧……
    @dszhblx 名单还好吧 机场的规则那么多
    missdeer
        33
    missdeer  
       2019-01-15 09:13:04 +08:00
    @billytom tun2socks 了解一下
    q397064399
        34
    q397064399  
       2019-01-15 11:26:39 +08:00
    我觉得最好的办法还是 openvpn 走国外 然后 chnroutes 走回来,用 chinadns 分流 目前效果不错
    Moofish
        35
    Moofish  
       2019-01-15 12:01:06 +08:00
    @missdeer 请问有办法在梅林上安装么
    missdeer
        36
    missdeer  
       2019-01-15 12:45:24 +08:00
    @Moofish 没试过,估计是可以的
    goodryb
        37
    goodryb  
       2019-01-15 12:56:44 +08:00
    ss-tproxy 了解一下,dnsmasq + ipset, 客户端网关和 dns 都配置成代理服务器的 IP 即可
    brMu
        38
    brMu  
       2019-01-21 12:54:38 +08:00
    @missdeer 这个也有一个问题,就是国内域名不全,当成国外域名去解析了,这样反而会慢。
    missdeer
        39
    missdeer  
       2019-01-21 13:45:39 +08:00
    @brMu https://github.com/felixonmars/dnsmasq-china-list 应该包括了大部分人常用的绝大多数国内域名,如果真缺了,你也可以给作者提 issue 或 PR。而且你也可以仅仅自己改 Corefile,把缺的域名加到 except 中。这不是什么大问题。
    brMu
        40
    brMu  
       2019-01-21 15:34:39 +08:00
    @missdeer 常用域名是肯定没问题的,可是尴尬的是有时很重要的域名没有包含在内,比如 12306 的某个域名,用的抢票软件显示的 IP 竟然是我的 vps 的,没办法又不好找到底是哪个域名,最后还是换回了 gfwlist 模式,然后手动添加自己需要绕路的域名,也不定是不能不访问的,有时慢的我也加进去,比如微软官网。
    birkhofflee
        41
    birkhofflee  
       2019-02-09 16:30:32 +08:00 via iPhone
    @billytom Proxifier
    mattx
        42
    mattx  
       2019-09-16 14:54:25 +08:00
    @ech0x 请问下,什么时候会出现 A, B 域名都解析到 IP-C,但是 A 需要代理,B 不需要代理?
    ech0x
        43
    ech0x  
    OP
       2019-09-16 14:54:58 +08:00 via iPhone
    @mattx A 被投毒了。
    mattx
        44
    mattx  
       2019-09-16 15:43:19 +08:00
    @ech0x 嗯 说到重点了
    mattx
        45
    mattx  
       2019-09-17 09:27:54 +08:00
    @ech0x 问下 clash for windows 是透明代理么?能让所有软件的域名和 ip 都经过 clash 规则么?
    ech0x
        46
    ech0x  
    OP
       2019-09-17 09:56:48 +08:00 via iPhone
    @mattx 不用 Windows 不知道,我现在也没在用 clash
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:25 · PVG 03:25 · LAX 11:25 · JFK 14:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.