【问题标题】:How to set up EC2 with public IP for connections from itself?如何使用公共 IP 设置 EC2 以进行自身连接?
【发布时间】:2015-07-10 21:16:12
【问题描述】:

我有一个 EC2 实例(运行 kafka)需要通过公共 IP 访问自己,但我不想向全世界开放网络 ACL。

基本原理是,当与 kafka 代理建立连接时,代理会通告哪些 kafka 节点可用。由于 kafka 将在 EC2 内部和外部使用,因此唯一常见的选项是让代理公布其公共 IP。

我的设置:

  • 一个实例,具有公共 IP(不是弹性 IP)
  • vpc
  • 一个安全组,允许从我的工作网络访问 kafka 端口
  • 互联网网关
  • 允许通过网关进行外部访问的路由

安全组如下:

Custom TCP Rule, proto=TCP, port=9092, src=<my office network>
Custom TCP Rule, prtot=TCP, port=2181, src=<my office network>

简而言之,如果我使用 localhost,实例内部一切正常。 如果我使用公共 IP,则在实例之外一切正常。

我现在想要的是在具有公共 IP 的实例内部使用 kafka。

如果我向全世界开放 kafka 端口:

Custom TCP Rule, proto=TCP, port=9092, src=0.0.0.0/0
Custom TCP Rule, prtot=TCP, port=2181, src=0.0.0.0/0

它按预期工作,但感觉不安全。

如何设置网络 ACL 以接受来自我的本地实例/子网/vpv(不管哪个)的入站流量而不打开太多?

【问题讨论】:

    标签: amazon-ec2 amazon-vpc apache-kafka


    【解决方案1】:

    嗯,这并不干净,但它还有一个额外的好处,那就是不必为外部带宽付费。

    我没有找到我预期的方法(通过安全组),但只​​是通过更新我的 ec2 实例上的 /etc/hosts,并实际使用主机名而不是 IP,一切都按预期工作。

    例如,如果我为实例指定主机名 kafka.example.com,则在 /etc/hosts 中添加以下行:

    127.0.0.1 kafka.example.com

    我可以在任何地方使用名称 kafka.example.com,即使它实际上指向不同的 IP,具体取决于调用的位置。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-04
      • 2016-04-09
      • 2019-07-10
      相关资源
      最近更新 更多