背景:infra 交付了一批服务器,部署好服务后,发现所有服务器端口 curl 不可
环境: 服务器 IP 192.168.1.1, 内部网络
问题详情:
1、服务器部署了 node_exporter, 端口 9100. lsof 和 netstat -nlp 均显示 9100 端口启用,防火墙未开启
访问 curl 192.168.1.1:9100/metrics 没有结果
访问 curl 127.0.0.1:9100 /metrics 没有结果
2、安装 apache2 apt install apache2 -y
,lsof 和 netstat -nlp 均显示 80 端口启用
root@master-drt-001:~# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 4458 root 4u IPv6 55500 0t0 TCP *:http (LISTEN)
apache2 4461 www-data 4u IPv6 55500 0t0 TCP *:http (LISTEN)
apache2 4462 www-data 4u IPv6 55500 0t0 TCP *:http (LISTEN)
curl localhost
root@master-drt-001:~# curl 127.0.0.1
......
<div id="content">
<p>The following error was encountered while trying to retrieve the URL: <a href="http://127.0.0.1/">http://127.0.0.1/</a></p>
<blockquote id="error">
<p><b>Connection to 127.0.0.1 failed.</b></p>
</blockquote>
<p id="sysmsg">The system returned: <i>(111) Connection refused</i></p>
<p>The remote host or network may be down. Please try the request again.</p>
<p>Your cache administrator is <a href="mailto:webmaster?subject=CacheErrorInfo%20-%20ERR_CONNECT_FAIL&body=CacheHost%3A%20ubuntu%0D%0AErrPage%3A%20ERR_CONNECT_FAIL%0D%0AErr%3A%20(111)%20Connection%20refused%0D%0ATimeStamp%3A%20Thu,%2019%20Aug%202021%2002%3A04%3A39%20GMT%0D%0A%0D%0AClientIP%3A%2010.72.32.97%0D%0AServerIP%3A%20127.0.0.1%0D%0A%0D%0AHTTP%20Request%3A%0D%0AGET%20%2F%20HTTP%2F1.1%0AUser-Agent%3A%20curl%2F7.47.0%0D%0AAccept%3A%20*%2F*%0D%0AProxy-Connection%3A%20Keep-Alive%0D%0AHost%3A%20127.0.0.1%0D%0A%0D%0A%0D%0A">webmaster</a>.</p>
.....
curl ip 192.168.1.1, 没有反应
其他服务器如192.168.1.2 curl 192.168.1.1, 没有反应
3、在 192.168.1.1 上开启 tcpdump
tcpdump host 192.168.1.2 and port 80
然后在 192.168.1.2 执行
curl 192.168.1.1
在 192.168.1.1 上 tcpdump 并没有抓到包
4、在 192.168.1.2 上 telnet 192.168.1.1 80
telnet 可以通,此时在 192.168.1.1 上 tcpdump 可以抓到包
5、与 infra 沟通,最后发现问题在 /etc/profile 中存在 proxy 设置
export http_proxy="http://192.168.3.1"
export https_proxy="http://192.168.3.1"
注释掉着 2 行,重新登陆服务器即可
总结:
其实在第 4 步就可以发现,http 协议有问题,tcp 协议没问题,可以怀疑是 proxy 设置问题。