我想打开一个 SSH 隧道,如下所示:
ssh -f -N -L 172.16.0.0/12:5433:127.0.0.1:5432 server
但这个命令会引发错误:
channel_setup_fwd_listener_tcpip: getaddrinfo(172.16.0.0/12): Name or service not known
Could not request local forwarding.
如何将隧道转发到本地计算机上的多个接口?
我希望实现这一点,以便可以从该 CIDR 范围内的任何 docker 容器访问隧道172.16.0.0/12
。
服务器和本地计算机都在 Ubuntu 22.04.1 LTS 上使用OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
作为一种解决方法,我现在可以为每个本地 IP 打开一个隧道,或者更广泛地打开隧道,如下所示:
ssh -f -N -L 0.0.0.0:5433:127.0.0.1:5432 server
我不一定想要。
答案1
认为 SSH 隧道不会以这种方式工作。我推荐 Wireguard 来保护您的容器连接。
看一下https://www.linuxserver.io/blog/routing-docker-host-and-container-traffic-through-wireguard
该概念基于单独的 Wireguard 容器 (lscr.io/linuxserver/wireguard:latest )。这是 Wireguard 服务器
要保护的容器与此联系。然后,可以通过路由将流量有效地分布在 Wireguard 容器上。为了保持整个事情的可维护性,创建了客户端配置的共享文件夹(用于 Wireguards 客户端)
因为所有这些都相对复杂,所以我建议首先将所有内容写在纸上以准备 IP 和路由。