无法绑定到 127.0.0.1?

无法绑定到 127.0.0.1?

我昨天还在运行的系统现在遇到了问题。从那时起,我并没有做太多改变。但是,现在每当我尝试启动使用 127.0.0.1 作为 IP 地址的程序时,都会出现错误。例如:

user@server:~# tcpserver 127.0.0.1 8080 echo
tcpserver: fatal: unable to bind: address not available

并且一个 Java 应用程序(我真正尝试启动的应用程序)引发此错误:

java.net.BindException: Cannot assign requested address (Bind failed)
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at 
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
    at java.net.ServerSocket.bind(ServerSocket.java:375)
    at java.net.ServerSocket.<init>(ServerSocket.java:237)

如果我使用 0.0.0.0 或分配给 eth0 的 ip 地址,则相同的 tcpserver 调用会起作用,但指定 127.0.0.1 时则不起作用。

我已经仔细查看了所有日志,但并没有发现任何值得注意ifconfig -a的地方。输出如下,以防万一。我尝试过ifdown lo; ifup lo,甚至ifup lo --force- 但这些似乎都没有任何区别。我也重启了服务器几次,但没有成功。我还尝试过,rm -rf /var/run/network/*然后又重启了一次(每https://serverfault.com/a/672217/262491),但也没有运气。netstat -ano显示在端口 8080 上没有任何监听,在 127.0.0.1 上也没有任何监听。

user@server:~# ifconfig -a
eth0  Link encap:Ethernet  HWaddr <redacted>
      inet addr:10.252.2.169  Bcast:10.252.2.255  Mask:255.255.255.0
      inet6 addr: <redacted>/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
      RX packets:18970 errors:0 dropped:0 overruns:0 frame:0
      TX packets:17158 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:4514198 (4.5 MB)  TX bytes:4194402 (4.1 MB)

lo    Link encap:Local Loopback
      LOOPBACK  MTU:65536  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

在 /etc/网络/接口:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Source interfaces
# Please check /etc/network/interfaces.d before changing this file
# as interfaces may have been defined in /etc/network/interfaces.d
# NOTE: the primary ethernet device is defined in
# /etc/network/interfaces.d/eth0
# See LP: #1262951
source /etc/network/interfaces.d/*.cfg

我将上面的 ifconfig 与正常运行的系统进行了比较,看起来此错误的根本原因可能是环回适配器似乎没有分配 127.0.0.1。所以问题是 - 这怎么可能?我该如何修复它?

答案1

据传这是 ubuntu 14.04 (~May 2017) 的 AWS AMI 的一个已知问题。修复方法是重新启动直到你幸运或通过类似以下方式手动分配 IP 地址:ifup lo; ip addr add 127.0.0.1/8 dev lo当它发生时。

相关内容