Hi,
ich habe mich gestern Abend und heute Vormittag mit dem Problem auseinandergesetzt, dass Netmon keine IP-Adressen hinzufügt und habe bis auf weitere Tests von euch auch einen Fix dafür gefunden.
Das Problem liegt in der isInNetwork()-Methode der Ip.class.php. Netmon kennt unsere verwendeten Netzwerke (fe80::/64 für ipv6 link locals und 10.18.0.0/16 für ipv4). Wenn eine neue IP-Adresse hinzugefügt werden soll, prüft Netmon ob diese überhaupt zu einem der konfigurierten Netze gehört, damit wir keinen Datenmüll und private Adressen sammeln.
Dazu wird die Adresse des Netzwerks sowie die hinzuzufügende Adresse inklusive der Netzmasken in einen Binärstring konvertiert und dann der zur Netzmaske gehörende Teil verglichen. Sind beide gleich, kann die Adresse hinzugefügt werden.
Bei diesem Verfahren wird die PHP Methode inet_pton() verwendet, die eine Menschenlesbare Adresse in eine Maschinenlesbare Adresse umwandelt. Zwischen den PHP Versionen 5.4 und 5.6 hat sich jedoch anscheinend das Ergebnis dieser Methode geändert was zu einem Fehler führt (als Füllzeichen werden jetzt Nullen statt Leerzeichen genommen). Beim ausführen von unpack() auf einer IP- Adresse muss also "a16" (php 5.6) statt "A16" (php 5.4) als Formatstring genutzt werden.
Das ganze hat auf srv01 immer problemlos funktioniert, weil wir dort noch PHP 5.4 fahren. Auf srv06 läuft allerdings bereits PHP 5.6. An der kritischen Stelle wird jetzt einfach eine Versionsunterscheidung gemacht.
Sobald der Server für das Gitlab wieder tut gibts auch einen commit im Gitlab.
LG Clemens
Hi Clemens,
danke für den Bugfix! Ich schaue grade mal wegen dem Client-Count, da scheint irgendwas mit der Übergabe zwischen data datei und Netmon nicht zu klappen.
Vg,
Stefan
Am 10.07.2015 um 14:27 schrieb Clemens John:
Hi,
ich habe mich gestern Abend und heute Vormittag mit dem Problem auseinandergesetzt, dass Netmon keine IP-Adressen hinzufügt und habe bis auf weitere Tests von euch auch einen Fix dafür gefunden.
Das Problem liegt in der isInNetwork()-Methode der Ip.class.php. Netmon kennt unsere verwendeten Netzwerke (fe80::/64 für ipv6 link locals und 10.18.0.0/16 für ipv4). Wenn eine neue IP-Adresse hinzugefügt werden soll, prüft Netmon ob diese überhaupt zu einem der konfigurierten Netze gehört, damit wir keinen Datenmüll und private Adressen sammeln.
Dazu wird die Adresse des Netzwerks sowie die hinzuzufügende Adresse inklusive der Netzmasken in einen Binärstring konvertiert und dann der zur Netzmaske gehörende Teil verglichen. Sind beide gleich, kann die Adresse hinzugefügt werden.
Bei diesem Verfahren wird die PHP Methode inet_pton() verwendet, die eine Menschenlesbare Adresse in eine Maschinenlesbare Adresse umwandelt. Zwischen den PHP Versionen 5.4 und 5.6 hat sich jedoch anscheinend das Ergebnis dieser Methode geändert was zu einem Fehler führt (als Füllzeichen werden jetzt Nullen statt Leerzeichen genommen). Beim ausführen von unpack() auf einer IP- Adresse muss also "a16" (php 5.6) statt "A16" (php 5.4) als Formatstring genutzt werden.
Das ganze hat auf srv01 immer problemlos funktioniert, weil wir dort noch PHP 5.4 fahren. Auf srv06 läuft allerdings bereits PHP 5.6. An der kritischen Stelle wird jetzt einfach eine Versionsunterscheidung gemacht.
Sobald der Server für das Gitlab wieder tut gibts auch einen commit im Gitlab.
LG Clemens
Admin mailing list Admin@lists.ffnw.de https://lists.ffnw.de/mailman/listinfo/admin
Am 10.07.2015 um 14:27 schrieb Clemens John:
Hi,
ich habe mich gestern Abend und heute Vormittag mit dem Problem auseinandergesetzt, dass Netmon keine IP-Adressen hinzufügt und habe bis auf weitere Tests von euch auch einen Fix dafür gefunden.
Das Problem liegt in der isInNetwork()-Methode der Ip.class.php. Netmon kennt unsere verwendeten Netzwerke (fe80::/64 für ipv6 link locals und 10.18.0.0/16 für ipv4). Wenn eine neue IP-Adresse hinzugefügt werden soll, prüft Netmon ob diese überhaupt zu einem der konfigurierten Netze gehört, damit wir keinen Datenmüll und private Adressen sammeln.
Dazu wird die Adresse des Netzwerks sowie die hinzuzufügende Adresse inklusive der Netzmasken in einen Binärstring konvertiert und dann der zur Netzmaske gehörende Teil verglichen. Sind beide gleich, kann die Adresse hinzugefügt werden.
Bei diesem Verfahren wird die PHP Methode inet_pton() verwendet, die eine Menschenlesbare Adresse in eine Maschinenlesbare Adresse umwandelt. Zwischen den PHP Versionen 5.4 und 5.6 hat sich jedoch anscheinend das Ergebnis dieser Methode geändert was zu einem Fehler führt (als Füllzeichen werden jetzt Nullen statt Leerzeichen genommen). Beim ausführen von unpack() auf einer IP- Adresse muss also "a16" (php 5.6) statt "A16" (php 5.4) als Formatstring genutzt werden.
Das ganze hat auf srv01 immer problemlos funktioniert, weil wir dort noch PHP 5.4 fahren. Auf srv06 läuft allerdings bereits PHP 5.6. An der kritischen Stelle wird jetzt einfach eine Versionsunterscheidung gemacht.
Sobald der Server für das Gitlab wieder tut gibts auch einen commit im Gitlab.
das ist eher was für dev ... ;-)
Ich hab auch schon ein haufen commits bei mir auf dem Rechner geparkt und werde die sobald der Server wieder läuft puschen allerdings für die Firmware ;-)
LG Tarek