Ubuntu

AWS VPC 中的第二個 ENI 在 Ubuntu 實例上無法訪問

  • October 27, 2016

我剛剛進入 VPC,試圖了解一切是如何運作的。到目前為止,我遇到的最大障礙是,每當我向機器添加第二個彈性 NIC 時,VPC 中的任何其他人都無法訪問第二個 IP。這就是我所做的

  • 推出 Canonical 為 Ubuntu 12.10 x64 EBS 提供的 AMI。
  • 在啟動期間,我為兩個網路介面(同一子網)配置了它
  • 機器啟動後,我將以下內容添加到 /etc/network/interfaces :

汽車 eth1

iface eth1 inet dhcp

  • ifup eth1
  • 執行ifconfig,驗證第二個地址是否已啟動。

在我的主要(網際網路可訪問)實例上:

  • ping(新實例 eth0 的 IP) - 有效
  • ping(新實例 eth1 的 IP) - 失敗

沒有阻止 ping 的 ACL,因為它適用於 eth0。機器上沒有防火牆設置。我已經在具有多個介面的多個 SG 和 AZ 上嘗試了 4 個不同的實例,結果都相同。

我把頭撞在牆上的時間比我願意承認的要長。我無法弄清楚錯誤在哪裡。

預設情況下,路由表只會將流量路由到eth0. 即使 ubuntu 檢測到另一個 ENI,您仍然必須將流量路由到它。

你必須做一些高級路由:

1) 立即和臨時啟用對第二個 ENI 的訪問。

來源:http ://www.rjsystems.nl/en/2100-adv-routing.php

# this will show your route table, i'll assume you have eth0 and eth1
# and your default is for eth0 to point to the gateway
# for this example lets assume the following:
# eth0 = 192.168.100.5 
# eth1 = 192.168.100.10
# gateway = 192.168.100.1
ip route show ;

# first step is to create a routing table for your new device
cat /etc/iproute2/rt_tables ;
echo 2 eth1_rt >> /etc/iproute2/rt_tables ;

# next add the eth1_rt route table, so by default it will also point to the gateway
ip route add default via 192.168.100.1 dev eth1 table eth1_rt ;

# next take a look at your ip rules
# i'll assume the defaults here, and things flows to default with priority 32767
ip rule;

# let's add a rule, if we see traffic from eth1's IP address,
# use its new routing table we setup, and give it higher priority than default
ip rule add from 192.168.100.10 lookup eth1_rt prio 1000 ;

# done! now check your traffic from both IPs, they should both work.

2) 在重新啟動時啟用對第二個 ENI 的訪問但持久。

來源:http ://blog.bluemalkin.net/multiple-ips-and-enis-on-ec2-in-a-vpc/

此外,如果您希望此更改保持不變,您可以在介面文件中進行所有這些更改,然後重新啟動網路服務或重新啟動以使其生效。

# NOTE: add the eth1_rt routing table to /etc/iproute2/rt_tables as show in previous section

# original config to make dchp, I add mine to /etc/network/interfaces.d/eth1.cfg
auto eth1
iface eth1 inet dchp
   # your extra rules for eth1
   up ip route add default via 192.168.100.1 dev eth1 table eth1_rt
   up ip rule add from 192.168.100.10 lookup eth1_rt prio 1000

要使其完全生效,請重新啟動系統。

**注意:**我試過/etc/init.d/networking restart;了,但沒有發現路由/規則的變化,不知道為什麼,所以我重啟了。如果您想讓它立即和持久,請執行這兩種方法。

引用自:https://serverfault.com/questions/471957