Wir nutzen Cookies, um Ihnen eine optimale Nutzung dieser Webseite zu ermöglichen. Mehr Informationen finden Sie im Datenschutzhinweis. Wir nehmen an, dass Sie damit einverstanden sind, falls Sie diese Webseite weiter besuchen.

Ihre Cookie-Einstellungen
Ihre Einstellungen wurden aktualisiert.
Damit die Änderungen wirksam werden, löschen Sie bitte Ihre Browser-Cookies und den Cache und laden dann die Seite neu.

IP-Adresse des Remote-Hosts bei xinetd

29. April 2006

Ihr Anliegen

Sie verwenden xinetd, um einen oder mehrere Dienste im Internet anzubieten. Als server verwenden Sie ein eigenes Programm, z.B. ein Shellskript. Damit wollen Sie z.B. Portknocking realisieren und wollen deshalb die IP-Adresse des Hosts feststellen, der sich zu Ihnen verbunden hat.

Die Lösung

xinetd teilt dem aufgerufenen Programm über das Environment die IP-Adresse des Remote-Hosts mit. Die Variable heißt REMOTE_HOST.

Ein Beispiel

Nehmen wir an, sie hängen an UDP Port 8888 ein Shellskript /root/test.sh. Ihre Konfiguration für xinetd sieht dann etwa so aus:


/etc/xinetd.d/test:
service test
{
        disable         = no
        type            = UNLISTED
        socket_type     = dgram
        protocol        = udp
        user            = root
        wait            = yes
        port            = 8888
        server          = /bin/bash
        server_args     = /root/test.sh
}                                                                               

Das Testskript kann wie folgt auf die Adresse zugreifen:


/root/test.sh:
#!/bin/bash
logger "xinetd: Verbindung auf Port 8888 von IP-Adresse $REMOTE_HOST"

Auch von einem C-Programm aus können Sie auf die Variable REMOTE_HOST zugreifen. Dafür gibt es die Funktion getenv():


xinettest.c:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    const char *ip = getenv("REMOTE_HOST");
    printf("Adresse des Remote-Hosts: %s\n", ip ? ip : "(unbekannt)");    
}

Wissensbank Linux

Diese Artikel wurden vom Gründer von Checkmk vor vielen Jahren geschrieben.
Sie sind immer noch gültig und haben deshalb weiterhin ihr Zuhause auf dieser Webseite.
Mathias hat in der Zwischenzeit die Monitoringlösung Checkmk entwickelt

Mehr zu Checkmk