我有一台 Ubuntu 20.04 机器,有 2 个以太网接口,每个接口有 2 个 IP 地址。它是一个 AWS EC2 实例,4 个 IP 地址中的每一个都通过 NAT 附加了一个 EIP。两个接口都连接到同一个内部子网。设置如下所示:
EC2机器:
- eni1:
- 私有 IP1 -> 公共 IP1
- 私有 IP2 -> 公共 IP2
- eni2:
- 私有 IP3 -> 公共 IP3
- 私有 IP4 -> 公共 IP4
所有 4 个地址都可以从外部到达,所以看起来一切都很好。但是,对于当前的传出流量,始终使用私有 IP1(因此公共 IP1)。我想指定单个 SSH 用户使用特定的 IP 地址,因此在与 Internet 上的服务通信时,它们将来自相应的公共 IP,即
用户 1 -> 私有 IP1
用户 2 -> 私有 IP2
用户 3 -> 私有 IP3
用户 4 -> 私有 IP4
实现此结果的最佳方法是什么?
实现这一目标的最佳方法是将 EC2 实例克隆为四个实例,为每个克隆分配一个 IP 地址,并让每个用户只使用具有他或她应该使用的 IP 地址的机器。
在倾注了很多小时之后,我终于自己解决了这个问题。最后,我通过添加这样的 ip 规则使其工作:
然后像这样添加 iptables 后路由规则:
if1 和 if2 是我的自定义路由表,其中包含相应的默认路由。效果很好!也许这对将来的某人有用:)