Mac OS X Mountain Lion 无法 ping/telnet 本地主机。指向错误的公共IP

ese*_*eer 2 networking telnet ping localhost osx-mountain-lion

过去两年我一直在端口 1337 上的本地主机上开发 Node.js 应用程序,没有出现任何问题,如下所示。

$ node app
App started on port 1337
Run Code Online (Sandbox Code Playgroud)

今天我想测试默认端口 80 的情况如何,所以我这样做了:

$ sudo node app
App started on port 80
Run Code Online (Sandbox Code Playgroud)

但在那之后我的网络变得疯狂。现在我无法访问任何本地地址,包括本地主机。当我 ping 到 localhost 时,它指向一些奇怪的公共 IP 地址 (218.38.137.125),而不是 127.0.0.1。

$ ping localhost
PING localhost.local (218.38.137.125): 56 data bytes
...
Run Code Online (Sandbox Code Playgroud)

218.38.137.125不是我的公共IP地址。

当我 telnet 时,我看到同样错误的 IP 地址:

$ telnet localhost
Trying 218.38.137.125...
telnet: connect to address 218.38.137.125: Connection refused
telnet: Unable to connect to remote host
Run Code Online (Sandbox Code Playgroud)

我的/etc/hosts如下:

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0 localhost
Run Code Online (Sandbox Code Playgroud)

有人能建议出什么问题吗?

我完全无法猜测,甚至无法继续我的工作。

ese*_*eer 5

我发现了问题。它恰好是/etc/hosts文件中不正确的行结尾。

我使用 Sublime Text 2 编辑它,这恰好是一个错误的选择,因为它添加了CR 行终止符

$ file -b /etc/hosts
ASCII English text, with CR line terminators
Run Code Online (Sandbox Code Playgroud)

正如https://discussions.apple.com/message/20103434#20103434中提到的,它必须只是ASCII 英文文本

因此,复制/etc/hosts内容并使用“vi”覆盖该文件,解决了问题。现在:

$ file -b /etc/hosts
ASCII English text
Run Code Online (Sandbox Code Playgroud)

我希望这也能帮助其他人。

  • 你救了我的命 ! (2认同)