Tengo varias sugerencias. Primero, verifique que el firewall del filtro de paquetes esté apagado. Aquí hay un ejemplo en mi Mac, con los firewalls desactivados:
$ sysctl net.inet.ip.fw.enable
net.inet.ip.fw.enable: 1
$ sudo ipfw show
Password:
65535 0 0 allow ip from any to any
El comando sysctl muestra que el firewall está realmente habilitado, pero el segundo muestra que sus reglas permiten todo el tráfico. Los síntomas no son consistentes con el firewall de la aplicación, pero verifíquelo de todos modos para estar seguro:
$ defaults read /Library/Preferences/com.apple.alf globalstate
0
Aquí, 0 significa apagado, 1 significa encendido y 2 significa "Bloquear todas las conexiones entrantes". Si ninguno de estos muestra un firewall activo, lo siguiente que haré es ejecutar tcpdump para ver qué sucede entre telnet y nc. Aquí hay una conexión exitosa:
$ sudo tcpdump -ilo0 port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo0, link-type NULL (BSD loopback), capture size 65535 bytes
20:35:28.193217 IP localhost.49531 > localhost.http: Flags [S], seq 1937962870, win 65535, options [mss 16344,nop,wscale 3,nop,nop,TS val 7494959 ecr 0,sackOK,eol], length 0
20:35:28.193286 IP localhost.http > localhost.49531: Flags [S.], seq 1740947472, ack 1937962871, win 65535, options [mss 16344,nop,wscale 3,nop,nop,TS val 7494959 ecr 7494959,sackOK,eol], length 0
20:35:28.193298 IP localhost.49531 > localhost.http: Flags [.], ack 1, win 65535, options [nop,nop,TS val 7494959 ecr 7494959], length 0
20:35:28.193307 IP localhost.http > localhost.49531: Flags [.], ack 1, win 65535, options [nop,nop,TS val 7494959 ecr 7494959], length 0
Esto obviamente no solucionará el problema, pero puede dar una buena pista de lo que está pasando.