十年来我第一次陷入 IP 表地狱!
# Generated by iptables-save v1.6.0 on Fri Jan 10 16:36:24 2020
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [6:371] :POSTROUTING ACCEPT [6:371]
-A PREROUTING -p tcp -m tcp --dport 3306 -j DNAT --to-destination 172.25.25.50:3306
-A PREROUTING -p tcp -m tcp --dport 3307 -j DNAT --to-destination 172.25.25.226:3306
-A POSTROUTING -d 172.25.25.50/32 -p tcp -m tcp --dport 3306 -j SNAT --to-source 10.128.128.52
-A POSTROUTING -d 172.25.25.226/32 -p tcp -m tcp --dport 3306 -j SNAT --to-source 10.128.128.52 COMMIT
# Completed on Fri Jan 10 16:36:24 2020
基本上,我在线路末端有 2 个独立的 mysql 服务器实例。
可以成功访问服务器 1 - 172.25.25.50:3306。
服务器 2 – 172.25.25.226:3307 根本无法命中。
两者的源是相同的,它是一个 LB - 10.128.128.52,这就是服务器 1 和服务器 2 使用不同端口的原因。我认为端口 3306/3307 在 LB 和机器上都是打开的。
在服务器操作系统和实例设置上,转发都已打开。
root@art-proxy1-us:/home/ben# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- anywhere anywhere tcp dpt:mysql to:172.25.25.50:3306
DNAT tcp -- anywhere anywhere tcp dpt:3307 to:172.25.25.226:3306
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT tcp -- anywhere 172.25.25.50 tcp dpt:mysql to:10.128.128.52
SNAT tcp -- anywhere 172.25.25.226 tcp dpt:mysql to:10.128.128.52
救命!:D
答案1
只需设置另一台虚拟机,并将其停留在以下两者中。
# Generated by iptables-save v1.6.0 on Fri Jan 10 16:36:24 2020
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [6:371] :POSTROUTING ACCEPT [6:371]
-A PREROUTING -p tcp -m tcp --dport 3306 -j DNAT --to-destination 172.25.25.50:3306
-A POSTROUTING -d 172.25.25.50/32 -p tcp -m tcp --dport 3306 -j SNAT --to-source 10.128.128.52