macOS Sequoia firewall preventing local LAN connections
I recently upgraded my desktop and laptop to macOS 15.2 Sequoia. I develop several websites and run local web servers on different ports on each machine. I used to be able to connect from one machine to the web service on the other across the local LAN, but since the upgrade to Sequoia, I cannot connect to some services. It looks to me like there's some firewall change that's blocking access from other devices on the LAN. I looked at and adjusted the ApplicationFirewall/socketfilterfw settings, and they show my application allowing incoming connections. How can enable access between my devices on the local LAN?
Here are more specifics.
I run a web service inside a Docker container that binds to port 80 and another as part of a Python script.that binds to port 8888. Both those applications show up in the socketfilterfw output:
% sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
Password:
Total number of apps = 25
1 : /Applications/UniFi.app/Contents/PlugIns/jre1.8.0_131.jre/Contents/Home/jre/bin/java
(Allow incoming connections)
...
15 : org.python.python
(Allow incoming connections)
...
23 : com.docker.docker
(Allow incoming connections)
...
27 : /usr/local/bin/python3
(Allow incoming connections)
28 : /usr/local/Cellar/python@3.13/3.13.0_1/Frameworks/Python.framework/Versions/3.13/bin/python3.13
(Allow incoming connections)
Note that there are 3 entries for Python where they were granted network access using different names/paths. When I use the curl command line tool to test the web services, I can get the web page using "locahost" and 127.0.0.1 for the host. When the URL passed to curl has the IP address for my desktop, curl cannot connect to the server (which I used to be able to do). By contrast, when I use the IP address and try to connect to the webserver running in the docker container on port 80, the connection works. Here are some tests that I ran:
% curl localhost:8888 | tail -3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12129 100 12129 0 0 5154k 0 --:--:-- --:--:-- --:--:-- 5922k
<script>display_choice('Home')</script>
</body>
</html>
% curl 127.0.0.1:8888 | tail -3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 12129 100 12129 0 0 5994k 0 --:--:-- --:--:-- --:--:-- 11.5M
<script>display_choice('Home')</script>
</body>
</html>
% curl ${myIP}:8888 | tail -3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
curl: (7) Failed to connect to 192.168.0.107 port 8888 after 2 ms: Couldn't connect to server
% curl ${myIP}:80 | tail -3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 52 100 52 0 0 4336 0 --:--:-- --:--:-- --:--:-- 4727
The provided host name is not valid for this server.%
The last line of that transcript where it says "The provided host name is not valid for this server" is the actual webserver response (the server running in Docker on port 80 expects the HTTP-Host to contain a host name and not a numeric IP address like 192.168.0.107). I can also connect to the web service running in the Docker container from other hosts like the laptop running on my LAN.
I want the web server running in Python on port 8888 to process requests from other hosts on my LAN. What needs to be changed to allow that?
iMac 24″, macOS 15.2