问题描述
我在AWS上创建了Linux t3a.nano
EC2,除了启动实例并通过SSH连接到实例之外,我没有对实例执行任何其他操作。
我想打开2个端口(端口80和3000),为此,我创建了一个安全组并将这两个端口都添加到入站规则中。
基于AWS文档,您需要执行其他操作才能打开端口,但是如果我连接到实例并列出端口,则我的安全组上没有端口正在侦听,只有22个在侦听,但这就是默认打开。
我正在运行以下命令来列出端口:
sudo netstat -antp | fgrep LISTEN
我尝试过的其他步骤:
- 检查我的ACL,将附上以下配置的图片,没有改变,看起来还可以。
- 检查实例是否使用了正确的安全组。
- 停止并启动实例。
- 创建了一个弹性IP,并将其与实例相关联以具有永久的公共IP地址。
关于我可能缺少哪些步骤的任何建议?
解决方法
您正在从实例内部检查端口。安全组(SG)在实例的外部范围内工作。
您可以将它们想象为实例周围的泡沫。随后,实例不知道。可以如下图所示将其可视化,其中SG是实例外部的障碍。仅当SG允许流量进入时,您的实例才能使用常规软件级防火墙进一步限制它。
要打开/阻止实例本身上的端口,您必须使用常规防火墙,例如ufw
。默认情况下,至少在使用Amazon Linux 2
或Ubuntu
时,实例上的所有端口都将打开。
因此,通过您的设置,将允许实例 22、3000和80的锅的入站流量。
,更新-响应
由于以上评论,我到了这一点!
我想打开端口3000来托管Web服务,所以我对最初的问题做了所有步骤,而我所缺少的步骤是运行服务器在端口3000上执行某些操作。运行节点后,能够看到内部打开的端口,并能够向该端口发出请求。
安全组保持不变,但是现在,如果我列出了端口,这就是我得到的:sudo netstat -antp | fgrep LISTEN