Networking

如何配置進出 VXLAN 的路由

  • January 28, 2022

我有幾個使用 vxlan 連接的 Linux 主機。我們稱它們為主機 A、主機 B 和主機 C。每個主機上的配置類似於:

# Define a bridge:
cat << EOF > /etc/sysconfig/network-scripts/ifcfg-cloudbr0
DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
STP=no
USERCTL=no
NM_CONTROLLED=no
IPADDR=192.168.200.1
NETMASK=255.255.255.0
DNS1=10.10.0.2
EOF

# Read the above config file and create the bridge
systemctl restart network

# VXLAN
ip link add vxlan100 type vxlan id 100 dstport 4789 local 10.10.128.84 group 224.10.0.1 dev eth0 ttl 5
brctl addif cloudbr0 vxlan100
ip link set up dev vxlan100

結果是主機 A、B 和 C 各有兩個 IP 地址,一個公共 IP 地址(在 10.10.0.0/16 子網上)和一個私有 IP 地址(在 192.168.200.0/24 子網上)。私有地址僅對配置了 vxlan 的其他主機可見。主機 A、B 和 C 都可以 ping 通對方的公共和私有地址。

接下來,我需要讓一些額外的主機(主機 D、E 和 F)訪問 vxlan 子網,而無需將它們實際加入子網。所以,我正在尋找某種第 3 層路由解決方案。

我在主機 A 上啟用了 IP 轉發,然後更新了適當的路由表,以通過主機 A 為主機 D、E 和 F 提供到 192.168.200.0/24 的路由。這允許主機 D、E 和 F 使用它的任何一個來 ping 主機 A公共或私有地址,但它們無法訪問任何其他 vxlan 地址。出於某種原因,主機 A 沒有將流量轉發到 vxlan 子網(否則響應不會返回)。

設置進/出 vxlan 子網的第 3 層路由的最佳方法是什麼?

我找到的解決方案是:

  • 在主機 A 上啟用 IP 轉發
  • 使用主機 A 的私有地址作為主機 B 和 C 上的預設網關
  • 使用物理路由器路由表中主機 A 的公共地址使私有子網可路由:route add 192.168.200.0/24 via 10.10.128.84

結果是與主機 A 不同的物理子網上的所有主機都可以訪問 vxlan 子網(假設所有必要的路由器都有正確的路由表條目)。與主機 A 在同一物理子網上的任何主機都必須加入 vxlan 子網才能訪問它。

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