Amazon-Web-Services
使用 IPTables 在 AWS 中的同一網路上進行目標 NAT
在 AWS 中,我們在同一個子網/VPC 中有 3 個實例。我們希望客戶端實例向第二個分析實例發出 DNS 請求,然後將請求轉發到執行 DNS 服務的第三個實例。然後,DNS 服務應向分析實例提供響應,然後分析實例應響應客戶端。
目的是分析實例可以攔截客戶端和 DNS 實例之間的流量以進行分析。
客戶端實例 -> 分析實例 (NAT) -> DNS 實例
目前設置允許客戶端實例通過分析實例向 DNS 實例發送 DNS 請求。DNS 實例響應分析實例,
tcpdump
但客戶端實例從未收到分析實例的響應。我們在 AWS 中為執行 NAT 的分析實例關閉了源/目標檢查。
我們首先在 Analysis 實例上啟用了轉發:
sudo sysctl -w net.ipv4.ip_forward=1
然後我們將以下 IPTables 規則添加到 Analysis 實例中
sudo iptables -A FORWARD -p udp --dport 53 -d 192.168.1.151 -j ACCEPT sudo iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.1.151 sudo iptables -t nat -A POSTROUTING -d 192.168.1.151 -s 192.168.1.156 -p udp --dport 53 -j SNAT --to 192.168.1.213
POSTROUTING
還嘗試了以下其他規則sudo iptables -t nat -A POSTROUTING -j MASQUERADE sudo iptables -t nat -A POSTROUTING -p udp -d 192.168.1.151 --dport 53 -j SNAT --to-source 192.168.1.213 sudo iptables -t nat -A POSTROUTING -p udp -d 192.168.1.151 --dport 53 -j MASQUERADE
所有結果都相同,客戶端實例永遠不會收到 DNS 應答。關於什麼可能阻止分析實例返迴響應的想法?
問題是 FORWARD 鏈不允許返回流量,因此需要以下規則:
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
完整的解決方案如下所示:
sudo iptables -A FORWARD -p udp --dport 53 -d 192.168.1.151 -j ACCEPT sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.1.151 sudo iptables -t nat -A POSTROUTING -p udp --dport 53 -j SNAT --to 192.168.1.213