Mac OS X Mountain Lion can't ping/telnet localhost. Point to a wrong public IP

I've been developing Node.js apps on my localhost on port 1337 for last two years with no problem as shown below.

$ node app
App started on port 1337

Today I wanted to test how things go with default port 80, so I did:

$ sudo node app
App started on port 80

But after that my network went crazy. Now I can't access any local address including localhost. When I ping to localhost it points to some weird public IP address (218.38.137.125) instead of 127.0.0.1.

$ ping localhost
PING localhost.local (218.38.137.125): 56 data bytes
...

218.38.137.125 is not my public IP address.

When I telnet I see the same wrong IP address:

$ telnet localhost
Trying 218.38.137.125...
telnet: connect to address 218.38.137.125: Connection refused
telnet: Unable to connect to remote host

My /etc/hosts is the following:

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost

Can anybody suggest what's wrong?

I'm completely out of guesses and can't even continue my work.


Solution 1:

I found the problem. It happens to be the incorrect line endings in /etc/hosts file.

I edited it using Sublime Text 2, which happens to be a wrong choice as it added CR line terminators.

$ file -b /etc/hosts
ASCII English text, with CR line terminators

As mentioned in https://discussions.apple.com/message/20103434#20103434, it must be only ASCII English text.

So, copying the /etc/hosts contents and overriding this file using "vi", resolved the problem. Now:

$ file -b /etc/hosts
ASCII English text

I hope this will help others as well.