前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >客户端无法连接数据库的小问题(r8笔记第53天)

客户端无法连接数据库的小问题(r8笔记第53天)

作者头像
jeanron100
发布2018-03-19 14:50:57
1.1K0
发布2018-03-19 14:50:57
举报

最近碰到了一个比较奇怪的数据库连接问题。问题的起因是做一个数据整合的时候,把服务器B的防火墙信息都拷贝到了服务器A,迁移的过程都很顺利,是一套开 发测试环境,迁移完成之后,从应用的反馈来说都没有发现问题,过了几天有个开发的同事找到我说,她现在连接数据库的时候总是有超时的错误。之前连接服务器 B是没有问题的,想让我帮她看看。 对于这个问题,最直接的思路就是防火墙了,确认客户端IP,端口库,数据库实例名都没有问题,但是她那边的反馈就是怎么都连接不了。而且比较奇怪的是和她 一个组的另外一个同事连接就没有问题,所以就想如果跨网段实在访问不了,应该是得找IT的同事来解决了吧,是不是有什么特定的规则限制,最开始也没有怎么 上心,但是等她再次找到我时,感觉这个问题确实有些奇怪。 为了进一步验证,我专门抽了一些时间来了解开发同学的这个连接问题,最后为了进一步确认,我们开了远程协助,我可以看到她那边的连接情况。 基本情况如下: tnsping 显示操作超时 使用telnet连接22号端口,显示连接失败,目前开了22号的端口 使用ping 服务器,显示正常 所以这个问题看起来就比较奇怪,而且有些让人捉摸不透,在服务器端再三确认了防火墙的设置。可以看到防火墙是开通了1521,22和1528的端口的。 # iptables -nvL|grep 10.12.1.12 374 39102 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1528 0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 22 0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521 但是现在情况是tnsping和telnet都是失败的。 带着一丝尝试,重新赋予了1521端口的权限,再次查看也确认开通了,这个时候继续尝试连接就没有问题了。 # iptables -nvL|grep 10.12.1.12 5 299 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521,1522 374 39102 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1528 0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 22 0 0 ACCEPT tcp -- eth0 * 10.12.1.12 0.0.0.0/0 multiport dports 1521 这个问题虽然解决了,但是问题原因还是没有找到,于是今天继续查看。终于在同事的帮助下找到了原因。在/etc/sysconfig/iptables里面的内容和内存中的内容是同步的。得到的文件内容结果有这么一段。 -A INPUT -s 10.10.xx.61/32 -i eth0 -j ACCEPT -A INPUT -s 10.10.xx.60/32 -i eth0 -j ACCEPT -A INPUT -s 192.168.xx.232/32 -i eth0 -j ACCEPT -A INPUT -s 192.168.xx.228/32 -i eth0 -j ACCEPT -A INPUT -i eth0 -p icmp -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i eth0 -p icmp -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i eth1 -j DROP -A INPUT -i eth0 -j DROP -A INPUT -s 10.12.xx.99/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT -A INPUT -s 10.12.1.12/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT -A INPUT -s 10.127.xxx.82/32 -i eth0 -p tcp -m multiport --dports 10050 -j ACCEPT -A INPUT -s 10.127.xxx.82/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT 当然亮点的还是 -A INPUT -s 10.12.1.12/32 -i eth0 -p tcp -m multiport --dports 1521 -j ACCEPT 这一行上面的内容 -A INPUT -i eth0 -j DROP 这一行的内容代表的含义是不允许eth0的网卡访问,在防火墙设置里面还是存在这样一种依赖,自上向下,规则越严格,越要放在最上面。 所以之一行之后的连接都被限制了。当然通过iptables -nvL也确实看到后面的哪些IP确实都没有任何的流量。 问题到了这里就很清楚了,当然这也是对防火墙的操作不够规范导致的。可以把防火墙中的内容转化为iptables的命令,避免直接拷贝文件内容这种简单粗暴的方式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档