Routing

在 ISP 集之間遷移時克服不對稱路由

  • February 19, 2016

我們正在從一組地址遷移到另一組地址,均為 /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 作為預設路由,我真的很想將流量路由回它進入的方式。也就是說,internet -> ASA #2 -> server -> back to ASA #2。當然,就像今天一樣,它會將響應發送回 ASA #1,但它沒有找到它的翻譯。

我會以錯誤的方式解決這個問題嗎?

編輯:我應該提到Outside #1 和Outside #2 有不同的公共/24 網路。我們正在從 ISP 提供的區塊遷移到我們自己的區塊。

這就是我最終做的事情:

#!/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 時。

引用自:https://serverfault.com/questions/755663