2017-06-26 60 views
0

我想知道是否可以将SQL查询从本地主机转发到另一个本地IP地址?SQL Server的Linux转发

我不想在Linux上安装SQL Server,但我需要通过本地主机在另一台PC上连接它。

感谢

回答

1

您可以用iptables:

iptables -A FORWARD -p tcp -i eth0 -s localhost -d x.x.x.x --dport 3306 -j ACCEPT 

其中X.X.X.X是MySQL服务器的IP地址,并为eth0是您使用的接口。

+0

谢谢!但我使用firewalld。我试过这个命令firewall-cmd --zone = external --add-forward-port = port = 1433:proto = tcp:toaddr = 192.168.1.110。它不起作用。 sql客户端总是说连接被拒绝 – Sergey

1

看起来好像你在问你是否在你想要查询本地主机的Linux机器上,并将该查询转发给SQL Server。在这种情况下,上面的答案是部分正确的,并且将允许数据包被转发,但实际上并不执行前向/重定向。你也会说“SQL Server”,我认为它是指MS SQL Server。这种情况下的默认端口被列为1433.您实际上需要(2)规则:

# iptables -t nat -A PREROUTING -p tcp -i lo -d localhost --dport 1433 -j DNAT --to-destination x.x.x.x # where x.x.x.x is the SQL Server IP address 
# iptables -A FORWARD -i lo -p tcp --dport -j ACCEPT # only if your default FORWARD policy is DROP. Otherwise you just need the prerouting rule. 
+0

是的,这就是我想要的。谢谢!但我使用firewalld。我试过这个命令firewall-cmd --zone = external --add-forward-port = port = 1433:proto = tcp:toaddr = 192.168.1.110。它不起作用。 sql客户端总是说连接被拒绝。 – Sergey

+0

很可能是因为'lo'界面不倾向于属于任何firewalld区域。它看起来像你的代码可能是基于互联网的例子。你的默认区域是'external'('firewall-cmd --get-default-zone')?如果不是,它将不匹配接口'lo'。如果在上述命令中有不同的默认区域(例如public),则使用该区域而不是“external”。无论如何, – LJKims

+0

无法正常工作。不明白什么是错的。 – Sergey