我有一个分配了多个 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 来代理。