Debian: network-service eintragen

Liebe/-r Experte/-in,

ich habe gerade in C ein Server-Client-Programm geschrieben, das über Socks von Linux nach Linux über das internet kommuniziert.

auf localhost funktioniert das soweit auch, nur wenn ich das Serverprogramm auf einem entfernten Rechner starte, erhalte ich per nmap dass der Port „closed“ ist. Der Port ist definitiv freigeschaltet (funktioniert auch z.B. mit mySQL).
Wenn ich versuche mit dem client zu connecten erhalte ich logischerweise „Connection refused“.

Ich habe per Google gefunden dass man anscheinend auf dem Server eine solche anwendung die über socks kommunizieren möchte zuerst in /etc/xinet.d und /etc/services eintragen muss.

Weder auf meinem Server (Debian Lenny) noch auf dem client (Ubuntu 9.10) kann ich aber den Ordner /etc/xinet.d finden…

Wo muss ich den Service eintragen, damit sich der Port öffnet???

Danke im Voraus für die Antworten…

Gruß

Frederic

Auf dem Server muss überhaupt erstmal xinetd installiert sein:

apt-get install xinetd

Hallo Frederic,

ich habe gerade in C ein Server-Client-Programm geschrieben,
das über Socks von Linux nach Linux über das internet
kommuniziert.

Meinst Du mit Socks das „Proxy-Protokol“ Socks? (Ist eine reine Verständnisfrage, könnte ja auch ein Tippfehler sein und Sockets gemeint sein)

auf localhost funktioniert das soweit auch, nur wenn ich das
Serverprogramm auf einem entfernten Rechner starte, erhalte
ich per nmap dass der Port „closed“ ist. Der Port ist
definitiv freigeschaltet (funktioniert auch z.B. mit mySQL).
Wenn ich versuche mit dem client zu connecten erhalte ich
logischerweise „Connection refused“.

Ich habe per Google gefunden dass man anscheinend auf dem
Server eine solche anwendung die über socks kommunizieren
möchte zuerst in /etc/xinet.d und /etc/services eintragen
muss.

Um einen solchen Dienst zu installieren und zu Betreiben brauchst Du auf dem Server das Paket openbsd-inetd (xinetd ist eine erweiterte Variante, unter Debian ist das zuerst genannte Standard). Damit wird ein Dienst on-demand gestartet und entsprechend auch die Schnittstellen geschaltet.

Der Eintrag in der /etc/services dient nur dazu, den Port mit einem eindeutigen Namen zu versehen.

Beispiel:
Für MySQL würde drin stehen 3306/tcp mysql

Weder auf meinem Server (Debian Lenny) noch auf dem client
(Ubuntu 9.10) kann ich aber den Ordner /etc/xinet.d finden…

Ist normal, da es nicht zum Standard-Installationsumfang gehört. Muss auch nur auf dem Server installiert werden, da der Client ja aktiv eine Verbindung aufbaut und der Server bei einer solchen Anfrage dann entsprechend mit inetd den Dienst startet und die Ports öffnet. Alternativ müsstest Du wohl in Deinem Programm die entsprechenden Routinen einbauen, damit diese direkt auf den Netzwerk-Stack von Linux zugreifen (so würde ich das, als Nicht-Programmierer, erklären).

Wo muss ich den Service eintragen, damit sich der Port
öffnet???

Nach der Installation von openbsd-inetd gibt es in /etc eine Datei namens inetd.conf, dort siehst Du auch Beispieleinträge. Dementsprechend musst Du Deinen Dienst da rein schreiben und mit /etc/init.d/openbsd-inetd restart neu starten, damit er aktiv wird.

Wenn’s weiterhin Probleme gibt, einfach nochmal Bescheid geben. Evtl. kannst Du mir ja mal das Programm fertig kompiliert (?) schicken, dann sehe ich mir mal an, was es braucht/möchte/macht.

Gruß und viel Erfolg beim testen
Peter

Hallo Fredde,

haben Sie denn irgend einen inetd Server installiert? Unter Debian wäre das typischerweise openbsd-inetd. Ein /etc/xinet.d muss nicht notwendigerweise da sein. Dieser Ordner bzw. die entsprechende Datei heißt je nach inetd Server immer ein bisschen anders, bei openbsd-inetd zum Beispiel inetd.conf.

Beste Grüße,
alphascorpii

auf localhost funktioniert das soweit auch, nur wenn ich das
Serverprogramm auf einem entfernten Rechner starte, erhalte
ich per nmap dass der Port „closed“ ist. Der Port ist
definitiv freigeschaltet (funktioniert auch z.B. mit mySQL).
Wenn ich versuche mit dem client zu connecten erhalte ich
logischerweise „Connection refused“.

servus frederic,
ich bin jetzt kein experte, was c & sockets angeht,
aber, du schreibst, es geht auf localhost und nicht remote?
kannst du testen, ob’s im lokalen subnetz geht?
also nicht localhost (127.0.0.1) sondern .localdomain (192.168… o.ä.?).

