如何在同一个 EC2 实例上使用不同的弹性 IP 地址进行传出流量?

如何在同一个 EC2 实例上使用不同的弹性 IP 地址进行传出流量?

我有一个分配了多个 IP 的 EC2 实例。我在同一台服务器上为不同站点使用 IP,EC2 实例似乎对传出流量使用相同的 IP。

例如,当我使用 curl 通过代理调查我的 IP 地址时,它会给我公共地址,而不是我用作代理的地址。

curl -x 52.4.95.169:3128 https://api.ipify.org/ # 52.4.95.169 is a an elastic IP assigned to the instance
34.12.45.235 # This is the response, the primary instance IP

这实际上违背了我使用弹性 IP 的目的,出于安全原因,我不能让任何人知道站点 A 和站点 B 位于同一台服务器上。

是否有某种方法可以使用不同的 IP 来发送请求,或者我必须为每个站点创建新的实例?

答案1

每当建立出站连接时,除非明确指示在特定网络接口上打开该连接,否则它将在“默认”接口上打开。

curl -x不是用于指定网络接口的命令。该-x命令指定用于建立隧道连接的代理。

在您的curl -x示例中,您的连接是通过您自己的 EC2 实例进行代理的,但全部在“默认”界面上。

因此,您需要使用--interface参数而不是-x。这告诉 curl 在该接口上打开出站连接,而不是默认接口。

您可以使用网络接口名称:

  • curl --interface eth0
  • curl --interface eth1

或者你可以使用网络接口的私人的IP地址。

  • curl --interface 10.0.0.1
  • curl --interface 10.0.0.2

您不能使用民众IP地址。

评论更新:

原帖者使用 Squid 来代理请求。本文帮助用户根据自己的需求配置 Squid 来代理。

设置 squid 使用多个传出 IP 地址

相关内容