Mac OSX将主机名流量转发到SSH隧道

时间:2018-04-02 21:09:15

标签: macos ssh apache-kafka ssh-tunnel

我正在尝试为我的开发机器上的apache kafka设置一个ssh隧道,以便在端口9092上监听三个kafka代理。我们必须通过跳转框与kafka集群通信。直接隧道到那些经纪人很容易。其中棘手的部分是kafka代理响应一个必须在本地解析的广告主机名。在ubuntu中,我可以分两步完成:

我的ssh配置文件设置隧道并将主机名映射到正确的主机:

40

此设置允许我将kafka配置为连接到localhost上的代理:9191,localhost:9292,localhost:9393

然后,我可以将我的loopback适配器映射到/ etc / hosts中的主机名,以便它们正确解析。

#Forward to all the kafka brokers
LocalForward 9195 kafka01:9092
LocalForward 9196 kafka02:9092
LocalForward 9197 kafka03:9092

#remap the kafka names.  these need to resolve correctly for it to work
LocalForward kafka01.maindev.local:9092 kafka01:9092
LocalForward kafka02.maindev.local:9092 kafka02:9092
LocalForward kafka03.maindev.local:9092 kafka03:9092

此设置在Ubuntu中运行正常,但我无法在MacOSX环境中使用它。在我的Mac上,只要我使用

为lo0调出别名
127.0.2.1 kafka01.maindev.local
127.0.2.2 kafka02.maindev.local
127.0.2.3 kafka03.maindev.local

一旦别名启动,任何主机名都不能绑定到9092端口,因为它已“正在使用”。

在我的Mac上设置此隧道时,我做错了什么?

1 个答案:

答案 0 :(得分:0)

AWS MSK刚刚通过了 获取您的kafka群集boostrap服务器和zookeeper ip /主机名

aws kafka describe-cluster --cluster-arn <kafka arn>

添加到您的ssh配置

LocalForward 127.0.0.1:9092  <aws-bootstrap-1>:9092
LocalForward 127.0.0.2:9092 <aws-bootstrap-2>:9092
LocalForward 127.0.0.3:9092 <aws-bootstrap-3>:9092
LocalForward 127.0.0.4:2181  <zookeeper-ip-1>:2181
LocalForward 127.0.0.5:2181  <zookeeper-ip-2>:2181
LocalForward 127.0.0.6:2181  <zookeeper-ip-2>:2181

编辑主机文件

#kafka
127.0.0.1 <aws-bootstrap-1>
127.0.0.2 <aws-bootstrap-2>
127.0.0.3 <aws-bootstrap-3>

对于macOS,创建虚拟接口

sudo ifconfig lo0 alias 127.0.0.2 up
sudo ifconfig lo0 alias 127.0.0.3 up
sudo ifconfig lo0 alias 127.0.0.4 up
sudo ifconfig lo0 alias 127.0.0.5 up
sudo ifconfig lo0 alias 127.0.0.6 up

ssh到您的跳转主机,并确保MSK安全组允许该主机的9092和2181入站

./kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092,127.0.0.2:9092,127.0.0.3:9092

./kafka-configs.sh --zookeeper 127.0.0.4:2181,127.0.0.5:2181,127.0.0.6:2181 --describe --entity-name <your_topic>  --entity-type topics