如何在 Linux VRF 中分配环回地址?

如何在 Linux VRF 中分配环回地址?

我创建一个LinuxVRF

ip link add vrf-blue type vrf table 10
ip link set dev vrf-blue up
ip link set dev eth2 master vrf-blue
ip ro add default via 192.168.3.202 table 10

然后我在该 VRF(本例中为 shell)中运行命令。它适用于外部地址,但没有环回地址:

ip vrf exec vrf-blue sh
# (in the new shell)
ping -c1 -W1 20.0.0.1   # Works
ping -c1 -W1 127.0.0.1  # Doesn't work

许多程序假定环回地址为 127.0.0.0/8 和 ::1/128。到目前为止,我已经在谷歌上搜索了“linux vrf环回”并尝试在表10中设置本地路由,但无法让它工作,所以

如何在 Linux VRF 中分配环回地址?

# ip rule show
0:      from all lookup local
1000:   from all lookup [l3mdev-table]
32766:  from all lookup main
32767:  from all lookup default

ip Rule show 在优先级 0 处列出“本地”表,高于“l3mdev-table”,因此环回在 VRF 之前处理。

# tcpdump -i any icmp
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
07:47:15.923179 lo    In  IP localhost > localhost: ICMP echo request, id 27859, seq 1, length 64
07:47:15.923190 lo    In  IP localhost > localhost: ICMP echo reply, id 27859, seq 1, length 64

主 VRF 中的 tcpdump 显示 icmp 请求/答复,但答复未到达 VRF 中运行的“ping”程序。

sysctl -w net.ipv4.raw_l3mdev_accept=1没有帮助

相关内容