It appears that packets intended to loopback to the self node (via the tailnet IP or a subnet route) aren't being routed correctly. Seems likely that it's because the peer map we receive from control doesn't include the self node, so the underlay and overlay routers aren't being configured properly.
repro:
import tailscale
dev = await tailscale.connect(...)
sock = await dev.udp_bind((await dev.ipv4_addr(), 1234))
await sock.sendto(sock.local_addr(), b"hello")
await sock.recvfrom() # blocks forever
It appears that packets intended to loopback to the self node (via the tailnet IP or a subnet route) aren't being routed correctly. Seems likely that it's because the peer map we receive from control doesn't include the self node, so the underlay and overlay routers aren't being configured properly.
repro: