Iptables
NAT 實例需要正確的 iptable 規則,以防止私有子網 EC2 實例傳出流量環回
我的 AWS 架構有一個具有 NAT 實例的公共子網。它將某些埠上的流量轉發到我在單獨的私有子網中託管的 EC2 實例。
sudo iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination 10.0.1.126:80
但我還需要為我的私有 EC2 實例提供傳出 Internet 訪問。
sudo iptables -t nat -A POSTROUTING -o eth0 -s 10.0.1.0/24 -j MASQUERADE
這導致我的私有 EC2 實例生成的所有請求都循環回自身。需要修改哪個規則來防止這種行為,並且私有 EC2 實例生成的傳出流量被發送而不被路由回?
更新:我添加了目標 ip 作為埠 80 的公共 ip
sudo iptables -t nat -A PREROUTING -p tcp -d xx.xx.xx.xx –dport 80 -j DNAT –to-destination 10.0.1.126:80
雖然我的傳出網路呼叫沒有被環回,但我的基於 dns 的域請求沒有傳遞給我的實例。
您的PREROUTING必須排除本地流量,即
iptables -t nat -A PREROUTING -p tcp ! --source 10.0.1.0/24 --dport 80 -j DNAT --to-destination 10.0.1.126:80
注意source :前的驚嘆號
! --source 10.0.1.0/24
。這可確保僅針對來自外部的流量評估規則。希望有幫助:)