已发送SYN_中与mysql服务器的连接

已发送SYN_中与mysql服务器的连接,mysql,tcp,rhel,rhel5,Mysql,Tcp,Rhel,Rhel5,从最近几天开始,我们在应用服务器和数据库服务器mysql之间遇到了一个奇怪的问题:从应用服务器到数据库服务器的连接处于SYN_SENT状态,此后我们无法在mysql端口3306上与数据库服务器建立任何连接。当我们检查数据库服务器上的netstat输出时,它处于SYN_RECV状态 我能弄清楚的是,mysql服务器正在接收SYN请求并做出响应,它没有到达客户端,因此服务器端的SYN_RECV和客户端发送的SYN_。我认为SYN_SENT状态应该在一段时间后恢复,并且由于这个原因,到同一服务器的其他

从最近几天开始,我们在应用服务器和数据库服务器mysql之间遇到了一个奇怪的问题:从应用服务器到数据库服务器的连接处于SYN_SENT状态,此后我们无法在mysql端口3306上与数据库服务器建立任何连接。当我们检查数据库服务器上的netstat输出时,它处于SYN_RECV状态

我能弄清楚的是,mysql服务器正在接收SYN请求并做出响应,它没有到达客户端,因此服务器端的SYN_RECV和客户端发送的SYN_。我认为SYN_SENT状态应该在一段时间后恢复,并且由于这个原因,到同一服务器的其他db连接尝试不应该挂起

有人知道我们如何解决这个问题吗


Out安装详细信息:应用程序服务器:RHEL 5.4,内核版本=2.6.18-164.el5,x86_64数据库服务器:Mysql版本:5.1.49 RHEL 5.4,内核版本=2.6.18-164.el5,x86_64 在my.cnf的绑定地址中设置127.0.0.1

修复与远程ip的连接 远程IP替换为远程IP

iptables -A INPUT -p tcp -d 127.0.0.1 --dport 3306 -s REMOTE_IP -j ACCEPT
iptables -A INPUT -p udp -d 127.0.0.1 --dport 3306 -s REMOTE_IP -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
iptables -A INPUT -p udp --dport 3306 -j DROP
您还需要将my.cnf中的绑定ip设置为0.0.0.0。第二条规则你不需要,我只是确定一下;udp部分

概念证明: 首先允许从remoteip连接到目标-d 127.0.0.1=localhost -p tcp/udp=协议tcp或udp

在此规则之后,您需要制定一个规则,将所有对tcp/udp连接的请求删除到端口3306

为什么这样做有效: 因为iptables是数字的。总是一条接一条的规则

您可以使用以下命令查看您的规则:

iptables -L INPUT -n --line-numbers
显示的第一条规则是第一条规则,因此,如果您说接受所有连接,然后从ip x.x.x.x所有连接中删除,则该规则不起作用。 您需要选择作为第一条规则,从该ip删除所有连接,然后允许所有连接。这是个坏例子

如果输入失败,则可以显示规则,并在规则前面输入数字,然后使用以下命令删除规则:

iptables -D INPUT <<number here>>

这是一个修复还是一个坏例子?请澄清。并删除不相关的UDP规则。如果服务器已经接收到SYN并做出响应,这怎么可能是一个修复?