Christoph geht zu Andy
Donnerstag, Juli 2nd, 2009Christoph: Kann ich mir nochmal deinen Staubsauger ausleihen?
Andy: Bekommst du schon wieder Frauen besuch?
Christoph: Kann ich mir nochmal deinen Staubsauger ausleihen?
Andy: Bekommst du schon wieder Frauen besuch?
Da wir im FH Netz noch keinen eigenen Mirror haben und der Sunsite Mirror der RWTH mit seinen 3x 100Mbit Karten nur ca 850kb Durchsatz schafft und unser Wohnheim mittlerweile mit Gigabit angeschlossen, habe ich im Februar einen Mirror aufgesät. Seit nun knapp einer Woche ist unser Mirror auch von außerhalb des FH Netzes erreichbar. Wir Mirroren derzeit nur Debian und Ubuntu Parkette sowie CD/DVDs. Der Antrag für einen Öffentliche Mirror ist bei launchpad.net gestellt. Sobald wir dort veröffentlicht werden, erfahrt ihr das natürlich hier.
Links: mirror.bauhuette.fh-aachen.de
Links: www.bauhuette.fh-aachen.de
Wie schon basicthinking.de berichtet hat ist Youtube zumindest was Musik angeht der groessten Flops des vergangenen Jahrzehnts.
Bei uns in der Kellerbar haben wir auch feststellen müssen, dass die Qualität der Songs unsere hochwertige Anlage quält und beschlossen youtube.com mal eben zu sperren. Da wir sowieso eine hidden briege einsetzen war dies ganz einfach mit einer iptabels regel zu definieren.
iptables -A FORWARD -s 10.0.0.2 -d www.youtube.com -j DROP
iptables -A FORWARD -s 10.0.0.2 -d youtube.com -j DROP
Quelle: Fex
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, das man einfach über apt-get install php5_cli installieren kann, benötigt.
Dann das Eigentlich Script. Es wird nur ausgeführt wenn Änderungen an der Datenbank Tabelle vorgenommen wurden. Löscht dann zuerst alle Filterregeln und setzt alle wieder. Wenn der Datenbank Server einmal nicht erreichbar sein sollte bleibt alles so wie es ist.
/usr/local/sbin/brieg.php
#!/usr/bin/php5 <?php $server = "dhcp.server"; $user = ""; $password = ""; //DB $link = mysql_connect($server,$user,$password); $db_selected = mysql_select_db("address", $link); if (!$db_selected) { die ('Kann Adresse nicht benutzen : ' . mysql_error()); } $conf = "/usr/local/sbin/ebt.sh"; $EBTABLES="/sbin/ebtables"; $ETHFH = "eth3"; # <- Anpassen $ETHBA = "eth2"; # <- Anpassen $sql = "SELECT mac FROM mac WHERE UNIX_TIMESTAMP(zeit) >= ". 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
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 <? $server = "localhost"; $user = ""; $password = ""; $conf = "/etc/dhcp3/hosts.conf"; //DB $link = mysql_connect($server,$user,$password); $db_selected = mysql_select_db("address", $link); if (!$db_selected) { die ('Kann address nicht benutzen : ' . mysql_error()); } $sql = "SELECT mac FROM mac WHERE UNIX_TIMESTAMP(zeit) >= ". 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
Unser neues D-Link Switch DGS1248T bricht komplett zusammen beim einrichten eines VLANs.
Da heute ja so schönes wetter war und ich eine Neue Kamera hier liegen habe habe ich mal Aachen von mir aus Fotografiert.
Hier noch der ganze rund umblick, Bildergalerie.
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:
![]()
Nachher:
![]()
[UPDATE]
Weite Bilder findet ihr in der Bildergalerie.
Heute habe ich mein RAID5 mal wieder vergrößert. Ich hatte bislang meine 2 500GB WD Platten auf meinem File-Server als Software RAID5 laufen. Jetzt kann man sich natürlich fragen: "wie geht den das"? Für ein RAID5 braucht man mindestens 3 Platten. Das stimmt auch soweit aber nicht wenn man die dritte Platte als Spare-Laufwerk einbindet. Das ist ähnlich dem Hot-Spare-Laufwerk nur das es im Gegenzug nicht vorhanden ist. Da ich aber schon wusste das ich das RAID eines Tages (heute) vergrößern wollte, habe ich ein RAID5 gewählt. Man hätte auch die beiden als RAID0 einbinden können. Dann hätte ich mir 1TB Platten holen können um da wiederum dann ein RAID5 zu legen aber auf den Mischmasch wollte ich verzichten.
Da ich noch ein 4HE Gehäuse hatte und der Server eh im NWR steht, habe ich mir zum einbauen der Platten, 4 Winkel mit je 12 Löschern, machen lassen und sie angeordnet wie in Sun(s) X4540. Mein sind zwar nicht ganz so gut angeordnet aber theoretisch bekomme ich so 2x 12 Platten unter.
![]()
4x WD5000AACS (Energie effizient)
2x WD2500JB (System)
4x WD1200JB Für RAID vorgemerkt.
![]()
Jetzt habe ich auf jeden fall 4x 500GB. + System Platten. Zukünftig brauch ich aber noch einen IDE Controller der zumindest JBOD kann. Das RAID mach ich ja dann eh softwaretechnisch.
Hier noch wie ich das RAID vergrößert habe:
mdadm --add /dev/md0 /dev/sdc1
mdadm --add /dev/md0 /dev/sdd1
Mit watch cat /proc/mdstat mann man sich dann anschauen wie weit er ist.
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdd1[3](S) sdc1[4] sda1[0] sdb1[1]
976767872 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
[========>............] recovery = 42.0% (205538560/488383936) finish=55.3min speed=131587K/sec
unused devices:
Dann das RAID noch um die 4te Platte ergänzen.
mdadm --grow --raid-devices=4 /dev/md0
Mit watch cat /proc/mdstat kann man sich dann wieder anschauen wie weit er ist.
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid5 sdd1[3] sdc1[2] sda1[0] sdb1[1]
976767872 blocks super 0.91 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
[========>............] reshape = 40.3% (196861568/488383936) finish=2234.7min speed=2171K/sec
unused devices:
Ich hätte --raid-devices auch auf 5 stellen können um wieder eine als Spare-Laufwerk einzubinden. Aber das kann ich auch immer noch machen wenn der Platz wieder eng wird und ich auf Ausfallsicherheit verzichten kann.
Damit beim nächsten Starten des Systems das RaidArray auch wieder gefunden wird muss man noch folgendes unternehmen.
cd /etc/mdadm
echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > mdadm.conf
mdadm --detail --scan >> mdadm.conf
Ganz zum Schluss noch das ext3 vergrößern.
resize2fs /dev/md0