Linux VRFでループバックアドレスを割り当てる方法は?

Linux VRFでループバックアドレスを割り当てる方法は?

私はLinuxを作るVRFそして

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(この場合はシェル)でコマンドを実行します。外部アドレスでは機能しますが、ループバックアドレスでは機能しません。

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 loopback"を検索し、テーブル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ルールマークは、「l3mdev-table」よりも高い優先順位0の「ローカル」テーブルを一覧表示するため、ループバックは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役に立たない

ベストアンサー1

おすすめ記事