如何正確設定多個IP位址指向EC2中的一個實例?

如何正確設定多個IP位址指向EC2中的一個實例?

我目前有一個 ec2 實例,我希望有 2 個公用 IP 指向它。我分配了 2 個 EIP、2 個 EIP 連接到的網路接口,並且它們都連接到運行 ubuntu 14.04.2 LTS 的單一 EC2 執行個體。最近新增了第二個EIP和網路接口,確實有彈出eth1,雖然我目前必須手動運行dhclient,但這不是問題。問題是沒有資料包通過。我已經對我的安全群組進行了三次檢查,所有這些群組都允許來自任何 IP 位址的連接埠 80。然而,向 iptables 新增位元組計數器規則(例如,iptables -A INPUT -i eth1顯示恰好有 0 個資料包透過第二個介面到達我的機器)。

我找到並閱讀了但這沒有幫助。

我缺什麼?有沒有某個按鈕我忘了點擊?

答案1

我有正確工作的 ec2 實例,有 2 個私有 IP 位址和 2 個 EIP,已連接到它們,但我使用了第二個 IP 的子接口,而不是另一個網路接口

/etc/network/interfaces 的內容 (debian wheezy)

auto lo
iface lo inet loopback
auto eth0 eth0:0
iface eth0 inet dhcp
post-up ifconfig eth0:0 172.31.xx.yy netmask 255.255.240.0 up

我不記得為什麼手動將 IP 位址分配給 eth0:0,但此設定有效。還測試了

curl --interface PRIVATE_IP ifconfig.me

顯示,來自 eth0 和 eth0:0 的傳出流量確實是從正確的 EIP 發起的。

答案2

一年多後,我終於想通了!謝謝本文。總之:

如果還沒有,請在新介面上執行 dhclient:

# dhclient eth1

然後,找出您的新私人 IP 位址是什麼。您可以查看 EC2 控制台,或執行

ip addr

您還需要知道網關IP。在大多數情況下,它是your.ip.0.1,但只是為了確保運行:

ip route

你應該會看到類似的內容:

default via 12.34.0.1 dev eth0

12.34.0.1是本例中的網關。為了演示,我假設私有 IP 是12.34.56.78。現在運行(以 root 身分):

ip rule add from 12.34.56.78 table 1000
ip route add default via 12.34.0.1 dev eth1 table 1000
ip route flush cache

若要測試您的配置:

curl --interface 12.34.56.78 ifconfig.me

然後,為了使您的變更永久生效,請新增/etc/network/interfaces這些命令及其相反命令:

auto eth1
iface eth1 inet dhcp
  up ip rule add from 12.34.56.78 table 1000
  up ip route add default via 12.34.0.1 dev eth1 table 1000
  down ip rule del from 12.34.56.78 table 1000
  down ip route del default via 12.34.0.1 dev eth1 table 1000

注意:在更改持久性網路設定之前,請確保您擁有執行個體的快照,以防出現故障並且您無法存取您的執行個體。

相關內容