使用 IP 表进行 MS SQL 端口转发

使用 IP 表进行 MS SQL 端口转发

我有 2 个远程服务器,一个是 Linux 机器,另一个是 Windows 机器。Windows 机器运行的是 MS SQL Server。它位于防火墙后面,我只能从我的 Linux 机器访问它(我可以通过 netcat 连接到端口 1433 上的 Windows 机器,因此一切正常)。

我想使用 Linux 机器作为代理,这样我就可以从我的桌面连接到 MS-SQL 服务器。

我尝试使用以下配置在 Linux 机器上设置 IP 表,但我的桌面仍然无法连接。

#!/bin/sh

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -A PREROUTING -p tcp --dport 1433 -j DNAT --to-destination xxx.xxx.xxx.xxx:1433

任何帮助将不胜感激!

答案1

您好,请尝试以下操作:`

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1433 -j DNAT --to xxx.xxx.xxx.xxx:1433 iptables -A FORWARD -p tcp -d xxx.xxx.xxx.xxx --dport 1433 -j ACCEPT

我将尝试简要解释一下流程。首先,您已经完成的 nat 中的预路由是可以的。

NAT 预路由是第一个路由器决策之前的最后一条链。由于流量的目的地不是您的主机,因此路由器会决定将其交给 Mangle 转发和过滤转发。这就是为什么您还需要添加转发规则来接受发往 MS SQL 主机的流量。

答案2

我最终使用 HA Proxy 来做我需要做的事情——非常简单,配置文件如下。

listen sql-db
    bind *:2233
    mode tcp
    balance leastconn
    acl db_white_list src 0.0.0.0 xxx.xxx.xxx.xxx #(my desktop IP)
    tcp-request connection reject if !db_white_list
    option log-health-checks
    server server1 xxx.xxx.xxx.xxx:2233 check port 2233 inter 1000

相关内容