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<UP,BROADCAST,RUNNING,MULTICAST> 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<UP,LOOPBACK,RUNNING> 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
1
Levox 2019-05-12 15:06:08 +08:00
ping 的内容是什么样的
|
2
mason961125 2019-05-12 15:21:42 +08:00 via iPhone
eth0 的 mtu 是 9000 ?逗我呢吧……
|
4
masker 2019-05-12 15:34:11 +08:00 via Android
学会用 telnet
|
5
CRUD OP @masker #4 出问题的 telnet 现在想装 telnet 装不上去,其他机器上 telnet 上去也是只有 22 正常
|
6
defunct9 2019-05-12 15:43:03 +08:00
没备案
|
7
opengps 2019-05-12 15:45:30 +08:00 via Android
服务器上有没有安装安全类工具?
|
9
Levox 2019-05-12 15:45:56 +08:00
没懂你说的 “ 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/' |
11
CRUD OP @Levox #9
我通过 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/'也是无任何应答信息。 |
12
CRUD OP @Levox #9
执行 curl -4v 'http://ftp.tsukuba.wide.ad.jp/'结果: * About to connect() to ftp.tsukuba.wide.ad.jp port 80 (#0) * 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 |
13
Levox 2019-05-12 16:01:33 +08:00
@CRUD 你那个 ping 端口的用法不正确,一般的 ping 只能 ping IP,你试过直接 “ ping 127.0.0.1 ” 吗?
我这里获取到的 ftp.tsukuba.wide.ad.jp IP 也是 203.178.132.80 ,不清楚是不是那边路由有问题,看看 “ traceroute 203.178.132.80 ”的结果。 |
14
CRUD OP @Levox #13
直接 ping 127.0.0.1 是可以的,ping 本机内网地址也可以,ping 外网地址就不行了。 traceroute 之前没有安装,现在 yum 安装不了了所以没办法试了。 |
15
Levox 2019-05-12 16:24:15 +08:00
@CRUD 不是说 ping Baidu Google 是好的么?你可以多试几个站点,看能 ping 的和不能 ping 的有什么特点。另外你可以试试从多个节点 ping 你的域名,比如 https://asm.ca.com/en/ping.php ,看有没有什么分布上的问题。不知道你的域名解析出来的 IP 是公网的还是内网的,服务商有没有禁 ping 之类。
|
16
CallMeReznov 2019-05-12 16:44:41 +08:00
PING? ICMP 包能测试 TCP??
请安装 tcping 或 NC..谢谢.... |
17
CRUD OP @Levox #15 描述的不恰当,应该是我的服务器上 ping 我的服务器内网地址可以,ping 我的服务器公网 ip 就不行了。
用站长工具 ping 了一下自己的域名,解析出来是正确的公网 IP,但是 130 个不同地区的节点全部都是超时的。 |
18
fredcc 2019-05-12 17:00:49 +08:00
IGW 路由表 安全组 acl 挨个检查过来,如果对 aws 不熟悉的话,直接重置 ec2 比较简单。
|
19
myziwi 2019-05-12 17:10:27 +08:00
#sestatus 看看 SELinux 状态有没有关闭
|
20
swulling 2019-05-12 17:34:08 +08:00 via iPhone
ICMP ping 还能这么用么
ping 127.0.0.7 80 厉害 |
21
Joshua999 2019-05-12 18:03:47 +08:00 via Android
ping 的这个用法真厉害,佩服
|
22
chinesestudio 2019-05-12 18:23:58 +08:00 via Android
要运维找我 单次长期都可以 搞不定就下载文件和数据库 重建又没几分钟
|
23
randyo 2019-05-12 18:24:09 +08:00 via Android
估计安全策略什么的禁 ping 了,所以 ping 不了公网地址,关了就可以了
|
24
akira 2019-05-12 20:09:47 +08:00
看 ifconfig 是 ipv4,为啥 yum 是走的 ipv6 呢
一般这种情况 重启就好了 |
25
saytesnake 2019-05-13 01:39:53 +08:00
先把 IPV6 给关掉再试一试呢?
|
26
xuanbg 2019-05-13 08:50:25 +08:00
首先,ICMP 协议不支持 TCP。。。ping 命令的正确用法是:ping ip 地址,或者 ping 域名
其次,80 端口在服务器上有没有应用在监听,应该使用 netstat 命令 最后,端口在监听但无法访问,要看 iptable、防火墙、云平台的安全策略等等是不是做了访问限制 |
27
Ayersneo 2019-05-13 11:34:51 +08:00 via Android
aws 貌似关机开机就会换 ip
|
28
levinit 2019-05-13 13:43:02 +08:00 via Android
curl 检查端口例如 curl localhost:80 curl z. cn 用起来比 telne 方便多了
|
29
snoopygao 2019-05-13 15:40:58 +08:00
1、aws 的 ipv6 没配置好,需要去网络策略里去调,你这种情况建议彻底关了,具体 google
2、ec2 的网络控制里你可以之前打开了指定 ip 可访问的策略,现在你的 ip 地址变了,导致无法访问 |
30
aaaaasam 2019-05-16 14:49:38 +08:00
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 这样的错误; |