Kategori FH-Aachen

Neuelich im Aufzug

Mittwoch, April 1st, 2009

Beim einladen der Videoanlage in den Aufzug ist ein Kabel halb vor der Tür liegen geblieben. Nach dem wir im ersten Stock angekommen sind habe ich mich vor die Lichtschranke gesetzt, da der Aufzug für den zweiten Stocke Programmiert war.

imag0024

Einer der Hausmeister hat dann das Kabel im ersten Stock befreit, in dem er die Tür geöffnet hat, damit ich das Kabel raus ziehen konnte.

Hidden Bridge mit MySQL Unterstützung

Freitag, März 6th, 2009

Als nächstes will ich Dokumentiren wie wir die Bridge mit MySQL Unterstützung aufgesetzt haben.

Dafür wird die Datenbank benötigt die ich schon für den DHCP Server verwendet habe.

Wichtig! Für mein Script wird das „Comand Line Interface“ für PHP und MySQL Unterstützung, die man einfach über apt-get install php5-cli php5-mysql installieren kann benötigt.

Dann das Eigentlich Script. Es wird nur ausgeführt wenn Änderungen an der Datenbank Tabelle vorgenommen wurden dies wird anhand der Uhrzeit ermittelt wann das Script zuletzt geschrieben wurde. Wenn änderungen statgefunden haben werden alle Filterregeln überschreiben und neu geladen. Wenn der Datenbank Server einmal nicht erreichbar sein sollte bleibt alles so wie es ist, somit kann sichergestellt werden das der laufende betrieb so gut wie nie unterbrochen wird.
/usr/local/sbin/brieg.php

#!/usr/bin/php5
= ". fileatime($conf) ."";
if(!file_exists($conf) || mysql_num_rows(mysql_query($sql,$link)) > 0)
{

	$data = "#!/bin/bash

$EBTABLES -F
";

	$sql = "SELECT mac,ip FROM mac WHERE status='activ' ORDER BY host";
	$q = mysql_query($sql, $link) or die(mysql_error($link));
	for(;$ds = mysql_fetch_array($q);)
	{
		if (preg_match("/[0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f]/i", $ds['mac']))
		{		
$data .= "
$EBTABLES -A FORWARD -p IPv4 -i $ETHBA -o $ETHFH -s ". $ds['mac'] ." --ip-src ". $ds['ip'] ." -j ACCEPT
$EBTABLES -A FORWARD -p IPv4 -i $ETHFH -o $ETHBA -d ". $ds['mac'] ." --ip-dst ". $ds['ip'] ." -j ACCEPT
$EBTABLES -A FORWARD -p ARP -i $ETHBA -o $ETHFH --arp-opcode 2 --arp-ip-src ". $ds['ip'] ." --arp-mac-src ". $ds['mac'] ." -j ACCEPT
$EBTABLES -A FORWARD -p ARP -i $ETHFH -o $ETHBA --arp-opcode 2 --arp-ip-dst ". $ds['ip'] ." --arp-mac-dst ". $ds['mac'] ." -j ACCEPT
";
        }
	}

$data .= "
$EBTABLES -A FORWARD -p ARP -i $ETHBA -o $ETHFH --arp-opcode ! 2 -j ACCEPT
$EBTABLES -A FORWARD -p ARP -i $ETHFH -o $ETHBA --arp-opcode ! 2 -j ACCEPT

$EBTABLES -A FORWARD -p IPv4 -i $ETHBA -o $ETHFH -j DROP
$EBTABLES -A FORWARD -p IPv4 -i $ETHFH -o $ETHBA -j DROP
";

$date .= "exit 0
";

	$fp = fopen($conf, 'w+');
	fwrite($fp, $data);
	fclose($fp);

	system("chmod u+x " . $conf);
	system($conf);
}
system("exit 0");
?>

Anschließend mit crontab -e einen Minütlichen Cronjob erstellen.
# m h dom mon dow command
* * * * * /usr/local/sbin/brieg.php

DHCP Server mit MySQL

Freitag, März 6th, 2009

