亚马逊的弹性IP如何运作?如果我想自己创建一个类似的系统,我该怎么办?

Rya*_*ein 4 linux networking amazon-web-services

我似乎无法找到正确的搜索词组合来谷歌搜索这个答案,但是如果我想创建自己的弹性IP,我可以使用我自己的私人托管指向任何其他上行地址,我该怎么办?一些瓶颈是什么?

添加更多细节:Amazon 的 Elastic 不仅仅是一个您传递请求的服务器,然后它会为您发出请求并传回返回的数据,就像某种 VPN 一样。他们的服务允许您向一个 IP 地址发出请求,就像您完全向另一个 IP 地址发出该请求一样。他们如何做到这一点?

Mat*_*ark 5

iptables我相信这可以通过简单的规则和网络地址转换(NAT)来完成,但我不确定 AWS 如何在其后端执行此操作。

一个简单的规则

iptables -t nat -I PREROUTING -d 99.99.99.99 -j DNAT --to-destination 12.34.56.78
Run Code Online (Sandbox Code Playgroud)

在此规则中,我们将在表的顶部添加一条规则NAT Prerouting,这将是每个数据包评估的第一个规则 - 疲倦,许多规则会减慢您的数据包流 - 如果您下降,您应该研究 iptables这条路线。

在这里,我们将接收一个发往99.99.99.99- 的数据包,该DNAT规则将简单地重写数据包的目标 IP,然后继续发送。

要删除规则,只需将 更改-I-D

上述规则到新服务器的基本故障转移

iptables -t nat -D PREROUTING -d 99.99.99.99 -j DNAT --to-destination 12.34.56.78 # Delete existing forward
iptables -t nat -I PREROUTING -d 99.99.99.99 -j DNAT --to-destination 87.65.43.21 # Add new forward
Run Code Online (Sandbox Code Playgroud)

请注意,您还需要在表中Filter Forward为您计划将数据包发送到的每个目的地制定规则。

iptables -t filter -I FORWARD -d 12.34.56.78 -j ACCEPT
iptables -t filter -I FORWARD -d 87.65.43.21 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

编辑

您询问了负载平衡的问题,因此这也是 3 台主机之间的负载平衡连接。

iptables -t nat -I PREROUTING -d 99.99.99.99 --mode nth --every 1 --packet 0 -j DNAT --to-destination x.y.z.1
iptables -t nat -I PREROUTING -d 99.99.99.99 --mode nth --every 2 --packet 0 -j DNAT --to-destination x.y.z.2
iptables -t nat -I PREROUTING -d 99.99.99.99 --mode nth --every 3 --packet 0 -j DNAT --to-destination x.y.z.3
Run Code Online (Sandbox Code Playgroud)

如果您想将其限制为 HTTP / HTTPS,您可以相应地过滤这些端口:

iptables -t nat -I PREROUTING -d 99.99.99.99 -p tcp --dport 80 -j DNAT --to-destination 12.34.56.78:80
Run Code Online (Sandbox Code Playgroud)

它可能会有所帮助,可能只是更加令人困惑,但这里有一个包含一些有用规则的页面