我在一个网络中运行两台服务器。
主服务器外部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 来处理这个问题。
提前致谢。
答案1
我目前想到的解决方案是:
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
如果有其他服务,则适用相同的规则。
到目前为止我还没有遇到任何陷阱并且它有效,所以我暂时将其标记为正确答案。