Archive for März, 2009

sudo tee time.now

Donnerstag, März 26th, 2009

Da man mit sudo gut auf die Nasse fallen kann wie man im folgenden beispiel sieht...
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

... gibt tee dabei Abhilfe
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

tee list dabei von "standard input" und schreib es nach "standard output" oder in diesem fall in eine Datei.

Bilder

Samstag, März 7th, 2009

Grillen am Donnerstag
img_0901

Geburtstag von Susanne

img_1003

Bridge mit MySQL Unterstützung

Freitag, März 6th, 2009

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

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

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.

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 DB 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

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
<?
$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

D-Link Switch mit VLAN problem

Freitag, März 6th, 2009

Unser neues D-Link Switch DGS1248T bricht komplett zusammen beim einrichten eines VLANs.

Aachen von mir aus

Dienstag, März 3rd, 2009

Da heute ja so schönes wetter war und ich eine Neue Kamera hier liegen habe habe ich mal Aachen von mir aus Fotografiert.

img_0794

Hier noch der ganze rund umblick, Bildergalerie.