为什么使用简单的双机 Linux 设置通过 VXLAN 网络发送的 ARP 请求没有得到响应?

为什么使用简单的双机 Linux 设置通过 VXLAN 网络发送的 ARP 请求没有得到响应?

我正在 Linux 网络命名空间中测试 iproute2 的原生 VXLAN 功能。模拟设置涉及 2 个不同的命名空间,其中有 1 个网桥和 2 个 veth 对。

目的是使用手动单播远程地址配置在两台机器之间建立基本的 VXLAN。

您可以使用以下脚本完全重现该设置:

#!/usr/bin/env bash

set -x

# Create network namespaces
ip netns add sim-vl1-stack
ip netns add sim-vl2-stack

# Create and configure bridge links
ip link add sim-vl-br0 type bridge

ip link set dev sim-vl-br0 up

# Create and configure veth links
ip link add sim-vl1-veth0 type veth peer sim-vl1-veth0p
ip link add sim-vl2-veth0 type veth peer sim-vl2-veth0p

ip link set dev sim-vl1-veth0 master sim-vl-br0
ip link set dev sim-vl2-veth0 master sim-vl-br0

ip link set dev sim-vl1-veth0p netns sim-vl1-stack
ip link set dev sim-vl2-veth0p netns sim-vl2-stack

ip link set dev sim-vl1-veth0 up
ip link set dev sim-vl2-veth0 up

ip -n sim-vl1-stack link set dev sim-vl1-veth0p up
ip -n sim-vl2-stack link set dev sim-vl2-veth0p up

ip -n sim-vl1-stack addr add 172.20.0.1/24 dev sim-vl1-veth0p
ip -n sim-vl2-stack addr add 172.20.0.2/24 dev sim-vl2-veth0p

ip -n sim-vl1-stack link add name sim-vl1-vxlan type vxlan id 1 \
    dev sim-vl1-veth0p remote 172.20.0.2 local 172.20.1.1 dstport 4789
ip -n sim-vl2-stack link add name sim-vl2-vxlan type vxlan id 1 \
    dev sim-vl2-veth0p remote 172.20.0.1 local 172.20.1.2 dstport 4789

ip -n sim-vl1-stack addr add 172.20.1.1/24 dev sim-vl1-vxlan
ip -n sim-vl2-stack addr add 172.20.1.2/24 dev sim-vl2-vxlan

ip -n sim-vl1-stack link set dev sim-vl1-vxlan up
ip -n sim-vl2-stack link set dev sim-vl2-vxlan up

set +x

您可以使用以下方法拆除此设置:

#!/usr/bin/env bash

set -x

# Destroy veth links
ip link del sim-vl1-veth0
ip link del sim-vl2-veth0

# Destroy bridge links
ip link del sim-vl-br0

# Destroy namespaces
ip netns del sim-vl1-stack
ip netns del sim-vl2-stack

set +x

我不确定为什么使用 VXLAN IP 地址从一个命名空间到另一个命名空间执行 ping 会导致 VXLAN 上的 ARP 请求未得到答复。当 UDP VXLAN 数据包到达标准端口 4789 时,命名空间可能无法正确处理该数据包。要使该功能按预期运行,缺少什么?

我使用第二个命名空间监控网络术语鲨鱼如下:

ip netns exec sim-vl2-stack bash
termshark -i sim-vl2-veth0p

然后,我运行此命令来执行 ping:

ip netns exec sim-vl1-stack ping -c 1 172.20.1.2

我观察到 ARP 请求通过 VXLAN 到达第二个网络命名空间,但是没有后续响应。

我应该如何以不同的方式配置此设置以通过 VXLAN 获取 ARP 响应?我希望能够通过使用手动单播使用 VXLAN 将一组机器连接在一起,从而在它们之间执行第 2 层和第 3 层通信。我从两台机器的最简单配置开始,但我想以类似的方式进一步扩展它。这是我不熟悉的领域,因此可能存在概念上的误解。

答案1

不确定这是否是拼写错误或误解,但local应该是172.20.0.1(for sim-vl1-vxlan)和172.20.0.2(for sim-vl2-vxlan)。

我观察到 ARP 请求通过 VXLAN 到达第二个网络命名空间,但是没有后续响应。

termshark-i sim-vl2-veth0p

follow-up response如果你进行监控,你就会发现sim-vl2-vxlan。只是响应没有被封装并转发到另一端,因为local你设置的地址没有意义。

相关内容