我有一个EC2实例(运行kafka)需要通过公共IP访问自己,但我不想打开全世界的网络ACL。
基本原理是,当与kafka代理建立连接时,代理会通告哪些kafka节点可用。由于kafka将在EC2内外使用,唯一的共同选择是经纪人宣传其公共IP。
我的设置:
安全组如下:
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的入站流量(无关紧要),而不会打开太多?
答案 0 :(得分:2)
嗯,这不是很干净,但它还具有无需支付外部带宽的额外优势。
我找不到我预期的方式(通过安全组),但只是通过更新我的ec2实例上的/ etc / hosts,实际上使用主机名而不是IP,所有都按预期工作。
例如,如果我给实例提供主机名kafka.example.com,那么在/ etc / hosts中包含以下行:
127.0.0.1 kafka.example.com
我可以在任何地方使用名称kafka.example.com,即使它实际上指向不同的IP,具体取决于调用的位置。