内网隧道转发并保持链接,除了 autossh 以外还有方式吗?

2020-04-28 10:29:24 +08:00
 saytesnake
就是为了通内部另外一个网段的两个数据库,最简单的方式,第一反应肯定是 SSH 隧道。

数据库 A,1.1.1.1:5432
数据库 B,2.2.2.2:5432

中转机,192.168.1.2
转发机,192.168.1.3

在转发机 192.168.1.3 操作,

ssh -fCPN -L :50000:1.1.1.1:5432 root@192.168.1.2
ssh -fCPN -L :50001:2.2.2.2:5432 root@192.168.1.2

不过没有有效连接的情况下,超时之后肯定会断,那得用 autossh 了,不过可能方式不太对。

autossh -M 1234 -CPN -L :50000:1.1.1.1:5432 root@192.168.1.2
autossh -M 5678 -CPN -L :50001:2.2.2.2:5432 root@192.168.1.2

启动输入密码后偶尔会提示 remote port forwarding failed for listen port 1234,系统日志会提示说,ssh exited with error status 255; restarting ssh,持续时间很短后自己就断掉了,而且也不会自己重连,谷歌查了有些文章,试了其它命令,都不太行,另外不明原因 autossh -f 后台启动是无效的...

搞不懂。
3038 次点击
所在节点    程序员
21 条回复
cubecube
2020-04-28 10:32:40 +08:00
supervisor 自己监控 ssh 命令 比 autossh 靠谱。我之前也折腾过一整子 autossh,也有各种问题 最后放弃了。
iyezi
2020-04-28 10:58:06 +08:00
我选择用 systemd 监控 frp
saytesnake
2020-04-28 11:23:46 +08:00
@cubecube 看来不是只有我遇到这个问题了。

@iyezi systemd 的写法,是不是类似这样的,https://gist.github.com/drmalex07/c0f9304deea566842490
tuxz
2020-04-28 11:28:05 +08:00
可以试试 frp
tuxz
2020-04-28 11:29:15 +08:00
autossh 是检查到 ssh 断开后会自动重连
saytesnake
2020-04-28 11:37:34 +08:00
@tuxz FRP 应该可以的,就是为了方便,不想装第三方的东西。
tuxz
2020-04-28 11:39:47 +08:00
@saytesnake #6 autossh 自动重连失败的话,可以 debug,看下日志
no1xsyzy
2020-04-28 11:41:57 +08:00
@saytesnake #3 @ 的语法注意一下就行,你需要在 /etc/default/secure-tunnel@a-name 里面写点东西,然后 systemctl --user enable secure-tunnel@a-name.service
不清楚是 arch 的包比较先进还是 $$ 那边终于先进了,好久没碰 linux,最近装了 arch 发现了 sslocal 用了这个语法……
abcdabcd987
2020-04-28 11:43:50 +08:00
autossh -M 0 -o ServerAliveInterval=10 -o ServerAliveCountMax=2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes
MeteorCat
2020-04-28 11:44:57 +08:00
tinc 可以
no1xsyzy
2020-04-28 11:48:31 +08:00
supervisor 也好用,倾向于 supervisor 处理业务服务,systemd 处理系统服务
大部分情况下差得不多,supervisor 可以直接 attach 上去,如果是有控制台界面的服务端程序,比如 MC,supervisor 效果好得多。
winglq
2020-04-28 12:32:31 +08:00
我有个类似需求,所以写了个工具,你可以试试。已经稳定使用挺久了。

https://github.com/winglq/l4proxy
PbCopy111
2020-04-28 12:41:08 +08:00
如果修改服务器上 ssh 的配置呢:
ClientAliveInterval 30
Kobayashi
2020-04-28 12:47:11 +08:00
autossh 已经属于被淘汰的玩意儿了,原理和内置的 ServerAlive 基本一致。( ServerAlive 配置在客户端设定连接服务器,ClientAlive 设定在服务端,只设置其一即可)
如果 ServerAlive 还不行就 systemd 。
如果还是断,那就别玩儿了,网络就这样了。
wslzy007
2020-04-28 13:11:56 +08:00
直接上 sg 吧,足够轻量
https://github.com/lazy-luo/smarGate
saytesnake
2020-04-28 14:02:19 +08:00
@no1xsyzy 这个方法是有效的,也不用安装其它东西了。无论怎么说,CentOS 的包肯定是落后的,哈哈哈。
shynome
2020-04-28 14:20:27 +08:00
tabliu
2020-04-28 15:57:15 +08:00
ngrok
iyezi
2020-04-28 16:03:51 +08:00
@saytesnake #3 frp 里已经带上 systemd service 的模板,改改就能用了。https://github.com/fatedier/frp/tree/master/conf/systemd
saytesnake
2020-04-28 16:51:45 +08:00
@iyezi 嗯谢谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666837

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX