iptables,两个转发规则,一个有效,一个无效

iptables,两个转发规则,一个有效,一个无效

十年来我第一次陷入 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

相关内容