Netcat kann keinen Listening-Socket binden

8

Auf meinem Computer mit Ubuntu 14.04 kann ich Folgendes tun:

$ nc -l 5349 -vvv
Listening on [0.0.0.0] (family 0, port 5349)

oder dieses:

$ nc -vvv -l 192.168.254.96 5349
Listening on [192.168.254.96] (family 0, port 5349)

Und ein Socket wird geöffnet, um die Eingabe von Verbindungen unter meiner lokalen IP-Adresse (192.168.254.96) abzuhören. Und natürlich kann ich mich von der anderen Seite verbinden und Daten übertragen.

Aber auf einem Server hinter einem NAT mit Debian 8.0 Jessie habe ich diesen seltsamen Fehler bekommen:

$ nc -vvv -l 5349
5349: inverse host lookup failed: Unknown host
nnetfd reuseport failed : Protocol not available
listening on [any] 38541 ... : Protocol not available

oder:

$ nc -vvv -l 10.1.6.189 5349
10.1.6.189: inverse host lookup failed: Unknown host
nnetfd reuseport failed : Protocol not available
listening on [any] 52606 ... : Protocol not available

Der Port wird nicht verwendet:

$ ss -tnl | grep 5349
(empty)

und es ist die richtige IP-Adresse:

$ ip addr list
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 1e:89:93:f1:96:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.6.189/19 brd 10.1.31.255 scope global eth0
    inet6 fe80::1c89:93ff:fef1:96a4/64 scope link 
       valid_lft forever preferred_lft forever

Was könnte das Problem sein? Könnte etwas mit dem NAT hinter dem Server zu tun haben?

Ausloggen
quelle

Antworten:

7

Für Netcat im Listen-Modus sollten Sie das -pFlag verwenden, um den Listening-Port auszuwählen, z nc -vvv -l -p 5349.

Der zweite Fehler nnetfd reuseport failed : Protocol not available bezieht sich auf die Socket-Option SO_REUSEPORT. Es wurde in der Linux-Kernel-Version 3.9 eingeführt und die Netcat-Version, die es verwendet, funktioniert nicht mit früheren Kernel-Versionen. Sie können entweder Ihren Kernel auf eine neuere Version aktualisieren oder eine andere Variante von Netcat verwenden. Ich glaube, netcat-openbsd sollte funktionieren.

DukeLion
quelle
Mit meinem Computer hat alles perfekt funktioniert, das ist nicht das Problem.
Abmelden
sowieso das gleiche Ergebnis:$ nc -vvv -l -p 5349 \ nnetfd reuseport failed : Protocol not available \ listening on [any] 5349 ... : Protocol not available
Abmelden
Es behebt einen der Fehler: "Inverse Host-Suche fehlgeschlagen: Unbekannter Host".
Da das
Mein Kernel ist 3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u3in Debian 8.2 Jessie. netcat-openbsdhat funktioniert. Vielen Dank!
Abmelden