![使用 IP 表进行 MS SQL 端口转发](https://linux22.com/image/720647/%E4%BD%BF%E7%94%A8%20IP%20%E8%A1%A8%E8%BF%9B%E8%A1%8C%20MS%20SQL%20%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91.png)
我有 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