Aar*_*ers 18 amazon-ec2 ec2-ami
这是一个非常基本的亚马逊EC2问题,但我很难过这里.
我想启动一个Amazon EC2实例,并允许从任何地方访问端口80和8888上的HTTP.到目前为止,我甚至不能允许实例使用自己的IP地址连接到这些端口(但它将连接到localhost).
我使用管理控制台(以及SSH)上的标准HTTP选项为HTTP配置了"默认"安全组.
我在默认安全组中启动了我的实例.
我连接到SSH端口22上的实例两次,并在一个窗口中启动端口80上的HTTP服务器.在另一个窗口中,我验证我可以使用"localhost"连接到HTTP.
但是,当我尝试使用公共DNS或私有IP地址从实例(或其他任何地方)访问HTTP时,我认为"连接被拒绝".
我做错了什么,拜托?
下面是一个控制台片段,显示成功的wget和从实例本身运行失败的两个.
--2012-03-07 15:43:31-- http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: /__whiff_directory_listing__ [following]
--2012-03-07 15:43:31-- http://localhost/__whiff_directory_listing__
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: “__whiff_directory_listing__”
[ <=>
] 7,512 --.-K/s in 0.03s
2012-03-07 15:43:31 (263 KB/s) - “__whiff_directory_listing__” saved [7512]
[ec2-user@ip-10-195-205-30 tmp]$ wget http://ec2-50-17-2-174.compute-1.amazonaws.com/
--2012-03-07 15:44:17-- http://ec2-50-17-2-174.compute-1.amazonaws.com/
Resolving ec2-50-17-2-174.compute-1.amazonaws.com... 10.195.205.30
Connecting to ec2-50-17-2-174.compute-1.amazonaws.com|10.195.205.30|:80... failed:
Connection refused.
[ec2-user@ip-10-195-205-30 tmp]$ wget http://10.195.205.30/
--2012-03-07 15:46:08-- http://10.195.205.30/
Connecting to 10.195.205.30:80... failed: Connection refused.
[ec2-user@ip-10-195-205-30 tmp]$
Run Code Online (Sandbox Code Playgroud)
Vie*_*van 21
(0)这很愚蠢,但您需要做的第一件事就是确保您的Web服务器正在运行.
(1)您需要编辑安全组以允许传入的HTTP数据包访问您的网站.如果您的网站正在侦听端口80,则需要编辑安全组以打开对端口80的访问,如上所述.如果您的网站正在侦听其他端口,则需要编辑安全组以访问该其他端口.
(2)如果您正在运行Linux实例,则iptables防火墙可能默认运行.您可以通过运行检查此防火墙是否处于活动状态
sudo服务iptables状态
在命令行上.如果输出,则iptables防火墙正在运行.如果您收到消息" 防火墙未运行 ",那就非常明显了.通常,iptables防火墙默认运行.
您有两种选择:敲除防火墙或编辑防火墙的配置以允许HTTP流量通过.我选择将防火墙作为更简单的选项(对我而言).
sudo服务iptables停止
关闭iptables没有真正的安全风险,因为iptables(如果处于活动状态)只会复制亚马逊防火墙的功能,后者正在使用安全组生成其配置文件.我们假设亚马逊AWS没有错误配置其防火墙 - 这是一个非常安全的假设.
(3)现在,您可以从浏览器访问该URL.
(4)默认情况下,Microsoft Windows Server也运行其个人防火墙,您也需要修复Windows Server的个人防火墙.
更正:根据AWS默认情况下,当您订购新的EC2实例时,AWS不会启动服务器防火墙,如iptables(Centos)或UAF(Ubuntu) - 这就是为什么同一个VPC中的EC2实例可以互相攻击您可以"查看"从同一VPC中的另一个EC2实例启动的Web服务器.
只需确保您的RESTful API正在侦听所有接口,即0.0.0.0:portID
小智 19
标准的tcp套接字接口要求您在发送或侦听时绑定到特定的IP地址.有几个有点特殊的地址:localhost(你可能很熟悉),它是127.0.0.1.还有一个特殊地址,0.0.0.0或INADDR_ANY(网络协议,任何地址的特殊简写).这是一种在主机上侦听任何或更常见的所有地址的方法.这是一种告诉内核/堆栈您对特定IP地址不感兴趣的方法.
因此,当您设置一个侦听"localhost"的服务器时,您告诉服务您要使用该主机的用户只能访问的特殊保留地址,并且当它存在于每个主机上时,建立与localhost的连接只会到达您发出请求的主机.
如果希望服务可以到达任何地方(在本地主机上,在所有接口上等),则可以指定0.0.0.0.
小智 5
由于您的连接被拒绝(数据包被拒绝),我敢打赌是iptables导致了问题。尝试运行
iptables -I 输入 -p tcp --dport 80 -j 接受
iptables -I 输入 -p tcp --dport 8888 -j 接受
并测试连接。
您还需要永久添加这些规则,您可以通过将上述行添加到 ie. /etc/sysconfig/iptables 如果您运行的是 Red Hat。
| 归档时间: |
|
| 查看次数: |
44069 次 |
| 最近记录: |