想象一下以下设置。
我有一台机器 A,它导出一个网络共享,并且可以通过 1.1.1.1 访问。
第二台具有 IP(例如 2.2.2.2)的 B 机器正在挂载该共享,一切正常。
现在,我正在尝试设置某种蓝/绿开发。
机器 B 从 IP 2.2.2.2 开始。当我分配某种新的虚拟 IP(例如来自 AWS 的 ElasticIP,但在本例中是来自 Hetzner Cloud 的浮动 IP)时,我会在 iptables 中创建一个新的 POSTROUTING 条目,其中包含
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $FIP
正确结果是
10 20 1415 SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:x.x.x.x
这意味着,机器B现在使用新的IP地址进行通信。
痛苦随之而来:
我不再能够从机器 B 安装和/或 ping 具有 IP 1.1.1.1 的机器 A。除了具有新 IP 地址的机器 B 之外,从任何地方都可以 ping 机器 A。
怎么会这样?有什么想法吗?