我在两个不同的数据中心拥有两台 Linux 服务器,其 IP 地址如下:
Server1: 4.4.4.4
Server2: 8.8.8.8 and 8.8.8.9
我需要将所有流量从 8.8.8.9(服务器 2)路由到 4.4.4.4(服务器 1),但服务器 1 会将 8.8.8.9 视为本地 IP。
所以如果我运行 ifconfig 我会得到:
eth0 4.4.4.4
eth0:1 8.8.8.9
是否有任何类型的软件可以做到这一点?
谢谢。
额外细节
我尝试这样做的原因有点复杂。我将尝试总结一下。
我在服务器 1 和服务器 2 中有一个邮件服务器(当前是服务器 1 的中继)。
该邮件服务器的日志由一个软件(闭源软件,制作该软件的公司已停业)处理,该软件为我所在的公司提供了一些有用的信息。但它无法捕获中继电子邮件的数据。也许缺少一些字段/数据,我不确定。
我有两个选择:
- 编写一个新软件(昂贵)
- 能够在服务器 1 中分配 IP,使其作为本地 IP 工作。这样我就不必再使用中继了,旧软件应该能够正常处理日志。
答案1
是的。您可以为您管理的任何服务器分配任何 IP 地址。
ip addr add 8.8.8.9/32 dev eth0
这样做有啥作用吗? 是的。它可能会破坏 server1 和 server2 上的 8.8.8.9 之间的所有通信。否则,在当前配置中,您除了得到一个愚蠢、不完整且不标准的设置外,什么也得不到。
你所要求的看起来与 VRRP 的内容很相似(http://www.ietf.org/rfc/rfc3768.txt) 用于为连接到共享路由器的两个节点分配单个 IP 地址(参见:在同一子网上)。这在 keepalived 和 LVS 设置中很流行。
考虑到这一点,在不同数据中心设置故障转移的一般方法(不会破坏我们所知的互联网)是使用 DNS 作为故障转移机制。
如果由于某种原因您需要流量出现在本地......
您可以研究使用 iptables 来破坏数据包并将流量重定向到 127.0.0.1(或任意本地 IP 地址)