Package: linux-image
Version: 6.6.15-2 and 6.7.12-1
Hello,
I'm facing for some time a strange behavior of the route-leak. It happen
on both IPv4 and IPv6.
Configuration used: Debian Trixie, Kernel 6.7.12 with FRRouting 10.1 - git
VRF: internet
Default: just local management
Route-Leak between internet <-> default:
FRR config:
ip route 0.0.0.0/0 internet nexthop-vrf internet
..
router bgp 43XXX
..
address-family ipv4 unicast
redistribute connected route-map VPN-export-GRT-connected
no neighbor MPLS-v4 activate
no neighbor MPLS-v6 activate
no neighbor SPOKES-v4 activate
no neighbor SPOKES-v6 activate
label vpn export auto
rd vpn export 43474:11002
rt vpn import 43XXX:11000 43XXX:11999
rt vpn export 43XXX:11000
export vpn
import vpn
exit-address-family
!
address-family ipv4 vpn
neighbor MPLS-v4 activate
neighbor MPLS-v4 soft-reconfiguration inbound
neighbor SPOKES-v4 activate
neighbor SPOKES-v4 soft-reconfiguration inbound
exit-address-family
router bgp 43XXX vrf internet
address-family ipv4 unicast
maximum-paths 4
label vpn export auto
rd vpn export 43XXX:10002
rt vpn import 43XXX:10000 43XXX:10100 43XXX:10200 43XXX:10500
43XXX:10700 43XXX:10800 43XXX:10999
rt vpn export 43XXX:10000
export vpn
import vpn
..
route-map VPN-export-GRT-connected permit 1000
match ip address prefix-list pl-EASYNET-subnets
set extcommunity rt 43XXX:10999
exit
!
route-map VPN-export-GRT-connected permit 1100
match ipv6 address prefix-list pl-EASYNET-subnets
set extcommunity rt 43XXX:10999
exit
!
route-map VPN-export-GRT-connected deny 65535
exit
ip prefix-list pl-EASYNET-subnets description EASYNET IPv4 subnets
ip prefix-list pl-EASYNET-subnets seq 5 permit 89.X.X.0/24 le 32
ipv6 prefix-list pl-EASYNET-subnets description description EASYNET IPv6
subnets
ipv6 prefix-list pl-EASYNET-subnets seq 5 permit 2a00:XXXX:Y::/48 le 128
To be able to export local connected routes from default I'm using the
communities to export them into internet VRF.
In default I'm using a default route to vrf internet.
Route table:
S>* 0.0.0.0/0 [1/0] is directly connected, internet (vrf internet),
weight 1, 00:06:49
..
R02(config-if)# do sh ip route | include lo
Codes: K - kernel route, C - connected, L - local, S - static,
t - trapped, o - offload failure
O 10.100.2.1/32 [110/0] is directly connected, lo, weight 1, 00:15:41
L * 10.100.2.1/32 is directly connected, lo, 1d14h54m
C>* 10.100.2.1/32 is directly connected, lo, 1d14h54m
O 89.X.X.2/32 [110/0] is directly connected, lo, weight 1, 00:00:07
L * 89.X.X.2/32 is directly connected, lo, 00:00:07
C>* 89.X.X.2/32 is directly connected, lo, 00:00:07
O 89.X.Y.118/32 [110/0] is directly connected, lo, weight 1, 00:15:41
L * 89.X.Y.118/32 is directly connected, lo, 1d14h54m
C>* 89.X.Y.118/32 is directly connected, lo, 1d14h54m
R02(config-if)# do sh ip route vrf internet 89.X.X.2/32
Routing entry for 89.X.X.2/32
Known via "bgp", distance 20, metric 0, vrf internet, best
Last update 00:00:56 ago
* directly connected, lo(vrf default), weight 1
But the TCPDUMP looks like this:
root@R02:/home/adrian# tcpdump -nvlei any host 178.X.X.18 and icmp
tcpdump: data link type LINUX_SLL2
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2),
snapshot length 262144 bytes
17:01:05.137546 eth4-0 In ifindex 4 78:19:f7:XX:XX:XX ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 56, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.137546 wan0 In ifindex 8 78:19:f7:XX:XX:XX ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 56, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.137546 wan0.650 In ifindex 12 78:19:f7:XX:XX:XX ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 56, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.137600 lo In ifindex 1 00:00:00:00:00:00 ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 55, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.137614 lo In ifindex 1 00:00:00:00:00:00 ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 54, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.137622 lo In ifindex 1 00:00:00:00:00:00 ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 53, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
..
17:01:05.137989 lo In ifindex 1 00:00:00:00:00:00 ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 2, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.38.116.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.137996 lo In ifindex 1 00:00:00:00:00:00 ethertype IPv4
(0x0800), length 104: (tos 0x0, ttl 1, id 64325, offset 0, flags [DF],
proto ICMP (1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.138027 internet Out ifindex 11 36:7d:d1:XX:XX:XX ethertype IPv4
(0x0800), length 132: (tos 0xc0, ttl 64, id 21454, offset 0, flags
[none], proto ICMP (1), length 112)
89.X.X2 > 178.X.X.18: ICMP time exceeded in-transit, length 92
(tos 0x0, ttl 1, id 64325, offset 0, flags [DF], proto ICMP
(1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.138034 wan0.2320 Out ifindex 14 00:e0:ed:XX:XX:XX ethertype
IPv4 (0x0800), length 132: (tos 0xc0, ttl 64, id 21454, offset 0, flags
[none], proto ICMP (1), length 112)
89.X.X2 > 178.X.X.18: ICMP time exceeded in-transit, length 92
(tos 0x0, ttl 1, id 64325, offset 0, flags [DF], proto ICMP
(1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.138036 wan0 Out ifindex 8 00:e0:ed:XX:XX:XX ethertype IPv4
(0x0800), length 132: (tos 0xc0, ttl 64, id 21454, offset 0, flags
[none], proto ICMP (1), length 112)
89.X.X2 > 178.X.X.18: ICMP time exceeded in-transit, length 92
(tos 0x0, ttl 1, id 64325, offset 0, flags [DF], proto ICMP
(1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
17:01:05.138040 eth4-0 Out ifindex 4 00:e0:ed:XX:XX:XX ethertype IPv4
(0x0800), length 132: (tos 0xc0, ttl 64, id 21454, offset 0, flags
[none], proto ICMP (1), length 112)
89.X.X2 > 178.X.X.18: ICMP time exceeded in-transit, length 92
(tos 0x0, ttl 1, id 64325, offset 0, flags [DF], proto ICMP
(1), length 84)
178.X.X.18 > 89.X.X2: ICMP echo request, id 33972, seq 6, length 64
--
Development @EasyNet
Web: www.easynet.dev <https://www.easynet.dev>