挂代理与不挂代理如何做到无缝切换(非 http) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
devliu1
V2EX    程序员

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

  •  
  •   devliu1 2021-10-15 17:13:23 +08:00 5614 次点击
    这是一个创建于 1457 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

    @yhan 好像也可以,感谢
    FakNoCNName
        21
    FakNoCNName  
       2021-10-18 20:37:41 +08:00   1
    @devliu1 只要路由能通,跳板机会自己转发,只要配置对了就可以,你看下 ssh 跳板机的资料,里面有这种用法。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2644 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 06:05 PVG 14:05 LAX 23:05 JFK 02:05
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86