Hi all, I'm scratching my head around an issue with proxy-arp. See the below diagram [EDIT: I want to move all CPEs to use the CGNAT /10, assigning IPs from that block without sub-dividing it into subnets, that is where proxy-arp would be useful compared to static routing]:
The Linux server has a tagged VLAN interface towards the CCR that acts as the bridge between itself an network-edge CCRs serving as PPPoE concentrators. The server has static routes for each of the IP ranges used by the client CPEs, 10.70.0.0/16, 10.71.0.0/16, and 10.72.0.0/16, in each of the three networks, with gateway the VLAN interface (e.g. em2.99 for VLAN 99).
The CCR's bridge has horizon set to 1 on each of the downstream CCR interfaces, to prevent the CCRs from talking to each other. The upstream interface from each network CCR (ETH2) has proxy-arp enabled.
When the server wants to ping e.g. 10.70.0.25, the IP of a CPE under CCR A's control, it broadcasts an ARP request, which, according to my understanding on how proxy-arp works, should only be responded to by CCR A, as it "knows" it has that IP under its control. However, from pcap captures, it seems that all three CCRs (A, B and C) respond to the ARP request from the server, and the server gets whichever arrives first, instead of the correct one.
Is this normal behavior? The second observation I have is that if I add an IP address to ETH2 on the network edge CCRs, e.g. 192.168.0.10/20, the CCR starts flooding the upstream link with ARP requests from all IPs in the /20 range, seemingly at random. It creates incomplete entries in its ARP table for each request, until they expire.
Help!