我有一个EC2实例(运行kafka),它需要通过公共IP访问自己,但我不想打开整个世界的网络ACL。如何使用公共IP为自己的连接设置EC2?
基本原理是,当与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的入站流量(无关紧要)而不会打开太多?