Iptables
從本地伺服器到另一臺本地伺服器的 DNS 請求
我有兩台伺服器在一個網路中執行。
主伺服器外網IP:1.2.3.4(domain.com)
輔助伺服器的外部 IP:不應直接從外部獲得
主伺服器 (dns, mx, www) 內部地址 10.10.10.10 輔助伺服器(www) - 內部地址 10.10.10.20 10.10.10.10 也是 10.10.10.20 的預設路由
任務:
(10.10.10.20)# dig @1.2.3.4 domain.com mx ; (1 server found) ;; global options: +cmd ;; connection timed out; no servers could be reached (10.10.10.20)# dig @10.10.10.10 domain.com ; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7_1.1 <<>> @10.10.10.10 domain.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36417 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;domain.com. IN A ;; ANSWER SECTION: domain.com. 256 IN A 1.2.3.4
從 10.10.10.10 執行的相同查詢工作得很好
這裡發生的情況是,來自本地 IP 地址 (10.10.10.20) 的伺服器正試圖通過其外部 IP 地址 (1.2.3.4 或 10.10.10.10) 聯繫另一台伺服器。
如果我想從輔助伺服器訪問主伺服器的外部服務,我很困惑如何使用 iptables 處理這個問題。
提前致謝。
到目前為止我提出的解決方案是:
iptables -t nat -A PREROUTING -p tcp -s 10.10.10.20 -d 1.2.3.4 --dport 53 -j DNAT --to-destination 10.10.10.10:53 iptables -t nat -A PREROUTING -p tcp -s 10.10.10.20 -d 1.2.3.4 --dport 53 -j DNAT --to-destination 10.10.10.10:53
如果有的話,同樣的規則也適用於其他服務。
到目前為止,我還沒有遇到任何陷阱並且它有效,所以我現在將其標記為正確答案。