DawnMoon
V2EX  ›  问与答

有没有这么一种代理工具,根据 HTTPS 的 SNI 信息,在 TCP 层面分流反代多个网站

  •  
  •   DawnMoon · May 25, 2023 · 2997 views
    This topic created in 1262 days ago, the information mentioned may be changed or developed.

    需求是这样的:很多境外网站加载很慢,有一个舒服的办法是,买一个速度快的境外 VPS ,监听 80 和 443 端口,在 TCP 层面转发流量指需要代理的网站。本地改 hosts 把目标网站解析到自己买的 VPS 上。

    但这么做,每个网站就要一个 IP ,成本很高。

    有没有一种方法,在 VPS 上解析 SNI 信息,然后根据目标站点,反代不同的网站。然后本地把所有要访问的站点都解析到自己的 VPS 上。

    为什么不在 HTTP 层反代?因为没有目标网站的 TLS 证书。我也不想自签名。

    18 replies  •  2023-05-25 17:12:16 +08:00
    hefish
    hefish
    May 25, 2023
    1
    nginx haproxy 都能实现吧。。
    Puteulanus
    Puteulanus
    May 25, 2023❤️1
    2
    SNIProxy
    DawnMoon
    DawnMoon
    OP
    May 25, 2023
    3
    @Puteulanus 感谢,看了下确实满足需求
    shaoshuang
    shaoshuang
    May 25, 2023
    4
    这种需求。。。为啥还要搞这么复杂。。。难道不是任意一个梯子软件都能做么。。。
    DawnMoon
    DawnMoon
    OP
    May 25, 2023❤️1
    5
    @shaoshuang 这么做,代理的思路是不一样的,在很多没办法装正向代理软件的时候,只能这么搞。
    lslqtz
    lslqtz
    May 25, 2023
    6
    权限控制是一个问题.
    choury
    choury
    May 25, 2023 via Android
    7
    有 sni 信息过不了墙,你搞到国外有什么用
    sujin190
    sujin190
    May 25, 2023❤️2
    8
    python -m sevent.helpers @arproxy -p 80 -T none @arproxy -p 443 -T none

    一条命令行就可以,不但会解析 sni ,普通 http 还会解析 header 通过 HOST 字段提取域名,如果你还有上级代理得话也可以指定转发到上级代理来访问

    如果你已经有代理了话,其实可以不需要再境外 VPS ,指定 hosts 后,通过 iptables 重定向流量到命令行启动的端口,然后再转发到代理就好了
    DawnMoon
    DawnMoon
    OP
    May 25, 2023
    9
    @choury 我的需求是代理速度慢的站点,不是被墙的站点
    cat
    cat
    May 25, 2023
    10
    nginx 四层转发即可
    ysc3839
    ysc3839
    May 25, 2023 via Android
    11
    那就是 sni proxy ,实现的项目非常多,C 和 golang 的都有,甚至 nginx 配置一下也能实现
    eudemonwind
    eudemonwind
    May 25, 2023 via Android
    12
    这么搞,遇到被阻断的 sni 就歇菜了,如果是已经被墙黑了的 sni ,搞不好你小鸡 ip 也会被墙。

    可以闹个半路转换 sni 的工具,比如你连你小鸡的时候用 https--www-google-com.yousite.com ,小鸡上有程序把这个 sni 转换成 www.google.com 再转发出去,但是这样直接转 https 流量会显示证书错误,跳过的话又有安全风险。还不能排除墙没有识别证书的功能,万一墙看一眼你的证书是谷狗的,就直接把你小鸡 ip 办了。。。


    所以最理想的还是用 nginx 等工具,直接反代谷狗,证书啥的用你自己的有效证书。但这样又不太灵活,loc 和 v2 坛子里有大佬写过一些万能配置,类似 ghproxy.com 那种的,可是用起来又有各种各样的问题。。。。。。目前还没有太完美的,有的话给我个传送门,我也在找这个。
    julyclyde
    julyclyde
    May 25, 2023
    13
    @sujin190 sevent.helpers 不算标准库吧?
    ysc3839
    ysc3839
    May 25, 2023 via Android
    14
    @eudemonwind 用自己证书的话直接弄成 https proxy 就完事了
    Remember
    Remember
    May 25, 2023
    15
    haproxy 满足你的需求
    march1993
    march1993
    May 25, 2023
    16
    @choury 把 sni 信息编码进 ssl 头的其他部分,然后替换一个正常 sni
    sujin190
    sujin190
    May 25, 2023
    17
    @julyclyde #13 是的,需要 pip install sevent
    SenLief
    SenLief
    May 25, 2023
    18
    haproxy 就可以利用 sni 分流。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1767 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 02:57 · PVG 10:57 · LAX 18:57 · JFK 21:57
    ♥ Do have faith in what you're doing.