FreeBSD: Wie behebt man „Ping: sendto: Kein Pufferspeicher verfügbar“?

FreeBSD: Wie behebt man „Ping: sendto: Kein Pufferspeicher verfügbar“?

Ich versuche, einen Remote-Host anzupingen, erhalte aber eine Fehlermeldung.

# ping 192.168.80.1
PING 192.168.80.1 (192.168.80.1): 56 data bytes
ping: sendto: No buffer space available
ping: sendto: No buffer space available
^C
--- 192.168.80.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

Bei anderen Hosts funktioniert es:

# ping 192.168.16.1
PING 192.168.16.1 (192.168.16.1): 56 data bytes
64 bytes from 192.168.16.1: icmp_seq=0 ttl=254 time=0.442 ms
64 bytes from 192.168.16.1: icmp_seq=1 ttl=254 time=0.402 ms
^C
--- 192.168.16.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.402/0.422/0.442/0.020 ms
#

Die Meldung „Kein Pufferspeicher verfügbar“ scheint auf eine Art Speicherfehler hinzuweisen. Und tatsächlich sieht die Zahl der „mbuf-Cluster“ SEHR falsch aus, wenn ich sie mit Netstat überprüfe:

# netstat -m
11780 mbufs in use
4294966716/32768 mbuf clusters in use (current/max)
0/3/6656 sfbufs in use (current/peak/max)
1785 KBytes allocated to network
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

Was ist hier los? Gibt es eine Möglichkeit, dies ohne Ausfallzeit zu beheben, oder muss ich den Host oder die Netzwerkschnittstelle neu starten?

Antwort1

Da das Problem anscheinend nur auf eine Schnittstelle beschränkt ist – ich gehe davon aus, dass Sie für diese beiden Netzwerke ganz normale Masken der Klasse C verwenden –, würde ich es schnell zurückschicken:

# ifconfig en0 down
# ifconfig en0 up

Natürlich müssen Sie hier den richtigen Schnittstellennamen ersetzen en0.

Möglicherweise müssen Sie alle Server neu starten, die auf dieser Schnittstelle lauschen, und alle bestehenden TCP-Verbindungen, die diese Schnittstelle verwenden, werden in diesem Fall unterbrochen. Der Test ist jedoch nur von kurzer Dauer, daher betrachte ich ihn nicht wirklich als „Ausfallzeit“.

Achten Sie darauf, dies nicht zu tun, während Sie per SSH mit der Box auf der Schnittstelle verbunden sind, die Sie übertragen. Wenn möglich, melden Sie sich dabei am besten über die Konsole an. Wenn der Server remote ist, ist eine Modemverbindung am besten, da das Übertragen der Netzwerkschnittstellen keine Auswirkungen auf serielle Gettys hat. Wenn Sie dies tun müssen, während Sie über das Netzwerk angemeldet sind, stellen Sie sicher, dass Ihre Verbindung über eine andere Schnittstelle erfolgt.

verwandte Informationen