当我在自定义VPC中未启用DNS主机名时,我遇到了获取ERR_CONNECTION_REFUSED的奇怪问题。
我创建了一个带有一个子网(公共),一个路由表和一个Internet网关的VPC。
我的路由表有一条到我的Internet网关的路由。我使用默认的网络ACL。我的SG有1024-65535端口打开(< ---这只是一个测试!)。
我从AWS Linux AMI创建一个实例并将其放入我的公有子网中。当我的VPC配置为通过启用"编辑DNS主机名"来分配DNS主机名,然后我可以从我的浏览器访问我的实例。 (Instance是Nodejs Web服务)。一切正常,网络接口流日志验证流量是否到达我的实例。
我通过"编辑DNS主机名"来禁用我的VPC中的DNS主机名创建。我按照相同的步骤创建一个新实例。它没有预期的DNS主机名(私有或公共),但它确实有一个公共IP地址。当我尝试通过浏览器通过公共IP连接到我的实例时,我得到了ERR_CONNECTION_REFUSED。
通过启用/禁用DNS主机名,我似乎可以通过成功/失败轻松重现此错误。
我在配置中遗漏了什么?这是一个已知的问题?我在抽烟吗?
感谢。
答案 0 :(得分:0)
问题是Nodejs Web服务无法找到绑定的主机名...因为我从#!/ bin / bash UserData脚本中的元数据中提取绑定主机名:
# Grab the EC2 instance internal DNS and configure the Hapi server host value
localhost=$(curl http://169.254.169.254/latest/meta-data/local-hostname)
rm -f ServerHost.js
echo -n "module.exports = \"" > ServerHost.js
echo -n "$localhost" >> ServerHost.js
echo "\"" >> ServerHost.js
但是由于没有私有DNS(因为手动创建VPC时的默认值是'禁用'),所以没有'local-hostname'。