如何使用公共ip设置ec2来连接自身?

bejyjqdl  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(382)

我有一个ec2示例(运行kafka),它需要通过公共IP访问自己,但我不想向全世界开放网络ACL。
其基本原理是,当与kafka代理建立连接时,代理会公布哪些kafka节点可用。由于kafka将在ec2内部和外部使用,唯一常见的选择是让代理公布其公共ip。
我的设置:
示例,公网ip(非弹性ip)
专有网络
一个安全组,允许从我的工作网络访问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,在示例之外一切都可以正常工作。
我现在想要的是从示例内部使用kafka和公共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的入站流量(不管是哪个),而不打开太多?

z0qdvdin

z0qdvdin1#

好吧,这是不干净的,但它有一个额外的优势,不必支付外部带宽。
我没有找到一种我所期望的方法(通过安全组),但是仅仅通过更新我的ec2示例上的/etc/hosts,并且实际上使用了一个主机名而不是ip,所有的工作都如预期的那样。
例如,如果我给示例提供了主机名kafka.example.com,那么在/etc/hosts中使用以下行:
127.0.0.1 kafka.example.com
我可以在任何地方使用kafka.example.com这个名字,即使它实际上指向一个不同的ip,这取决于呼叫的地点。

相关问题