SQL Server的Linux转发
您可以用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是您使用的接口。
看起来好像你在问你是否在你想要查询本地主机的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.
是的,这就是我想要的。谢谢!但我使用firewalld。我试过这个命令firewall-cmd --zone = external --add-forward-port = port = 1433:proto = tcp:toaddr = 192.168.1.110。它不起作用。 sql客户端总是说连接被拒绝。 – Sergey
很可能是因为'lo'界面不倾向于属于任何firewalld区域。它看起来像你的代码可能是基于互联网的例子。你的默认区域是'external'('firewall-cmd --get-default-zone')?如果不是,它将不匹配接口'lo'。如果在上述命令中有不同的默认区域(例如public),则使用该区域而不是“external”。无论如何, – LJKims
无法正常工作。不明白什么是错的。 – Sergey
谢谢!但我使用firewalld。我试过这个命令firewall-cmd --zone = external --add-forward-port = port = 1433:proto = tcp:toaddr = 192.168.1.110。它不起作用。 sql客户端总是说连接被拒绝 – Sergey