У меня проблемы с системой, которая работала вчера. Я не сильно изменился - если что-нибудь с тех пор. Однако теперь, когда я пытаюсь запустить что-то, использующее 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)
тот же самый вызов tcpserver работает, если я использую 0.0.0.0 или IP-адрес, присвоенный eth0, но не при указании 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 / network / interfaces:
# 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 выше с рабочей системой, и похоже, что причиной этой ошибки может быть то, что loopback-адаптер, похоже, не имеет 127.0.0.1. Итак, вопрос становится - Как это возможно? и как это исправить?
По слухам, это известная проблема с AMI AWS от ubuntu 14.04 (~ май 2017 года). Исправление должно быть перезапущено, пока вам не повезет, или вручную назначьте IP-адрес через что-то вроде: ifup lo; ip addr add 127.0.0.1/8 dev lo, когда это произойдет.
По слухам, это известная проблема с AMI AWS от ubuntu 14.04 (~ май 2017 года). Исправление должно быть перезапущено, пока вам не повезет, или вручную назначьте IP-адрес через что-то вроде: ifup lo; ip addr add 127.0.0.1/8 dev lo, когда это произойдет.