Ok, I figured out what's happening. Looks like dhcpd (the daemon that hands out dynamic ipv4 addresses) is either gone or doesn't start anymore when you turn on internet sharing. dhcp6d, the daemon for ipv6 address *does* start and appears to function correctly, but for some reason devices won't try ipv6 when ipv4 fails 🤷♂️.
However: dhcpd is only needed to get a local address, not to actually use the network, so you can just manually assign an IP address. Steps:
On the mac that used to work, open terminal and type:
cat /private/var/db/dhcpd_leases
This shows the IP range that the previously working dhcpd was handing out. You should see a bunch of entries like:
{
ip_address=192.168.2.3
hw_address=<redacted>
identifier=<redacted>
lease=0x63261f62
}
So for me, that means all my connected devices want to be in the 192.168.2.2 through 192.168.2.255 range, and the router is most likely 192.168.2.1. Basically take the first 3 IP address numbers from whatever appears in your list, and make up a (unique) 4th number for each device.
So take, say, your ipad:
- connect to your shared wifi
- Select the wifi network in settings, and tap the (i) to see more info
- Under IPV4 ADDRESS, tap "Configure IP"
- Change it from "Automatic" to "Manual"
- In The "IP Address" field, type in a unique IP address with the first 3 numbers from above, and a unique number for each device in the range of 2 through 255. I might use "192.168.2.10" for example.
- In the subnet mask, type "255.255.255.0"
- For the router, type the first 3 numbers from above, and a "1" for the last number. I would use "192.168.2.1".
Now try to access a webpage from the connected device. It should work.