MacOS – have IPv6 listeners when IPv6 is disabled

ipv6macosNetwork

I'm working under OS X 10.8.5, fully patched. I have IPv6 disabled under Network Settings:

enter image description here

I also have unneeded network interfaces disabled:

enter image description here

While troubleshooting an OpenSSH server issue, I performed a netstat -an and noticed there were IPv6 listeners:

$ netstat -an | grep -i listen
tcp6       0      0  *.1522                 *.*                    LISTEN     
tcp4       0      0  *.1522                 *.*                    LISTEN     
tcp6       0      0  ::1.52698              *.*                    LISTEN     
tcp6       0      0  ::1.23053              *.*                    LISTEN     
tcp4       0      0  127.0.0.1.23053        *.*                    LISTEN     
tcp4       0      0  127.0.0.1.631          *.*                    LISTEN     
tcp6       0      0  ::1.631                *.*                    LISTEN   

How is it possible to have IPv6 listeners when IPv6 is disabled?

Best Answer

Because not setting up your network card to use ipv6 does not prevent applications of opening such sockets.

The sockets displayed as *.<port> are not bound to specific ip addresses/interfaces of your machine. They will simply listen to any incoming connection on any interface. Of course, no ipv6 connections will come in through your ethernet card if ipv6 is not set up.

Besides that, I'm pretty sure that another interface on your machine is set up to use ipv6: your loopback interface. Hit up a terminal and type ifconfig lo0 and you'll see it having an ipv6 address assigned to it. You can also use ping6 ::1 :). In fact, the ipv6 sockets listed as ::1.<port> are bound to this interface and will only receive connections from your local machine.