我的要求是我应该能够连接到不在我的网络中的不同数据库。我应该能够通过防火墙建立连接,Nat。我们已经尝试过 Ngrok,它是一个可以安装在我网络之外的机器中的工具。使用 ngrok 我们可以通过传递它们来将 tcp 或 http 端口公开给公共(public)访问防火墙和 Nat 规则。
使用 ngrok,我可以通过在 SQL Server 默认端口 1433 上创建 TCP 隧道,在某些第三方网络中建立与 SQL Server 的连接。为此,我需要在该服务器中安装 Ngrok。
我尝试通过公开 TCP 21(FTP 协议(protocol))使用 ngrok 连接那些基于文件的数据库(例如:Visual Fox Pro),但没有成功。
我如何连接到基于使用或任何其他工具的文件的文档数据库?我无法通过公开一些用于隧道的 http 或 tcp 端口来找到连接它们的方法?
最佳答案
没有办法,如果你不这样做,你可以绕过“他们的”防火墙规则:
- 控制运行防火墙的服务器;
- 已发现防火墙中的错误;
如果你可以控制服务器,那么你只需要公开任何未被拒绝的端口(比如端口 80,如果端口被占用,试试另一个)并将流量传递到数据库端口(比如 1433)。顺便说一句,这不是 ngrok 正在做的事情。为此,您可以使用:
- netcat/socat,像这样:
netcat -L 127.0.0.1:1433 -p 80 -vvv
- 这意味着:监听端口 80,当有人从外部连接到端口 80 时,建立一个连接到端口 1433 上的转发流量。查看更多:http://www.devkb.org/linux/115-TCP-tunnel-port-forwarding-using-Netcat - ssh 隧道(如果您需要加密);
请注意,传统上隧道用于绕过“本地防火墙”。因此,例如,您有一个公司政策不允许某些网站(我有公司不允许 SO 本身!)但是有 linux 服务器不受此政策的约束。 SSH 代理在这种情况下很有用。
关于c# - 有什么方法可以使用 TCP 隧道连接到 Visual Fox pro 等文档数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48163142/