如何转发端口以通过堡垒连接多个 MSK Kafka 代理?

如何转发端口以通过堡垒连接多个 MSK Kafka 代理?

我在 AWS 上有一个 MSK Kafka 集群,其中有 3 个代理:b1.amazonaws.com:9092、b2.amazonaws.com:9092、b3.amazonaws.com:9092。代理不是公开的,所以我通过堡垒打开了 3 个隧道:

ssh -L 9092:b1.amazonaws.com:9092 -L 9093:b2.amazonaws.com:9092 -L 9094:b3.amazonaws.com:9092

但是我无法设置我的 Kafka 客户端来连接到 localhost:9092、localhost:9093、localhost:9094 - 我必须保留原始设置。

我在 /etc/host 中定义

127.0.0.1 b1.amazonaws.com
127.0.0.2 b2.amazonaws.com
127.0.0.3 b3.amazonaws.com

但我仍然有问题,本地端口是 9092、9093 和 9094,但远程端口是 3x9092

我尝试了很多变体,iptable例如

iptables -A OUTPUT -t nat -d 127.0.0.2 -p tcp --dport 9092 -j REDIRECT --to-port 9093 但它不起作用。应用程序仅连接到端口 9092 上的隧道,无法到达端口 9093 和 9094。

如何解决这个问题?

答案1

我漏掉了一件重要的事情:我的应用程序在 Windows 上运行,隧道在 WLS2 上打开。Iptables 仅在 WSL2 内映射端口。我在 Windows 上启用了端口映射(powershell/admin)

和 Kafka 连接工作正常

netsh interface portproxy add v4tov4 listenaddress=127.0.0.2 listenport=9092 connectaddress=127.0.0.1 connectport=9093
netsh interface portproxy add v4tov4 listenaddress=127.0.0.3 listenport=9092 connectaddress=127.0.0.1 connectport=9094

相关内容