Connection refused problem

Hi,

ich habe zwei ubuntu server. Auf dem einen laeuft eine Java Anwendung mit einer REST Schnittstelle (erreichbar über :9012/rest/).

Nun will ich vom anderen Server (server2) ein GET an die Schnittstelle senden :9012/rest/data/all.

Ich bekomme aber die Fehlermeldung

curl: (7) Failed to connect to 10.3.0.103 port 9012: Connection refused

Mein erster Verdacht war, dass auf server1 eine Firewall laeuft, die den Port 9012 blockt. Wenn ich aber dort

sudo ufw status verbose

tippe, kommt einfach

Status: inactive

, somit scheint keine Firewall zu laufen, die den Port blockt.

ebenso habe ich

sudo netstat -tnlp | grep 9012

auf server2 probiert, was

tcp6       0      0 127.0.0.1:9012          :::*                    LISTEN      1510/java

ergab.

Was ist das Problem ?

Andere Verbindungen gehen? Sprich SSH o.ä.? Listen aber nur auf tcp6?


ping 10.3.0.103
PING 10.3.0.103 (10.3.0.103) 56(84) bytes of data.
64 bytes from 10.3.0.103: icmp_seq=1 ttl=64 time=0.213 ms
64 bytes from 10.3.0.103: icmp_seq=2 ttl=64 time=0.150 ms
64 bytes from 10.3.0.103: icmp_seq=3 ttl=64 time=0.118 ms


ssh 10.3.0.103
The authenticity of host '10.3.0.103 (10.3.0.103)' can't be established.
ECDSA key fingerprint is cc:b9:ef:bc:64:f1:e1:24:8e:38:89:99:c6:27:07:f9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.3.0.103' (ECDSA) to the list of known hosts.
user@10.3.0.103's password: 
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-79-generic x86_64)

Lauscht der Server denn auch auf tcp(4) ? Oben ist nur tcp6

keine Ahnung - wie finde ich das raus ? habe den Befehl oben auch nur woher kopiert. bzw sollte er auf tcp(4) lauschen ?

edit:

soweit ich das sehen/verstehen kann, nur auf tcp(6)


Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1029/sshd       
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1483/java       
tcp6       0      0 :::8009                 :::*                    LISTEN      1483/java       
tcp6       0      0 127.0.0.1:9012          :::*                    LISTEN      1423/java       
tcp6       0      0 :::8181                 :::*                    LISTEN      1483/java       
tcp6       0      0 :::22                   :::*                    LISTEN      1029/sshd

Ich nehme an, das netstat Kommando hast du auf Server1 laufen lassen und nicht wie oben auf 2?

Ja, er sollte auf tcp4 lauschen. Normal steht dann da eben nur tcp. Könnte aber sein, dass das bei den Java-Servern dann für beide lauscht.

Testweise mal ein “nc -nlvp 9012” auf dem server1 starten (vorher den Java-Server beenden) und dann ein nc IP 9012 von dir aus starten. Dann siehst du ob beim server1 was ankommt

ich habe mal auf server1

nc -nlvp 9011

gestartet, um das momentane System nicht runterfahren zu müssen.
Auf server2 habe ich dann

curl http://10.3.0.103:9011

probiert und dann auf server1 gesehen

Connection from [10.3.0.101] port 9011 [tcp/*] accepted (family 2, sport 55379)
GET / HTTP/1.1
User-Agent: curl/7.35.0
Host: 10.3.0.103:9011
Accept: */*

ein curl auf 9012 kommt sofort die Fehlermeldung und auf server1 ist nix zu sehen.

Der Java Prozess der auf server1:9012 laeuft ist ein org.glassfish.grizzly.http.server.HttpServer, den gestartet wird.

Rufst du denn mit einer BASe URI auf?

geschafft… doofer Fehler - wie üblich.

Ich habe den server auf server1 mit http://localhost:9012 gestartet, somit schlug auch ein

curl http://server1:9012

auf server1 fehl.

Habe die Adresse fuer den server auf die IP gesetzt und dann funktioniert der curl von server1 und server2 auch …

danke @timbeau fuer die Zeit

Ja, das wäre jetzt meine Vermutung gewesen :wink: