Iptables

從本地伺服器到另一臺本地伺服器的 DNS 請求

  • February 2, 2016

我有兩台伺服器在一個網路中執行。

主伺服器外網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

如果有的話,同樣的規則也適用於其他服務。

到目前為止,我還沒有遇到任何陷阱並且它有效,所以我現在將其標記為正確答案。

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