So hier dokumentiere ich mal wie ich den Wohnheims DHCP Server mit MySQL Unterstützung aufgesetzt habe.

Zuerst eine Datenbank aufsäten. In meinem Fall ist das eine MySQL 5.0 Datenbank.

CREATE TABLE IF NOT EXISTS `mac` (
  `mac` varchar(17) collate utf8_unicode_ci NOT NULL default '00:00:00:00:00:00',
  `ip` varchar(15) collate utf8_unicode_ci NOT NULL default '149.201.241.0',
  `host` varchar(100) collate utf8_unicode_ci NOT NULL,
  `status` enum('activ','static','new','notpay','inactiv') collate utf8_unicode_ci NOT NULL default 'activ',
  `name` varchar(255) collate utf8_unicode_ci NOT NULL,
  `comment` text collate utf8_unicode_ci NOT NULL,
  `zeit` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  PRIMARY KEY  (`mac`),
  UNIQUE KEY `host` (`host`,`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Wichtig! Für mein Script wird das „Comand Line Interface“ für PHP, das mann einfach über apt-get install php5_cli installieren kann, benötigt.

Es Prüft zuerst ob Änderungen an der DHCP Tabelle vorgenommen worden sind. Dann schreib es die Mac, Host liste in die /etc/dhcp3/hosts.conf und refrecht den DHCP-Server.

/usr/local/sbin/dhcp.php

#!/usr/bin/php5
= ". fileatime($conf) ."";
if(mysql_num_rows(mysql_query($sql,$link)) > 0 || !file_exists($conf))
{
	//DATEN
	$sql = "SELECT mac,ip,host,comment FROM mac WHERE NOT ip='' AND status='activ' ORDER BY host";
	$q = mysql_query($sql, $link);
	echo mysql_error($link);
	for(;$ds = mysql_fetch_array($q);)
	{
	    if (preg_match("/[0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f]/i",$ds['mac']))
	    {
	        if($ds['name']) 
		$daten .= '        # '. $ds['name'] .'
	';
	        $daten .= '        host '. $ds['host'] .' {
		    hardware ethernet '. $ds['mac'] .';
	            fixed-address '. $ds['ip'] .';
	            option host-name "'. $ds['host'] .'";
	        }
	';
	    }
	}
	
	// Speichern
	$fp = fopen($conf, 'w+');
	fwrite($fp, $daten);
	fclose($fp);
	
	system ("/etc/init.d/dhcp3-server force-reload");
}

system("exit 0");
?>

Dann die /etc/dhcp3/dhcpd.conf anpassen:
server-name "dhcp";
deny bootp;

authoritative;

shared-network bauhuette
{
option domain-name "bauhuette.fh-aachen.de";

subnet 149.201.241.0 netmask 255.255.255.0
{
option routers 149.201.241.20;
option broadcast-address 149.201.241.255;
option domain-name-servers 149.201.10.30;
option ntp-servers timeserver.rwth-aachen.de;

default-lease-time 600;
max-lease-time 7200;
deny unknown-clients;

}

group
{
include "/etc/dhcp3/hosts.conf";
}
}

Anschließend mit crontab -e einen Minütlichen Cronjob erstellen.
# m h dom mon dow command
* * * * * /usr/local/sbin/dhcp.php

Neuverkabelung im Netzwerkraum

Donnerstag, Februar 12th, 2009

Im Zuge der Umstruckturierungsmaßnahmen haben wir unserem Netz eine Neuverkabelung gegönnt. Vorher war alles grau und durcheinander. Jetzt ist es bunt und aufgeräumt.

Vorher:
dscf4055

Nachher:
dscf4069

[UPDATE]
Weite Bilder findet ihr in der Bildergalerie.

Controller tausch

Donnerstag, Februar 5th, 2009

Heute haben wir im Rechenzentrum bei einer Sun Fire 4150 den Controller getauscht, nachdem dieser vor einer Woche einmal ausgefallen ist. Bei eine identischen Maschine hat ein solcher Controller ganz aufgegeben und wurde bereits getauscht.

Sun Fire 4150

Sun Fire 4150