EC2 虚拟服务器接收请求但无法访问另一台主机

EC2 虚拟服务器接收请求但无法访问另一台主机

我在 Amazon AWS Ubuntu 上有一个虚拟机,我在其中安装了 Apache2、PHP5 和 MySql。一切运行良好,我的网站在上面运行良好。

虚拟机突然停止访问其他主机。每次请求都会发生这种情况。

当 PHP 脚本开始出现错误时我发现了这一点

使用 file_get_contents() 函数时出现“连接超时”

<?php echo file_get_contents('http://example.com'); ?>

我通过 SSH 进入服务器的命令行,并尝试 ping 外部主机ping google.com,但没有成功。我尝试使用 apt-get 更新系统sudo apt-get update,但也没有连接。

有趣的是,如果我尝试访问该网站,服务器通常会收到请求并将该网站返回给浏览器。即互联网连接就在那里。

另一个细节是,我尝试进行的访问file_get_contents() PHP也是在同一个站点上,而不是在外部站点上,但超时了。

以下是 netstat -lnp 命令的结果:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      957/sshd        
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1098/mysqld     
tcp6       0      0 :::22                   :::*                    LISTEN      957/sshd        
tcp6       0      0 :::443                  :::*                    LISTEN      1145/apache2    
tcp6       0      0 :::80                   :::*                    LISTEN      1145/apache2    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           560/dhclient    
udp        0      0 0.0.0.0:18032           0.0.0.0:*                           560/dhclient    
udp6       0      0 :::60689                :::*                                560/dhclient    
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     8236     785/dbus-daemon     /var/run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     6500     1/init              @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     8549     965/acpid           /var/run/acpid.socket
unix  2      [ ACC ]     SEQPACKET  LISTENING     6797     324/systemd-udevd   /run/udev/control
unix  2      [ ACC ]     STREAM     LISTENING     8919     1098/mysqld         /var/run/mysqld/mysqld.sock

下面是使用 iptables -L 的结果:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

可能发生什么事?

答案1

对于那些遇到与我相同问题的人,深入研究后发现名称服务器已设置为亚马逊的 IP。

所以我编辑/etc/resolv.conf并把谷歌名称服务器

nameserver 8.8.8.8
nameserver 8.8.4.4

并且成功了。希望这对某些人有帮助。

相关内容