Amazon-Web-Services

AWS 路由表點預設為不同子網中的網路介面

  • March 6, 2019

我正在嘗試將 EC2 實例設置為私有網路中的其他實例將被路由到的各種 NAT 網關。

我有以下設置:

專有網路

  • 10.0.0.0/16

2 個子網

  • 答:10.0.1.0/24
  • B:10.0.2.0/24

2 個 EC2 實例

  • 具有 2 個網路介面 eth0、eth1 的 NAT 實例,均位於子網 A
  • 子網 B 中的另一個實例

在 NAT 實例中,eth0 用於公共網路,eth1 用於私有網路,並且它們具有相應的防火牆設置。

我嘗試為子網 B 創建路由表,將預設路由到 NAT 的 eth1,即:

0.0.0.0/0         <id of eth1 on NAT>

然後我嘗試tshark -i eth1在 NAT 上執行(命令行中的 Wireshark)以查看是否有任何流量到達那裡,然後我ping google.com在另一個實例上執行。沒有成功。我也嘗試過curl google.com,以防 ping 在某處被阻塞,但也沒有發生任何事情。

看起來 AWS 路由流量的方式有問題,因此即使路由表是這樣設置的,它也永遠不會到達網路介面。

如果有人可以幫助我,我將不勝感激。謝謝你。

免責聲明:我知道 AWS 有一個內置的 NAT 網關選項,它不適合我的情況。

由於數據包的源和目標都不是屬於您的NAT 網關的 IP 地址,因此您需要禁用srcdst 檢查您想要處理流量的網路介面(我會說兩者都在 NAT網關):

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check

否則,平台會將流量作為一種“反欺騙”保護措施而放棄。

如果要在 Azure 中執行此操作,則等效為IP 轉發標誌

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