目前的需求如下:
家里有一台路由器,简称 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 可能是一种,但是估计缓存的问题不好解决。
1
cnnblike 2018-09-28 01:58:32 +08:00
我试过用 dnsmasq 劫持,感觉怪怪的。也不是说不能用,就是有时候 ssh 不上要排查的东西就又多了一条,略微有点智障
|
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 域名 |
4
hsheng 2018-09-28 06:50:51 +08:00 via Android
内网机器直接添加 host ?
|
5
laucenmi 2018-09-28 08:29:01 +08:00 via Android
有域名会方便很多
|
6
yingfengi 2018-09-28 08:36:42 +08:00 via Android
直接访问公网地址,网关做双向地址转换
|
7
zjb861107 2018-09-28 11:52:36 +08:00
学习了!
|
8
ysc3839 2018-09-28 12:09:48 +08:00 via Android
DNS 应该没有缓存的问题,网络环境改变的话操作系统应该会清除缓存的。
|