如何将远程计算机的连接路由到本地计算机上的端口

如何将远程计算机的连接路由到本地计算机上的端口

我们有现有的 SQL 连接字符串,如“tcp:aws.server.address,1433”。

我们不能再直接连接到 aws.server.address,而是必须通过跳转服务器。

如果不修改连接字符串,我必须在 Windows 中做什么来确保针对端口 1433 上的 aws.server.address 的流量实际上被迫通过通过 SSH 隧道建立的本地端口(即 5001),如下所示:

ssh -L 5001:aws.服务器地址:1433[电子邮件保护]

我以为我可以使用 netsh interface portproxy,其 listenaddress、listenport 等于 aws.server.address、1433,connectaddress、connectport 等于 127.0.0.1、5001,但这似乎不起作用。它不会“监听”针对远程服务器的连接,也不会将它们“连接”到我指定的本地端口。

我还尝试使用 ssh 命令的 -N 选项不打开任何命令会话。也许我必须对路由表或 IP 表做一些小技巧?

此处的整个目标是通过此隧道重新路由以 aws.server.address,1433 为目标的流量,这样我就不必将所有连接字符串更改为某个本地地址和端口。一定有办法做到这一点。

例如:这基本上是我需要映射多个地址的情况......所有地址都针对单个端口(1433)到针对多个端口的单个地址(localhost)(特定服务器的唯一跳转主机连接)。

remoteAddressA:port1433 -> forwarded to -> localhost:port5001

remoteAddressB:port1433 -> forwarded to -> localhost:port5002

其中 locahost:port5001 是通过跳转服务器到 remoteAddressA 的 shh 隧道,localhost:port5002 是通过跳转服务器到 remoteAddressB 的另一个 ssh 隧道。

答案1

假设您想要拦截端口 1433 上到 my.url 的 SQL Server 连接。

这可以通过首先添加 HOSTS 文件条目来完成,以便 URL 解析为这样的本地地址(将此行添加到 HOSTS 文件):

127.5.0.1 my.url

接下来,运行命令“netsh 接口 portproxy 添加 v4tov4“并指定其4个参数,将监听地址127.5.0.1和监听端口1433映射到您想要的本地连接地址和连接端口。

相关内容