我有一个关于 AWS ec2 实例上的安全设置的新手问题。我已经使用 Tomcat7 (ami-95da17fc) 设置了一个实例,但遇到了一个小问题。
如果我通过 ssh 进入实例并执行 ping -c 2 -p 80 localhost,我会得到 0 个数据包丢失,如果我 ping 我的弹性 IP,我会得到 100% 的数据包丢失,long.winded.aws.dns.name 也是一样
如果我只是尝试从终端 ping 该站点(未登录到实例)我也将遭受 100% 的损失。
我的默认安全组具有以下设置:
0 - 65535 sg-07787e6e(默认)
80(HTTP)0.0.0.0/0
8080(HTTP*)0.0.0.0/0
22(SSH)70.126.98.72/32
如果有人能阐明我所遗漏的内容,我将不胜感激。
... 嗯,我用 curl 得到 404,sudo netstat -lp 显示:
活动互联网连接(仅服务器)Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称
tcp 0 0 *:ssh : 侦听 841/sshd
tcp 0 0 本地主机:smtp : 侦听 868/sendmail:接受 tcp 0 0 *:webcache : 监听 981/java
tcp 0 0 *:http : 监听 948/httpd
tcp 0 0 *:ssh : 侦听 841/sshd
tcp 0 0 本地主机:8005 : 监听 981/java
tcp 0 0 *:8009 : 监听 981/java
udp 0 0 *:bootpc : 734/dhclient
udp 0 0 domU-12-31-39-09-A6:ntp : 852/ntpd
udp 0 0 本地主机:ntp : 852/ntpd
udp 0 0 *:ntp : 852/ntpd
udp 0 0 fe80::1031:39ff:fe0:ntp : 852/ntpd
udp 0 0 本地主机:ntp : 852/ntpd
udp 0 0 *:ntp : 852/ntpd
活动 UNIX 域套接字(仅限服务器)Proto RefCnt 标志类型状态 I 节点 PID/程序名称路径 unix 2 [ ACC ] 流监听 1954 922/gam_server @/tmp/fam-root- unix 2 [ ACC ] 流监听 1967 927/bluepilld:主机 /var/bluepill/socks/hostmanager.sock
... 我没有改变 iptables 中的任何内容
答案1
Ping 使用 ICMP 协议 - AWS 控制台中的安全组默认使用 TCP 协议。如果您希望能够从“外部”ping 您的实例,则需要更改安全组设置以允许 ICMP 协议(Echo),例如使用以下内容:
ec2-authorize default -P icmp -t -1:-1 -s 0.0.0.0/0
您还可以使用 AWS 控制台来实现此目的:
- 为您的安全组创建“自定义 ICMP 规则”
- 类型:回显请求和类型:回显答复(两者都是必需的)
- 来源:0.0.0.0/0
或者,为了达到与上述 ec2-authorize 命令相同的效果,您可以允许“所有 ICMP”
查看AWS EC2 文档了解更多信息,以及AWS 常见问题解答。