amazon ec2-如何设置ec2与公共IP从自己的连接



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

其原理是,当连接到kafka代理时,代理会通告哪些kafka节点可用。由于kafka将在EC2内部和外部使用,唯一常见的选择是经纪人宣传其公共IP。

我的设置:

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

安全组如下:

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。

如果我向全世界开放卡夫卡港口:

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的入站流量(不管是哪一个(?

好吧,这并不干净,但它还有一个额外的优势,即不必为外部带宽付费。

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

例如,如果我给实例指定主机名kafka.example.com,那么在/etc/hosts:中有以下行

127.0.0.1 kafka.example.com

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

最新更新