我想要获得一些关于下面项目的帮助。我有以下拓扑。
<EC2 instance 1> --> <AWS GWLB> --> <EC2 instance 2>
EC2 实例只是 Ubuntu 20.04 AMI。AWS GWLB 代表 AWS 网关负载均衡器。
EC2 instance 1
正在发出“客户端”流量,该流量通过 路由AWS GWLB
,然后通过 发送EC2 instance 2
。
流量会通过我创建的路由表EC2 instance 1
自动转发。充当后端服务器。AWS GWLB
EC2 instance 2
AWS GWLB
我希望能够转发不同的协议,如 UDP、ICMP、TCP 等,这就是我选择使用 支持的 GENEVE 协议的原因AWS GWLB
。最后EC2 instance 1
通过添加新的 GENEVE 标头来封装数据包。
有了这个实际的基础设施,如果我ping
在EC2 instance 1
(客户端) 和(后端)tcpdump
上运行一个,我可以看到封装了 GENEVE 标头的内容。EC2 instance 2
ICMP request
EC2 instance 2
我接下来要做的是
ICMP request
通过删除 GENEVE 标头来“解封装”该数据包;- 将其转发到目的地(我假设如果我设置了伪装
EC2 instance 2
并启用 IPv4 转发,那就没问题了); - 重新封装并通过 将
ICMP reply
其送回。EC2 instance 1
AWS GWLB
关于我计划做什么的文档并不多。我发现的唯一有趣的事情是:
- Linux
tc
:https://man7.org/linux/man-pages/man8/tc.8.html; - 这篇博客文章很有趣,但没有效果:https://darjchen.medium.com/setting-up-geneve-tunnel-with-linux-tc-571f891618a9。
这是tc
关于我计划做什么的最佳解决方案吗?如果是,我该如何使用它?
感谢您未来的帮助!祝您度过美好的一天!