
Ist es irgendwie möglich, Xinetd (oder eine andere Lösung) zu verwenden, um auf eingehende Pakete für eine IP-Adresse zu lauschen, die keiner Schnittstelle zugewiesen ist, und einen Daemon zu starten (wie es Xinetd tut)?
Meine Linux-Maschine ist also der Standard-GW, an den alle Pakete gesendet werden. Ich möchte bestimmte Pakete mit einer Ziel-IP erkennen, die nicht an eine Schnittstelle gebunden ist, und darauf reagieren (einen Daemon starten).
Danke!
Antwort1
Ja, aktivieren Sie eine net.ipv4.ip_nonlocal_bind
Einstellung:
echo "net.ipv4.ip_nonlocal_bind = 1" > /etc/sysctl.d/enable-nolocal-bind.conf"
sysctl net.ipv4.ip_nonlocal_bind=1
(Letzteres bedeutet „Jetzt aktivieren“, die erste Zeile dient dazu, es dauerhaft zu machen.) Jetzt können Sie Daemons an jede beliebige IP-Adresse binden.
Dies funktioniert jedoch möglicherweise nicht wie erwartet. Im selben LAN verwenden Computer nicht das Standard-GW zur Kommunikation. Sie senden Pakete direkt, z. B. indem sie ARP-Abfragen durchführen, um die MAC-Adresse des Systems herauszufinden, an das ein Paket gesendet werden soll. Wenn keine Antwort erfolgt, wird nicht auf das Senden eines Pakets an ein Standard-GW zurückgegriffen. Stattdessen schlägt es mit dem Fehler fehl.
Antwort2
Unter Linux sind Routen vom Typ „local“ Loopbacks und werden an den lokalen Host übermittelt. Auch bekannt alsJeder.
Routen Sie ein Präfix mit der gewünschten Länge. Wenn Sie IPv6 verwenden, reservieren Sie vielleicht ein ganzes /64 für diesen Zweck, sagen wir 2001:db8:bdd2:c0e::/64
. Routen Sie das an diesen Host (die Linux-Box) und senden Sie es in der Linux-Box an lokal.
Konfigurieren Sie xinetd so, dass es auf dem gewünschten Port lauscht.
Endergebnis: Jede IP in diesem Netz 2001:db8:bdd2:c0e::138
wird beispielsweise auf dieser Box beendet und das Serverprogramm gestartet.