前几天系统开发微信支付,需要提供微信支付成功异步通知地址,由于开发环境在局域网,所以使用了测试域名,再用Nginx将请求转发到开发者机器上,请求一直没法转发成功,提示Nginx:504 Gateway Time-out,后来在运维同事的帮助下,发现转发失败的原因是不同的环境彼此是网络隔离的,测试环境没有权限直接与开发机器通信,需要申请权限,汗,运维同事直接使用了telnet命令测试测试环境机器与开发者机器端口的网络连通性,就找到了问题所在,本篇博客记录并总结下类似问题分析步骤,此外还附带了telnet命令用法详解。
网络连通性排查步骤:
- 确认IP地址是否正确?
- 确认IP地址对应的主机是否已经开机?
- 如果主机已经启动,确认主机相应端口是否开启了相关服务?(使用netstat命令查看相应端口是否有LISTEN状态的行)
- 如果主机已经启动相关服务,确认防火墙是否放开了端口的访问?
- 如果是阿里云服务器,是否在【安全组规则】添加了【放行规则】(阿里云安全组默认未设置任何自定义放行规则,会导致无法访问实例端口,若需访问请添加安全组规则放行对应的端口)
- 如果是公司网络不同环境的机器,还是排查互相有无【访问权限】(比如测试环境机器与开发的机器,我碰上的问题就是测试机器无法访问开发机器)
Linux
[dsp@dsp ~]$ telnet www.baidu.com 80 Trying 220.181.112.244... Connected to www.baidu.com. # 说明网络连通 Escape character is '^]'. Connection closed by foreign host. [dsp@dsp ~]$ telnet example.com 12345 Trying 93.184.216.34... telnet: connect to address 93.184.216.34: Connection timed out Trying 2606:2800:220:1:248:1893:25c8:1946... telnet: connect to address 2606:2800:220:1:248:1893:25c8:1946: Network is unreachable # 说明网络不连通 [dsp@dsp ~]$
Windows
命令号下键入:telnet www.baidu.com 80,若连通了则进入全黑可输入界面,否则提示连接失败。
C:Usersdsp>telnet example.com 12345 正在连接example.com...无法打开到主机的连接。 在端口 12345: 连接失败 C:Usersdsp>