技术解析

[求助] 服务器除 22 端口外都访问不了
0
1975-02-24 07:12:54
idczone

AWS 一年免费的服务器,CentOS 7,服务器上跑了个博客,一周以前 80,443,3306 等端口都能正常访问,近期也未登陆过服务器做过什么事情,现在只有 22 端口能访问了,ssh 上去首先 ping 域名是 ping 不通的,ping 127.0.0.1 80 也是 ping 不通,ping 外部地址如 baidu.com 和 google.com 等可以 ping 的通,yum install 也是没网的状态,截取一条 yum install 报错:

http://ftp.tsukuba.wide.ad.jp/Linux/centos/7.6.1810/os/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2001:200:0:7c06::9393: Cannot assign requested address"
Trying other mirror.

安全组检查过了,相关端口都是开放的,服务器上的防火墙也检查过了,都关闭了,网卡配置从来没动过,服务器也只有我自己一个人知道,近期都没作过什么事情就这样了,现在不知道该怎么排查原因。

ifconfig:

eth0: flags=4163  mtu 9001
        inet 172.31.44.112  netmask 255.255.240.0  broadcast 172.31.41.255
        ether 06:d1:20:b2:3c:6a  txqueuelen 1000  (Ethernet)
        RX packets 86451  bytes 10479557 (9.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 98537  bytes 16441361 (15.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3128  bytes 518434 (506.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3128  bytes 518434 (506.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

netstat -ant:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 172.31.44.171:8050      0.0.0.0:*               LISTEN     
tcp        0      0 172.31.44.171:8051      0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:8005          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN     
tcp        0      0 172.31.44.171:22        218.92.0.208:55907      ESTABLISHED
tcp        0      0 127.0.0.1:3306          127.0.0.1:33572         ESTABLISHED
tcp        0      1 172.31.44.171:59208     178.128.242.134:3333    SYN_SENT   
tcp        0      1 172.31.44.171:49708     192.241.166.63:8080     SYN_SENT   
tcp        0      0 127.0.0.1:33564         127.0.0.1:3306          ESTABLISHED
tcp        0      0 172.31.44.171:22        218.92.0.164:17401      ESTABLISHED
tcp        0      0 127.0.0.1:3306          127.0.0.1:33580         ESTABLISHED
tcp        0      1 172.31.44.171:55168     178.128.242.134:443     SYN_SENT   
tcp        0      0 127.0.0.1:33580         127.0.0.1:3306          ESTABLISHED
tcp        0      0 172.31.44.171:22        27.156.57.251:2090      ESTABLISHED
tcp        0      0 127.0.0.1:3306          127.0.0.1:33548         ESTABLISHED
tcp        0      0 127.0.0.1:33548         127.0.0.1:3306          ESTABLISHED
tcp        0      0 172.31.44.171:22        27.156.57.251:4413      ESTABLISHED
tcp        0      0 127.0.0.1:33562         127.0.0.1:3306          ESTABLISHED
tcp        0      1 172.31.44.171:60426     72.4.120.219:80         SYN_SENT   
tcp        0      0 127.0.0.1:3306          127.0.0.1:33564         ESTABLISHED
tcp        0      0 127.0.0.1:33572         127.0.0.1:3306          ESTABLISHED
tcp        0      0 127.0.0.1:3306          127.0.0.1:33562         ESTABLISHED
tcp6       0      0 :::80                   :::*                    LISTEN     
tcp6       0      0 :::10000                :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::10010                :::*                    LISTEN

ping 的内容是什么样的

eth0 的 mtu 是 9000 ?逗我呢吧……

ping 自己域名和本地端口没有任何反应,光标一直闪,没有任何 ping 的信息出来

学会用 telnet

出问题的 telnet 现在想装 telnet 装不上去,其他机器上 telnet 上去也是只有 22 正常

没备案

服务器上有没有安装安全类工具?

域名解析到国外的服务器不需要备案吧,而且除 80 和 443 端口,其他端口也不行

没懂你说的 “ ssh 上去首先 ping 域名是 ping 不通的,ping 127.0.0.1 80 也是 ping 不通,ping 外部地址如 baidu.com 和 google.com 等可以 ping 的通” 是什么意思,你能 ping 通 google 之类但 ping 不通 自己的域名?你 ping 端口是怎么 ping 的?
看你 yum 是访问的 IPv6 地址,如果用 IPv4 地址能访问那个站点么?比如 curl -4v 'http://ftp.tsukuba.wide.ad.jp/'

没有的,没有任何此类工具


我通过 22 端口 ssh 上服务器,在服务器上执行:ping baidu.com ,结果:
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=39 time=142 ms
64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=39 time=143 ms
而,执行 ping 我的域名地址或 ping 127.0.0.1 80,则没有任何应答,也没提示连接超时之类的,ping 端口是直接在 ip 尾巴加上空格端口号去 ping 的。
指定使用 IPV4,执行 curl -4v 'http://ftp.tsukuba.wide.ad.jp/'也是无任何应答信息。


执行 curl -4v 'http://ftp.tsukuba.wide.ad.jp/'结果:
* About to connect() to ftp.tsukuba.wide.ad.jp port 80 (/>* Trying 203.178.132.80...
* Connection timed out
* Failed connect to ftp.tsukuba.wide.ad.jp:80; Connection timed out
* Closing connection 0
curl: (7) Failed connect to ftp.tsukuba.wide.ad.jp:80; Connection timed out

你那个 ping 端口的用法不正确,一般的 ping 只能 ping IP,你试过直接 “ ping 127.0.0.1 ” 吗?
我这里获取到的 ftp.tsukuba.wide.ad.jp IP 也是 203.178.132.80 ,不清楚是不是那边路由有问题,看看 “ traceroute 203.178.132.80 ”的结果。


直接 ping 127.0.0.1 是可以的,ping 本机内网地址也可以,ping 外网地址就不行了。
traceroute 之前没有安装,现在 yum 安装不了了所以没办法试了。

不是说 ping Baidu Google 是好的么?你可以多试几个站点,看能 ping 的和不能 ping 的有什么特点。另外你可以试试从多个节点 ping 你的域名,比如 https://asm.ca.com/en/ping.php ,看有没有什么分布上的问题。不知道你的域名解析出来的 IP 是公网的还是内网的,服务商有没有禁 ping 之类。

PING? ICMP 包能测试 TCP??
请安装 tcping 或 NC..谢谢....

描述的不恰当,应该是我的服务器上 ping 我的服务器内网地址可以,ping 我的服务器公网 ip 就不行了。
用站长工具 ping 了一下自己的域名,解析出来是正确的公网 IP,但是 130 个不同地区的节点全部都是超时的。

IGW 路由表 安全组 acl 挨个检查过来,如果对 aws 不熟悉的话,直接重置 ec2 比较简单。

看看 SELinux 状态有没有关闭

ICMP ping 还能这么用么
ping 127.0.0.7 80
厉害

ping 的这个用法真厉害,佩服

要运维找我 单次长期都可以 搞不定就下载文件和数据库 重建又没几分钟

估计安全策略什么的禁 ping 了,所以 ping 不了公网地址,关了就可以了

看 ifconfig 是 ipv4,为啥 yum 是走的 ipv6 呢

一般这种情况 重启就好了

先把 IPV6 给关掉再试一试呢?

首先,ICMP 协议不支持 TCP。。。ping 命令的正确用法是:ping ip 地址,或者 ping 域名
其次,80 端口在服务器上有没有应用在监听,应该使用 netstat 命令
最后,端口在监听但无法访问,要看 iptable、防火墙、云平台的安全策略等等是不是做了访问限制

aws 貌似关机开机就会换 ip

curl 检查端口例如 curl localhost:80 curl z. cn 用起来比 telne 方便多了

1、aws 的 ipv6 没配置好,需要去网络策略里去调,你这种情况建议彻底关了,具体 google
2、ec2 的网络控制里你可以之前打开了指定 ip 可访问的策略,现在你的 ip 地址变了,导致无法访问

1、看你这个应该是 80 端口开了的,没多大问题,你可以测试一下 curl -I http://127.0.0.1,测试一下是否真的开了,然后确定是否有防火墙从本地禁止;
2、cur ifconfig.com 查看本机的公网地址,是否就是你域名绑定的那个;
3、公网上 curl -I http://`curl ifconfig.me` 注:ifconfig.me 是在服务器上获取的那个结果。如果不可以,记得检测一下你的防火墙;如果有内网的其他机器 直接 curl 测试一下最佳,如果可以访问,那你的服务器是没有多少问题的,可能发生在中间的防火墙上面;
4、官方会重置数据包,不会丢弃数据包,所以不会出现 timeout 这样的错误;

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服