Connection refused问题总结

之前有一篇在雪球的时候遇见TCP的:

TCP的CLOSE_WAIT和TIME_WAIT问题汇总

TCP连接问题排查

目录

case1

case2

case3

case4 tcpkill 断开源端连接

case5 模拟网络波动


这次接着进行汇总:

case1

在进行部署服务时候,线上日志有报错:

NETWORK_ERROR:

Connect to xxx.xxx.com:443  failed: Connection refused

发现是安全拦截导致,因为在安全的IP封禁里面的规则对于别人是不可见的,部分出口防火墙的公网被安全封禁,在开发人员你那边是不清楚底层网络通信被转了几手,中间通过了哪些个节点,所以可以询问下网络同事

case2

如在申请完网络权限之后发现业务仍不能正常访问,请按照如下步骤进行测试。

1、进行ping的联通性测试,如果ping不通可联系网络查看,ping正常可进行第2步测试。(有些第三方机构有可能禁ping,ping不通的情况下可进行第二步测试)

2、进行nc -zv 端口的测试,返回succeeded则表示网络权限已开通;如果返回connection refused则表示链接被server端拒绝,可检查server应用端口是否启用或是否有iptables限制;nc测试返回connect timeout一般是网络权限的限制,联系网络开通。

  • [supdev@JXQ-23-58-2 ~]$ nc -zv x.x.x.x 80

Connection to 172.23.58.4 80 port [tcp/http] succeeded!    权限无问题,请检查应用。

  • [supdev@JXQ-23-58-2 ~]$ nc -zv x.x.x.x 81

nc: connect to 172.23.58.4 port 81 (tcp) failed: Connection refused  检查server应用端口是否启用或是否有iptables限制。

  • [supdev@JXQ-23-58-2 ~]$ nc -zv x.x.x.x 80 

nc: connect to 172.23.254.125 port 80 (tcp) failed: Connection timed out 一般是网络权限限制,联系网络开通。

注:

有关connection refused和connection timeout的问题解释请参考如下链接:

Linux TCP连接Connection Refused和Connection timed out的问题 - TypeCodes

3 问题的总结

到这里问题已经解决了,但是自己对于tcp出现Connection timed out的错误认识不足,只想到是自己服务端close_wait引起的问题。下面是自己对tcp握手过程中出现Connection refusedConnection timed out的总结。

3.1 Connection refused

使用telnet来检查tcp链路时,如果遇到"Connection refused"的错误,那么表示从本地客户端到目标IP地址的路由是正常的,但是该目标端口没有进程在监听,然后服务端拒绝掉了连接。

一个成功的tcp链接将会看到SynSyn-AckAck,这也就是我们预期的TCP三次握手。当使用tcpdumpwireshark抓包工具来探测发送过来的请求报文包时,Connection refused将会看到Syn,Rst

3.2 Connection timed out

如果telnet的时候,TCP路由不正常,那么会得到一个Connection timed out的错误。"Couldn't connect"原因有很多,可能是服务器无法ping通,可能是服务器(防火墙等)丢弃了该请求报文包,也可能是服务器应答太慢,又或者存在间歇性的问题(这种情况很难从日志文件中排查问题)。

case3

访问慢大概率可能的原因:

  • 网络丢包
  • 服务端慢

排查:

以客户端x.x.x.1访问服务端x.x.x.2:80/aaa/bbb/adsdf 为例。

步骤1、在x.x.x.1上:ping x.x.x.2,查看是否有丢包(packet loss),1%以上确认中间网络的链路就有丢包故障。

步骤2:在x.x.x.1上:telnet x.x.x.2 80,查看response速度,正常应该是瞬间返回,人为几乎感知不到延迟。

                                                 如果出现“refused”字样,说明服务端应用端口未开启;

                                                 如果出现“timeout”字样,但能ping通,说明端口不可达,中间控制(网络或服务端系统)未放开;

步骤3:在x.x.x.1上:time curl x.x.x.2 80,无参数或者其他参数时的访问时延。

                                                如果访问无参数或者其他参数时的时间非常快,证明网络没问题,需要排查服务端延时较大应用的状态(逻辑和性能负荷)。

case4 tcpkill 断开源端连接

命令:  tcpkill -i any -9 host 192.168.56.101 port 53054

表现: 进程退出

case5 模拟网络波动

操作: 使用tc工具模拟源端网络延迟与丢包

#延迟1s

tc qdisc add dev enp0s8 root netem delay 1000ms

#8%丢包

tc qdisc add dev enp0s8 root netem loss 8%

#删除延迟与丢包规则

tc qdisc del dev enp0s8 root

case6 断开源端连接

命令:kill -15

表现: kill -15 普通连接(SrcConn) 数据同步正常,无提示

            kill -15 xxx ,进程退出,报错为收到用户请求关闭连接

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Connection refused (Connection refused)"是一种网络连接错误,表示客户端无法连接到服务器。这种错误可能由多种原因引起。引用提供了一些可能导致此错误的原因和解决方法: 1)端口号被占用:需要杀死占用端口号的进程,释放端口,重新启动项目或彻底关闭Tomcat服务器。 2)服务器未运行或未监听端口:需要检查服务器是否正在运行并侦听正确的端口。 3)客户端和服务器之间没有网络连接:可能是因为客户端或服务器没有连接到任何网络,需要确保网络连接正常。 4)防火墙限制:如果企业网络受到防火墙保护,需要确保防火墙允许客户端与服务器IP地址和端口号之间的连接。 5)连接字符串中的协议不正确:需要确保连接字符串中传递的协议与服务器期望的协议一致。 总结来说,"Connection refused (Connection refused)"错误可能是由于端口被占用、服务器未运行或未监听端口、网络连接问题、防火墙限制或连接字符串中的协议不正确等原因引起的。您可以根据具体情况检查并解决这些问题。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [putty connection refused问题](https://download.csdn.net/download/mowang12527210/10291215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Connection refused: connect问题解决方案集合](https://blog.csdn.net/TomHaveNoCat/article/details/82868336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值