• 请不要在回答技术问题时复制粘贴 AI 生成的内容
saytesnake
V2EX  ›  程序员

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

  •  
  •   saytesnake · Apr 28, 2020 · 4386 views
    This topic created in 2385 days ago, the information mentioned may be changed or developed.
    就是为了通内部另外一个网段的两个数据库,最简单的方式,第一反应肯定是 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 [email protected]
    ssh -fCPN -L :50001:2.2.2.2:5432 [email protected]

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

    autossh -M 1234 -CPN -L :50000:1.1.1.1:5432 [email protected]
    autossh -M 5678 -CPN -L :50001:2.2.2.2:5432 [email protected]

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

    搞不懂。
    21 replies  •  2020-04-29 01:33:25 +08:00
    cubecube
    cubecube
    Apr 28, 2020
    1
    supervisor 自己监控 ssh 命令 比 autossh 靠谱。我之前也折腾过一整子 autossh,也有各种问题 最后放弃了。
    iyezi
    iyezi
    Apr 28, 2020
    2
    我选择用 systemd 监控 frp
    saytesnake
    saytesnake
    OP
    Apr 28, 2020
    3
    @cubecube 看来不是只有我遇到这个问题了。

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

    https://github.com/winglq/l4proxy
    PbCopy111
    PbCopy111
    Apr 28, 2020
    13
    如果修改服务器上 ssh 的配置呢:
    ClientAliveInterval 30
    Kobayashi
    Kobayashi
    Apr 28, 2020 via Android
    14
    autossh 已经属于被淘汰的玩意儿了,原理和内置的 ServerAlive 基本一致。( ServerAlive 配置在客户端设定连接服务器,ClientAlive 设定在服务端,只设置其一即可)
    如果 ServerAlive 还不行就 systemd 。
    如果还是断,那就别玩儿了,网络就这样了。
    wslzy007
    wslzy007
    Apr 28, 2020
    15
    直接上 sg 吧,足够轻量
    https://github.com/lazy-luo/smarGate
    saytesnake
    saytesnake
    OP
    Apr 28, 2020
    16
    @no1xsyzy 这个方法是有效的,也不用安装其它东西了。无论怎么说,CentOS 的包肯定是落后的,哈哈哈。
    shynome
    shynome
    Apr 28, 2020 via Android
    17
    tabliu
    tabliu
    Apr 28, 2020
    18
    ngrok
    iyezi
    iyezi
    Apr 28, 2020
    19
    @saytesnake #3 frp 里已经带上 systemd service 的模板,改改就能用了。https://github.com/fatedier/frp/tree/master/conf/systemd
    saytesnake
    saytesnake
    OP
    Apr 28, 2020
    20
    @iyezi 嗯谢谢~
    cubecube
    cubecube
    Apr 29, 2020 via Android❤️1
    21
    @iyezi 有时候只有一个 22 端口可用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   500 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 21:26 · PVG 05:26 · LAX 13:26 · JFK 16:26
    ♥ Do have faith in what you're doing.