• 请不要在回答技术问题时复制粘贴 AI 生成的内容
devliu1
V2EX  ›  程序员

挂代理与不挂代理如何做到无缝切换(非 http)

  •  
  •   devliu1 · Oct 15, 2021 · 6091 views
    This topic created in 1675 days ago, the information mentioned may be changed or developed.

    比如我有 ssh 服务,内网是 10.0.0.1:22,通过域名 example.com 访问。 我希望在外网的时候 也可以通过域名 example.com 访问到。 路由器自己解析是可以的,但是外网访问端口和内网端口必须保持一致,有点麻烦,有什么好的类似 PAC 的本地全局代理吗?

    21 replies    2021-10-18 20:37:41 +08:00
    dcty
        1
    dcty  
       Oct 15, 2021
    如果你用的是 Mac,那么用 surge 可以解决。dns 解析可以用脚本实现,判断当前网络来返回域名对应的 IP 。
    wweir
        2
    wweir  
       Oct 15, 2021   ❤️ 3
    写个 hosts 文件不好么
    IvanLi127
        3
    IvanLi127  
       Oct 15, 2021 via Android
    只要你有公网 ip 端口没被阻断,好像只要网关把所有端口转发给你的内网服务就好了?内网再开个 dns 服务,网关再设其为默认 dns 服务器,应该能满足吧?
    starsky007
        4
    starsky007  
       Oct 15, 2021 via Android
    Tailscale
    z7356995
        5
    z7356995  
       Oct 15, 2021 via Android
    ipv6 内外网都一样
    cweijan
        6
    cweijan  
       Oct 15, 2021
    就是异地组网嘛, 想快速体验可以用国产的蒲公英, 其他免费的有 Tailscale 、zerotier, 自建则可用 WireGuard
    devliu1
        7
    devliu1  
    OP
       Oct 15, 2021
    @dcty 我觉得是正解,能完美解决需求,我要的应该是 programmable 全局代理工具

    @wweir hosts 与我自建 dns 没区别呀

    @IvanLi127 问题就是公网被阻断了,(所以端口不够用,这才是主要问题!!!)不然网关侧就可以解决这个问题。

    @starsky007 这个看着是类似 zerotier 的服务吗?我研究一下

    @z7356995 学习了,但是公网没有 v6
    devliu1
        8
    devliu1  
    OP
       Oct 15, 2021
    @cweijan 对,其实就是想要一个可以自动适应网络环境的 VPN,如果已经在内网就走内网流量
    Xusually
        9
    Xusually  
       Oct 15, 2021 via iPhone
    Surge
    mMartin
        10
    mMartin  
       Oct 16, 2021
    软路由可以设置 dns 代理 比如爱快的 dns 反向代理功能
    cache
        11
    cache  
       Oct 16, 2021
    @devliu1 Tailscale 就是你要的自动适应网络环境的 VPN,内网时直连,外网如果打洞成功也能直连,否则走中转。
    缺点是 Tailscale 的服务器在国外,中转会很慢。

    你如果只是端口不够,其实还有一个简单的解决方案:直接复用已经映射好的端口,如 443.

    你要编程实现的话,每条新来的连接检测一下第一个包的起始几个字节,如果是 ssh 转内网的 ssh 服务器,如果是 tls 包,转原来的 https 服务。
    devliu1
        12
    devliu1  
    OP
       Oct 16, 2021
    @cache 测试了一下 Tailscale 还是慢了,自己编程实现感觉可以设置全局的 socks 代理,然后代理逻辑自己魔改一下?

    @mMartin 主要还是端口不够用,本地 DNS 解析是好做的,想在 4 层做自定义的转发
    devliu1
        13
    devliu1  
    OP
       Oct 16, 2021
    好像最方便的方式还是多买一个公网 IP 。
    每个服务占用一个 IP 的固定端口,在本地 DNS 把公网域名解析到本地。

    如果是 https 还可以通过 host 转发给不同的服务。
    zhfish
        14
    zhfish  
       Oct 16, 2021
    这么麻烦? 内网上一个软路由,dns 里面 10.0.0.1 example.com 不就行了。。
    连上内网走路由 dns, 外网走公网 dns
    zhfish
        15
    zhfish  
       Oct 16, 2021
    端口一致为什么麻烦,这个没太理解
    devliu1
        16
    devliu1  
    OP
       Oct 17, 2021
    @zhfish 举个反例,内网两个 ssh 192.168.1.1:22 、192.168.1.2:22 。但只有一个公网 ip,可以映射 1.1.1.1:22 -> 192.168.1.1:22,但是要映射 192.168.1.2:22 的时候,端口不够了,本质还是公网 ip 少了。
    orancho
        17
    orancho  
       Oct 17, 2021
    你要找的是不是 MAAS 或者 ActiveDirectory 的 DNS ?
    FakNoCNName
        18
    FakNoCNName  
       Oct 18, 2021
    你这个需求弄个跳板机最简单,路由器 22 断口映射到跳板机上,其它的全部通过跳板机转发
    yhan
        19
    yhan  
       Oct 18, 2021
    试试 proxifier
    devliu1
        20
    devliu1  
    OP
       Oct 18, 2021
    @FakNoCNName 是这样的,似乎懂了,我要的就是跳板机能自适应网络环境,按照我之前的方案,这样一个端口就行。
    @orancho 没懂

    @yhan 好像也可以,感谢
    FakNoCNName
        21
    FakNoCNName  
       Oct 18, 2021   ❤️ 1
    @devliu1 只要路由能通,跳板机会自己转发,只要配置对了就可以,你看下 ssh 跳板机的资料,里面有这种用法。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   879 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 19:59 · PVG 03:59 · LAX 12:59 · JFK 15:59
    ♥ Do have faith in what you're doing.