itsbegin
作者itsbegin·2013-01-22 10:14
软件开发工程师·上海通联支付

【范例】由SQL30081N引发的无法连接错误的分析处理(防火墙问题)

字数 4083阅读 3115评论 0赞 0
错误告警信息:
 
-bash-3.00$ db2 connect to rptdb user rptdb using rptdb
SQL30081N  A communication error has been detected.  Communication protocol
being used: "TCP/IP".  Communication API being used: "SOCKETS".  Location
where the error was detected: "192.168.2.63".  Communication function
detecting the error: "connect".  Protocol specific error code(s): "78", "*",
"*".  SQLSTATE=08001
 
分析思路:
 
1. 数据库连接,非本机的本地数据库,将通过服务/端口进行连接。因此先查看是否存在端口服务:
 
netstat -an|grep 60051
 
经查看端口服务没有问题。再查看一下是否为TCPIP的SOCKET连接指定参数,DB2COMM=TCPIP:
 
db2set -all
 
2. 此部分没有问题,这说明数据库端口服务存在,无配置问题。可以这样测试:
 
Telnet 192.168.2.63 60051
发现可以连接并有信息提示,说明存在端口服务。
 
3. 在非本机连接,同样用TELNET测试
 
发现无法连接并且没有任何回应。这通常是由于系统级别或网络级别的防火墙阻断导致。所有发送包都不回复就这样表现的。
 
4. 因测试客户端和此服务器同在192.168的测试网段,据我了解此段内所有服务器通过交换机连接,无防火墙策略设置。
 
排除网络问题。
 
5. 系统防火墙通过IPTABLES命令确认是否有策略和是否开启:
 
#/etc/init.d/iptables status
 
发现防火墙开启,并有策略:
Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255 
3    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0           
5    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353 
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631 
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631 
8    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
 
因此导致连接问题。
 
关闭防火墙命令:
#/etc/init.d/iptables stop
 
6. 再次测试,连接通过。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广