V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dangyuluo
V2EX  ›  问与答

如何根据 LAN/外网环境,切换 SSH config 内的服务器地址

  •  
  •   dangyuluo · 2018-09-28 01:36:47 +08:00 · 1565 次点击
    这是一个创建于 2283 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前的需求如下:

    家里有一台路由器,简称 R,能够获得一个公网 IP,假设为 128.128.128.128 。路由器下辖局域网段 10.0.0.1/24。

    局域网内有一个 SSH 服务,IP:Port 10.0.0.5:22,在路由器上做了个映射 WAN22 => 10.0.0.5:22,这样我在公司就可以连接了。通过配置 ~/.ssh.config:

    Host home
        HostName home.mydomain.com (指向 128.128.128.128 )
        IdentityFile ~/.ssh/certs/home
        IdentitiesOnly yes
    
    

    我实现了在外网和内网下均可以使用ssh home进行连接。当我在外时,packet 经由路由器转发,再到达 SSH 服务器是很合理的。但当我回到家,还继续这么连接的话,数据会在路由器上绕一圈,完全没有办法利用内网之间的优势。虽然速度也很快,但是没有达到内网之间的理论速度,能明显发现路由器负载上升。

    最关键的问题是,我比较懒,不想在~/.ssh/config里建立两个连接,因此想问一下有没有合理的解决方案?我想 DNS override 可能是一种,但是估计缓存的问题不好解决。

    8 条回复    2018-09-28 12:09:48 +08:00
    cnnblike
        1
    cnnblike  
       2018-09-28 01:58:32 +08:00
    我试过用 dnsmasq 劫持,感觉怪怪的。也不是说不能用,就是有时候 ssh 不上要排查的东西就又多了一条,略微有点智障
    liwufan
        2
    liwufan  
       2018-09-28 02:15:57 +08:00   ❤️ 2
    我有三个点子:
    1.公网 dns 服务器可以根据不同 IP 段请求给出不同答案。
    2.内网的网关上配置 dnsmasq,adress=/domain/ip
    3.ssh/config ProxyCommand $HOME/.ssh/selecthost.sh %h %p 指向脚本,脚本先 ping 10.0.0.5。有就 ssh 内网 ip,没有就 ssh 域名
    msg7086
        3
    msg7086  
       2018-09-28 03:41:55 +08:00
    我们是用 DNS 劫持,内网劫持到内网地址。

    @liwufan 3. ping 不能保证对方是同一台服务器。
    hsheng
        4
    hsheng  
       2018-09-28 06:50:51 +08:00 via Android
    内网机器直接添加 host ?
    laucenmi
        5
    laucenmi  
       2018-09-28 08:29:01 +08:00 via Android
    有域名会方便很多
    yingfengi
        6
    yingfengi  
       2018-09-28 08:36:42 +08:00 via Android
    直接访问公网地址,网关做双向地址转换
    zjb861107
        7
    zjb861107  
       2018-09-28 11:52:36 +08:00
    学习了!
    ysc3839
        8
    ysc3839  
       2018-09-28 12:09:48 +08:00 via Android
    DNS 应该没有缓存的问题,网络环境改变的话操作系统应该会清除缓存的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:51 · PVG 06:51 · LAX 14:51 · JFK 17:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.