坑嗲坑娘坑自己的「6666」端口(记一次网络故障排查)
上周末老子值班,客服同学打来电话,说XX订单有点问题,于是开机查问题,最后发现试nginx背后的其中一个实例貌似出了点问题,重启该实例,搞定。但上述这些都不是我今天要说的重点,接下来我需要把有问题的XX订单修复,偷个懒,就打算本地连VPN直接本地连现网服务去修复这笔订单,但接下来发生的事情,就是一个坑字……
问题现象
Postman是什么,自己百歌谷度!
Postman是一款功能强大的HTTP调试与模拟的chrome插件。
MYLL,怎么会不通呢?我不是有全部权限的吗?
问题排查
- 排除服务本身的问题
把地址改成nginx背后的实例,每个实例都测试了下,测试都是OK的。 - 排除nginx的问题
通过现网IDC的内网访问nginx汇聚服务,也是正常OK的。 - 排除VPN权限问题
找公司资深的RECH(David Jin同学)确认,我的账号对此机器是有权权限的,telnet也是通的,并直接拿HTTPcliet来访问,还是正常OK的。 - 排除本地网络问题
使用Fiddler抓包,我的天哪,居然没有抓到。 - 那问题显而易见,chrome出了“问题”
用chrome查问题,第一选择当然是“开发者工具”,映入眼帘的是“CAUTION: Provisional headers are shown”,这个警告的意思是说:请求的资源可能会被(扩展/或其他什么机制)屏蔽掉,如果放往常看到这个错误我基本上是忽略的。
要解决问题么有办法,通过google在SegmentFault上发现了这片文章:Chrome 里的请求报错 “CAUTION: Provisional headers are shown” 是什么意思? 一下子茅塞顿开。
之所以会出现这个警告,是因为去获取该资源的请求其实并(还)没有真的发生,所以 Header 里显示的是伪信息,直到服务器真的有响应返回,这里的 Header 信息才会被更新为真实的。不过这一切也可能不会发生,因为该请求可能会被屏蔽。比如说 AdBlock 什么的,当然了不全是浏览器扩展,具体情况具体分析了。
接下来通过Net Internals工具,在地址栏中键入:chrome://net-internals,重新发起请求,我们会惊奇地发现:
我们可以清晰的看到,并不是AdBlock(起初我还怀疑过它),ERR_UNSAFE_PORT,顾名思义就是“非安全端口” ,「6666」看上去挺酷的,可我现在真想哭,接下来的事情就还是交给Google吧(啊,Google上不了,好吧,那你就百度吧)。
问题解决
chrome加启动参数
找到chrome的快捷方式,右键属性,增加以下启动参数:–explicitly-allowed-ports=6666,6667,6668 如果有多个端口请用逗号隔开
类似:”C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” –explicitly-allowed-ports=6666重新build chrome
下载chrome的源码(http://www.chromium.org/),然后进行修改,再重新build。
聊聊Net Internals
Net Internals 是一套工具集合,用于帮助诊断网络请求与访问方面的问题,它通过监听和搜集 DNS,Sockets,SPDY,Caches 等事件与数据来向开发者反馈各种网络请求的过程、状态以及可能产生影响的因素。其中一个很重要的功能就是“测试”,如果你无法访问某个网址,那么可以使用 “chrome://net-internals” -> 点击“Tests” tab -> 输入网址,并点击开始测试,Chrome 将报告具体的问题所在。
然而,原因千千万,Net Internals 不可能那么聪明的就直接帮你分析出答案来,大多数情况下具体原因还是需要开发者通过抽丝剥茧自己来找原因的。
总个结
- 善于利用工具找问题:Postman+Fiddler+chrome开发者工具+Net Internals
- 善于利用网络搜索问题: Google、StackOverflow、SegmentFault……
附录:非安全端口列表
附上 Google Chrome 默认非安全端口列表,虽然以上方法可以解决问题,但建议尽量避免以下端口,谁想没事找麻烦啊:
1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]
6669, // Alternate IRC [Apple addition]
欢迎关注我的个人微信公众号:能叔