我们正在从一组地址迁移到另一组地址,均为 /24,并试图在迁移过程中尽量减少停机时间。理想情况下,我们会在关闭旧线路时同时运行这两个地址一段时间。总共有 4 个互联网连接,每对都运行 BGP。
然后,每个路由到 Cisco ASA,该 ASA 连接到在该子网上连接有多个服务器的交换机。
在上图中,左侧部分是现在存在的,我正在考虑添加右侧部分。
我已经连接了 ASA,并且它们都位于 10.20.20.0/24 子网上,其中第一个 ASA 接口为 10.20.20.1,第二个 ASA 接口为 10.20.20.254。
这里的问题是,所有服务器的默认路由都是 10.20.20.1,我非常希望将流量路由回其传入的路径。即互联网 -> ASA #2 -> 服务器 -> 返回 ASA #2。当然,就像现在一样,它将响应发送回 ASA #1,并且找不到它的转换。
我是不是用错误的方式处理这个问题?
编辑:我应该提到,Outside #1 和 Outside #2 有不同的公共 /24 网络。我们正在从 ISP 提供的块迁移到我们自己的块。
答案1
这就是我最终做的事情:
#!/bin/sh
echo 200 asa1 >> /etc/iproute2/rt_tables
echo 201 asa2 >> /etc/iproute2/rt_tables
ip route add table asa1 default via 10.20.20.1 dev eth0 metric 100
ip route add table asa2 default via 10.20.20.254 dev eth0 metric 100
ip rule add prio 100 from all fwmark 1 lookup asa1
ip rule add prio 110 from all fwmark 2 lookup asa2
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
iptables -t mangle -A INPUT -m mac --mac-source $(MAC_ASA1) -j MARK set-mark 1
iptables -t mangle -A INPUT -m mac --mac-source $(MAC_ASA2) -j MARK --set-mark 2
iptables -t mangle -A INPUT -j CONNMARK --save-mark
将MAC_ASA1
/替换MAC_ASA2
为 ASA 上所连接接口的硬件地址。该地址可以从 ARP 表中收集。
您还需要注意以太网设备名称,特别是在使用具有较新样式接口名称的 systemd 时。