Weder auf meinem Server (Debian Lenny) noch auf dem client
(Ubuntu 9.10) kann ich aber den Ordner /etc/xinet.d finden…

mein debian hat auch kein /etc/xinet.d,
und die /etc/inet.d ist quasi leer (nur kommentare)
und kommuniziert lokal und raus auf weißderhimmelwasfürports!

gruß
people

Auf Debian sind Grundsätzlich alle Ports offen wo ein Programm „lauscht“
Wenn dein Programm also läuft und am Port xxx lauscht sollte das natürlich Funktionieren.
Das mit den Services wäre nur dann wirklich einzutragen wenn du willst das dieses Programm beim reboot automatisch mitstartet.
Den ordner für die Dienste zum Eintragen findest du bei Debian in /etc/default und /etc/init.d

Hallo Fredde

/etc/xinet.d und /etc/services

Ich schliesse aus deiner Frage, dass du deinen Dienst bereits in /etc/services eingetragen hast.

Wenn du keinen xinetd hast, ist evtl. noch inetd installiert. Du solltest eine Datei /etc/inetd.conf auf deinem System vorfinden, in die kannst du deinen Dienst (gemäss man inetd.conf) eintragen.

Gruss
Sam

Hi,

danke für deine Antwort.
Eine inet.d existiert zwar auch nicht, ich habe aber den Fehler bereits an einer anderen Stelle gefunden. Ich habe auf dem Router ein Portmapping verwendet und einfach beim testen auf dem Server (im internen Netz) den externen Port angegeben -_-

Mit dem internen port läuft es jetzt wunderbar.
Anscheinend zeigt nmap einen port als „closed“ an, wenn keine anwendung darauf hört.

Hi,

danke für deine Antwort.
Ich habe aber den Fehler jetzt gefunden: Ich habe auf dem Router ein Portmapping verwendet und einfach beim testen auf dem Server (im internen Netz) den externen Port angegeben -_-

Mit dem internen port läuft es jetzt wunderbar.
Anscheinend zeigt nmap einen port als „closed“ an, wenn keine anwendung darauf hört.

Hi,

danke für deine Antwort.
Ich habe aber den Fehler jetzt gefunden. Ich habe auf dem Router ein Portmapping verwendet und einfach beim testen auf dem Server (im internen Netz) den externen Port angegeben -_-

Mit dem internen port läuft es jetzt wunderbar.
Anscheinend zeigt nmap einen port als „closed“ an, wenn keine anwendung darauf hört.

Hi,

danke für deine Antwort.
Die inet.d abe ich gefunden, sie heißt bei mir inetd.conf. Ich habe aber den Fehler bereits an einer anderen Stelle gefunden. Ich habe auf dem Router ein Portmapping verwendet und einfach beim testen auf dem Server (im internen Netz) den externen Port angegeben -_-

Mit dem internen port läuft es jetzt wunderbar.
Anscheinend zeigt nmap einen port als „closed“ an, wenn keine anwendung darauf hört.

Hi,

danke für deine Antwort.
Ich habe aber den Fehler gefunden. Ich habe auf dem Router ein Portmapping verwendet und einfach beim testen auf dem Server (im internen Netz) den externen Port angegeben -_-

Mit dem internen port läuft es jetzt wunderbar.
Anscheinend zeigt nmap einen port als „closed“ an, wenn keine anwendung darauf hört.

Nicht nur Nmap :wink: Debian hat da verschiedene Configs wo man dran drehen kann. Es werden dir alle Ports als geschlossen angezeigt wo kein Programm drauf lauscht. Ist doch ne feine Standarteinstellung :smile:

MfG
Andre

Hi

Eine inet.d existiert zwar auch nicht, ich habe aber den
Fehler bereits an einer anderen Stelle gefunden.

Ich meinte auch nicht das Verzeichnis inet.d, sondern eine Datei inetd.conf. Die gibt’s tatsächlich auch nicht?

Anscheinend zeigt nmap einen port als „closed“ an, wenn keine
anwendung darauf hört.

Naja, dann _ist_ er auch „closed“, wenn nix da lauscht.

Den inetd brauchst du eigentlich nur, wenn du einen Dienst hast, der nicht permanent läuft, sondern gestartet werden soll, wenn eine entsprechende Anfrage eingeht.

Aber schön, dass es jetzt läuft.

Gruss
Sam

Hi Frederic,

danke für deine Antwort.
Ich habe aber den Fehler gefunden. Ich habe auf dem Router ein
Portmapping verwendet und einfach beim testen auf dem Server
(im internen Netz) den externen Port angegeben -_-

OK, daran habe ich jetzt im ersten Schritt auch noch nicht gedacht.

Mit dem internen port läuft es jetzt wunderbar.
Anscheinend zeigt nmap einen port als „closed“ an, wenn keine
anwendung darauf hört.

Nicht nur nmap. Wenn der Port ungenutzt ist, muss man ja einem Angreifer keine Tür offen lassen, darum machen viele Firewalls dicht, wenn kein Traffic drüber läuft.

Aber schön, dass es jetzt geht :smile:

Gruß Peter