TPLink MR600 advertsing expired prefix & device is not accesable by ipv6 address over the internet
MR600 sending 2 RA i think one is expired, so to renew ipv6 i has to reboot the device, but i am running a Raspberry Pi web server for hobby projects which has to run 24*7 without reboot
FYI: I have this beta firmware which provides XLAT for JIO ISP(India) & there is no official release yet.
I don't have much experience in networking, so please let me know if its any configuration issue on my side, below is my observation
This was the ipv6 provided by Jio ISP (2409:40f2:300f:c0ec:1e61:b4ff:fec7:d6a)


Currently, the device is connected over wifi & has the correct ipv6 since I rebooted, but sometimes it will have the expired ipv6
but it has one expired route i.e., 2402:8100:281a:48f0::/64

You can see here i got 2 RA, 2402:8100:281a:48f0::/64 & 2409:40f2:300f:c0ec::/64,
i think only 2409:40f2:300f:c0ec::/64 is valid right?
I tested RA on Raspberry Pi 3B+(6.6.51+rpt-rpi-v8), ubuntu 22.04 LTS (5.19.5-051905-generic), & windows 11 and all receiving 2 RA in which one might be invalid
& for Invalid RA the source MAC is also different & not matching with MR600 LAN MAC Address

(ref: https://community.tp-link.com/en/home/forum/topic/673214)
please fix the issue or let me know what could be wrong if its on my side,
Thanks
my usecase was to use public ipv6 to access home server,
i ended up by writing a shellscript to filter the correct global ipv6 and here is the script,
cat fix_ipv6.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
# location: ~/fix_ipv6.sh
# Works when only device its directly connected to modem
interface_id="enp0s31f6"
# router_mac=$(arp -a | grep "(192.168.3.1)" | cut -d ' ' -f4) # extracting MAC from gateway address
router_mac="1c:61:b4:c7:0d:69"
echo "router mac=$router_mac"
ra=$(sudo tcpdump -c1 -nvqt -i $interface_id icmp6 and ip6[40] == 134 and ether host $router_mac 2>/dev/null) # extracting correct Router Adverisement against MAC
echo -e $ra
regex_match_prefix="prefix info[a-zA-Z0-9 \(\)\,]+:\s(([0-9A-Za-z]{1,4}\:){4}\:\/64)"
if [[ $ra =~ $regex_match_prefix ]]
then
prefix="${BASH_REMATCH[1]}"
echo "correct prefix=$prefix"
existing_routes=$(ip -6 r)
_prefix=$(echo $prefix | sed 's/::\/64//g')
if ip -6 a | grep -q "$_prefix";
then
echo "Already have valid ipv6"
had_invalid="no"
while read -r line ; do
old_routes=$(echo $line | grep -oP "(([0-9A-Za-z]{1,4}\:){4}\:\/64)")
if [[ -n "$old_routes" ]] && ! grep -q "$_prefix" <<< "$old_routes";
then
echo "deleting invalid routes - $old_routes"
sudo ip -6 route flush $old_routes
had_invalid="yes"
fi
done <<< "$existing_routes"
sudo ip -6 route add $prefix dev $interface_id metric 10 proto ra # making new prefix with high priority
if [[ $had_invalid == "yes" ]]
then
echo "Restarting network manager since had invalid routes"
sudo systemctl restart NetworkManager
exit 0
fi
exit 0
fi
while read -r line ; do
old_routes=$(echo $line | grep -oP "(([0-9A-Za-z]{1,4}\:){4}\:\/64)")
if [[ -n "$old_routes" ]]
then
echo "deleting old routes - $old_routes"
sudo ip -6 route flush $old_routes
fi
done <<< "$existing_routes"
echo "adding correct prefix=$prefix" >> /home/brguru90/ipv6_fixed.txt
sudo systemctl restart NetworkManager
sleep 10
sudo ip -6 route add $prefix dev $interface_id metric 10 proto ra # making new prefix with high priority
sudo ip -6 addr flush dev $interface_id
bash /home/brguru90/update_ddns.sh
else
echo "prefix not found" >&2
exit 1
And recently, i installed OpenWRT and its working fine but i lost the ability of onemesh, now instead of onemesh mode i am using regular wifi extender feature in RE505X device.
