如何使用iptables实现外网访问VPC内的Kafka

容器与中间件中间件技术服务知识库
问题描述

客户想通过外网地址访问 VPC 内的 Kafka 地址进行程序调试,本文展示如果使用iptables转发请求实现外网访问。

解决方案

1.创建一台与 Kafka 同 VPC 的 ECS 服务器,放开安全组 9093 端口同时绑定公网 IP,具体操作参考 [ECS使用说明]。 2.在部署 Kafka 的机器添加本地解析和修改配置文件如下:

  • 添加域名解析
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.254 opendts
  • 修改server.properties的配置文件
listener.security.protocol.map=INTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
listeners=INTERNAL://192.168.1.254:9093

# 配置刚才的域名opendts
advertised.listeners=INTERNAL://opendts:9093
inter.broker.listener.name=INTERNAL

3.在 ECS 配置 iptables 转发规则,持久化需要将 iptables 规则写入到 /etc/rc.local 中。

(base) [root@rudonx ~] iptables -t nat -A PREROUTING -p tcp -m tcp --dport 9093 -j DNAT --to-destination 192.168.1.254:9093

(base) [root@rudonx ~] iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 9093 -j SNAT --to-source 192.168.1.13

(base) [root@rudonx ~] echo 1 > /proc/sys/net/ipv4/ip_forward

地址参数说明:
--192.168.1.254     --- 指定的是 Kafka 服务所在 ECS 的机器地址
--192.168.1.13      --- 指定的是配置 iptables 的 ECS 的本机的地址    

3.本地测试访问,使用ECS的公网IP地址

  • 本地/etc/hosts文件配置域名解析
180.184.70.* opendts

参数地址说明:
--180.184.70.*    --- 指定的是配置 iptables 的 ECS 的外网 EIP 地址。
  • 使用脚本生产数据示例如下: 图片

此方案只能作为测试和调试方案,因为IP地址在一些特殊情况下会改变,所以不建议作生产使用

如果您有其他问题,欢迎您联系火山引擎技术支持服务

40
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论