[{"data":1,"prerenderedAt":541},["ShallowReactive",2],{"Categories":3,"NavIndexCategoriesCountFooter":219,"content-\u002F2026\u002F09\u002F06\u002Fstale-ipv6-default-route-after-gateway-swap":220},[4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,68,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,210,211,212,213,214,215,216,217,218],{"category":5},"System Administration",{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},"Software Development",{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":27},{"category":27},{"category":67},"Drones & RC",{"category":69},"DIY Projects",{"category":67},{"category":72},"Photography",{"category":69},{"category":69},{"category":69},{"category":67},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":67},{"category":69},{"category":69},{"category":67},{"category":67},{"category":72},{"category":72},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":5},{"category":5},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":5},{"category":67},{"category":67},{"category":72},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":72},{"category":67},{"category":138},"3D Printing - Laser Cutting - CNC",{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":5},{"category":138},{"category":27},{"category":27},{"category":138},{"category":138},{"category":72},{"category":138},{"category":27},{"category":27},{"category":69},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":67},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":27},{"category":69},{"category":27},{"category":27},{"category":27},{"category":67},{"category":27},{"category":181},"Home Assistant",{"category":181},{"category":72},{"category":27},{"category":27},{"category":72},{"category":138},{"category":5},{"category":72},{"category":72},{"category":138},{"category":27},{"category":181},{"category":5},{"category":181},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":27},{"category":72},{"category":72},{"category":209},"Technology",{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},207,{"id":221,"title":222,"body":223,"category":209,"date":524,"description":229,"embedImage":525,"extension":526,"image":525,"intro":527,"meta":528,"navigation":529,"path":530,"seo":531,"series":525,"sitemap":532,"stem":533,"tags":534,"targets":525,"__hash__":540},"content\u002F2026\u002F09\u002F06\u002Fstale-ipv6-default-route-after-gateway-swap.md","Stale IPv6 Default Route After a Gateway Swap",{"type":224,"value":225,"toc":517},"minimark",[226,230,235,238,249,252,258,265,268,298,301,308,312,318,321,327,330,333,339,345,352,362,366,408,411,436,439,445,459,463,513],[227,228,229],"p",{},"I replaced my USG Pro 4 + Cloud Key Gen2 Plus setup with a UDM Pro Max. Migration went fine — backup restored, switches and APs re-adopted themselves, Protect came up on new disks. Home Assistant Cloud then stopped working, and the cause was a static IPv6 default route pointing at the old gateway.",[231,232,234],"h2",{"id":233},"symptoms","Symptoms",[227,236,237],{},"Repeated in the log:",[239,240,245],"pre",{"className":241,"code":243,"language":244},[242],"language-text","ERROR [homeassistant.components.cloud.subscription]\nA timeout of 10 was reached while trying to fetch subscription information\n","text",[246,247,243],"code",{"__ignoreMap":248},"",[227,250,251],{},"With this traceback:",[239,253,256],{"className":254,"code":255,"language":244},[242],"File \"hass_nabucasa\u002Fauth\u002Fcognito.py\", line 362, in _async_renew_access_token\n    await self.cloud.run_executor(cognito.renew_access_token)\nasyncio.exceptions.CancelledError\n...\nhass_nabucasa.auth.cognito.AuthTimeoutError: Timeout while renewing access token\n",[246,257,255],{"__ignoreMap":248},[227,259,260,261,264],{},"This is a ",[246,262,263],{},"CancelledError"," at the executor await — which means the 10s timeout fired while the worker thread was still running.",[227,266,267],{},"Other symptoms:",[269,270,271,277,282,287],"ul",{},[272,273,274],"li",{},[246,275,276],{},"relayer_connected: false",[272,278,279],{},[246,280,281],{},"iot_state: disconnected",[272,283,284],{},[246,285,286],{},"iot_tries: 0",[272,288,289,290,293,294,297],{},"The three ",[246,291,292],{},"can_reach_*"," health probes never resolved past ",[246,295,296],{},"pending",".",[227,299,300],{},"Signing out and back in also timed out, so it wasn't a stale token. And now I was stuck logged out too.",[227,302,303,304,307],{},"Another symptom I found: ",[246,305,306],{},"tts.cloud_say"," made the Google speakers play their \"about to speak\" chime and then nothing. The speaker got a media URL and started preparing but when it tried to send the audio it never arrived.",[231,309,311],{"id":310},"diagnosis","Diagnosis",[227,313,314,317],{},[246,315,316],{},"curl"," from inside the Home Assistant container reached every Nabu Casa endpoint in under half a second. You need to be careful here - running these tests against some nabu casa addresses were fine - as they didn't have IPv6 addresses.",[227,319,320],{},"But - running curl verbosely against the host in the traceback:",[239,322,325],{"className":323,"code":324,"language":244},[242],"* Trying [2600:1f18:257:8001:3297:9a85:5e50:a1e]:443...\n* Trying 100.55.237.87:443...\n* Connected to cognito-idp.us-east-1.amazonaws.com (100.55.237.87) port 443\n",[246,326,324],{"__ignoreMap":248},[227,328,329],{},"curl fell back to IPv4 - IPv6 just stalled.",[227,331,332],{},"The route table:",[239,334,337],{"className":335,"code":336,"language":244},[242],"$ ip -6 route show default\ndefault via fe80::feec:daff:fed1:10b7 dev end0 proto static metric 20100\n",[246,338,336],{"__ignoreMap":248},[239,340,343],{"className":341,"code":342,"language":244},[242],"$ ip -6 neighbor show fe80::feec:daff:fed1:10b7\nfe80::feec:daff:fed1:10b7 dev end0 FAILED\n",[246,344,342],{"__ignoreMap":248},[227,346,347,348,351],{},"Aha - that's the fe80 address for MAC ",[246,349,350],{},"FC:EC:DA:D1:10:B7"," — the old USG Pro 4 which was no longer powered on.",[227,353,354,355,358,359,297],{},"Also - ",[246,356,357],{},"proto static"," - this was something I set up originally - it wasn't something the system had found. This is most likely because when I originally set up IPv6 (a DHCPv6 from my ISP with a \u002F56 prefix) I had no RA in the system. I later added radvd to my LAN. After the fix (below) it is now ",[246,360,361],{},"proto ra",[231,363,365],{"id":364},"fix","Fix",[239,367,371],{"className":368,"code":369,"language":370,"meta":248,"style":248},"language-bash shiki shiki-themes github-dark","ip -6 route del default via fe80::feec:daff:fed1:10b7 dev end0\n","bash",[246,372,373],{"__ignoreMap":248},[374,375,378,382,386,390,393,396,399,402,405],"span",{"class":376,"line":377},"line",1,[374,379,381],{"class":380},"svObZ","ip",[374,383,385],{"class":384},"sDLfK"," -6",[374,387,389],{"class":388},"sU2Wk"," route",[374,391,392],{"class":388}," del",[374,394,395],{"class":388}," default",[374,397,398],{"class":388}," via",[374,400,401],{"class":388}," fe80::feec:daff:fed1:10b7",[374,403,404],{"class":388}," dev",[374,406,407],{"class":388}," end0\n",[227,409,410],{},"Then, to persist:",[239,412,414],{"className":368,"code":413,"language":370,"meta":248,"style":248},"ha network update end0 --ipv6-method auto\n",[246,415,416],{"__ignoreMap":248},[374,417,418,421,424,427,430,433],{"class":376,"line":377},[374,419,420],{"class":380},"ha",[374,422,423],{"class":388}," network",[374,425,426],{"class":388}," update",[374,428,429],{"class":388}," end0",[374,431,432],{"class":384}," --ipv6-method",[374,434,435],{"class":388}," auto\n",[227,437,438],{},"Result:",[239,440,443],{"className":441,"code":442,"language":244},[242],"$ ip -6 route show default\ndefault via fe80::76fa:29ff:fe60:5807 dev end0 proto ra metric 20100 pref high\ndefault proto ra metric 20101 pref medium\n        nexthop via fe80::ceba:62fb:5d1e:be15 dev end0 weight 1\n        nexthop via fe80::4d7e:f757:2f83:f11f dev end0 weight 1\n",[246,444,442],{"__ignoreMap":248},[227,446,447,448,450,451,454,455,458],{},"So - ",[246,449,361],{},", and ",[246,452,453],{},"fe80::76fa:29ff:fe60:5807"," maps to ",[246,456,457],{},"74:FA:29:60:58:07"," — the UDM.",[231,460,462],{"id":461},"things-i-tried-that-didnt-work","Things I tried that didn't work",[269,464,465,472,478,496],{},[272,466,467,471],{},[468,469,470],"strong",{},"MTU."," Ruled out by pulling a few hundred KB in 0.22s.",[272,473,474,477],{},[468,475,476],{},"Executor pool saturation."," Would produce the same traceback shape, but there were no blocking-call warnings in the log.",[272,479,480,483,484,487,488,491,492,495],{},[468,481,482],{},"IMDS."," ",[246,485,486],{},"pycognito"," builds a boto3 client, and boto3 tries ",[246,489,490],{},"169.254.169.254"," for credentials at construction. From the container that address timed out at 8s rather than refusing. I added a LAN In reject rule for ",[246,493,494],{},"169.254.0.0\u002F16"," on the UDM so it fails fast - so this is better than it was without - but it was not the real issue.",[272,497,498,483,501,504,505,508,509,512],{},[468,499,500],{},"IPv6, tested against the wrong hosts.",[246,502,503],{},"cloud.nabucasa.com"," and ",[246,506,507],{},"accounts.nabucasa.com"," have no AAAA records, so early IPv6 tests came back clean. Everything after that used ",[246,510,511],{},"-4",", which hid the failing path entirely.",[514,515,516],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":248,"searchDepth":518,"depth":518,"links":519},2,[520,521,522,523],{"id":233,"depth":518,"text":234},{"id":310,"depth":518,"text":311},{"id":364,"depth":518,"text":365},{"id":461,"depth":518,"text":462},"2026-09-06 16:20 +0200",null,"md","Home Assistant Cloud stopped working after replacing a USG Pro 4 with a UDM Pro Max. The cause was a static IPv6 default route pointing at the old gateway's link-local address.",{},true,"\u002F2026\u002F09\u002F06\u002Fstale-ipv6-default-route-after-gateway-swap",{"title":222,"description":229},{"loc":530},"2026\u002F09\u002F06\u002Fstale-ipv6-default-route-after-gateway-swap",[535,536,537,538,539],"home-assistant","unifi","networking","ipv6","debugging","eJO3uW1HXrpz7a0QiR59dI6Yw3DuX6-I55nhKmKAEnk",1791464120293]