Amazon-Web-Services
AWS 路由表點預設為不同子網中的網路介面
我正在嘗試將 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 轉發標誌。