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

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

  •  
  •   devliu1 · 43 天前 · 2652 次点击
    这是一个创建于 43 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    如果是 https 还可以通过 host 转发给不同的服务。
    zhfish
        14
    zhfish   42 天前
    这么麻烦? 内网上一个软路由,dns 里面 10.0.0.1 example.com 不就行了。。
    连上内网走路由 dns, 外网走公网 dns
    zhfish
        15
    zhfish   42 天前
    端口一致为什么麻烦,这个没太理解
    devliu1
        16
    devliu1   41 天前
    @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   41 天前
    你要找的是不是 MAAS 或者 ActiveDirectory 的 DNS ?
    FakNoCNName
        18
    FakNoCNName   40 天前
    你这个需求弄个跳板机最简单,路由器 22 断口映射到跳板机上,其它的全部通过跳板机转发
    yhan
        19
    yhan   40 天前
    试试 proxifier
    devliu1
        20
    devliu1   40 天前
    @FakNoCNName 是这样的,似乎懂了,我要的就是跳板机能自适应网络环境,按照我之前的方案,这样一个端口就行。
    @orancho 没懂

    @yhan 好像也可以,感谢
    FakNoCNName
        21
    FakNoCNName   40 天前   ❤️ 1
    @devliu1 只要路由能通,跳板机会自己转发,只要配置对了就可以,你看下 ssh 跳板机的资料,里面有这种用法。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1046 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.