Dies ist eine alte Version des Dokuments!
Installation der Statusseite
Eine kleine Statusseite die den Verkehr und den Status des Gateways anzeigt. Dafür wird lighttpd und ein CGI-Script verwendet.
apt-get install lighttpd apt-get install gawk
gawk wird für das CGI-Script benötigt. Der Inhalt von /etc/lighttpd/lighttpd.conf:
server.document-root = "/etc/lighttpd/www/" server.port = 80 server.bind = "10.29.x.y" $SERVER["socket"] == "10.207.x.y:80" {} server.username = "www" server.groupname = "www" mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", ".css" => "text/css" ) index-file.names = ( "index.html" )
In der Konfigurationsdatei muss anstatt 10.29.x.y die korrekte IP eingetragen werden unter der die Statusseite im Freifunknetz erreichbar sein soll.
Der Inhalt von /etc/lighttpd/generate.sh:
#!/bin/bash dst="$1" src="/tmp/freifunk_status" vpn_if='fastd_bat' wan_if='tun0' avg_time=5 #write stdout to file exec >"$src" 2>&1 convert() { echo $1 | awk '{ split("B,KiB,MiB,GiB,TiB,EiB,PiB,YiB,ZiB", s, ",") c=1; x=$1 while (x>=1024 && c<8) {x/=1024; c++} xf=(c==1)?"%d":"%.2f" printf(xf" %s\n", x, s[c]) }' } vpn_tx1_bytes=`cat "/sys/class/net/$vpn_if/statistics/tx_bytes"` vpn_rx1_bytes=`cat "/sys/class/net/$vpn_if/statistics/rx_bytes"` wan_tx1_bytes=`cat "/sys/class/net/$wan_if/statistics/tx_bytes"` wan_rx1_bytes=`cat "/sys/class/net/$wan_if/statistics/rx_bytes"` sleep $avg_time vpn_tx2_bytes=`cat "/sys/class/net/$vpn_if/statistics/tx_bytes"` vpn_rx2_bytes=`cat "/sys/class/net/$vpn_if/statistics/rx_bytes"` wan_tx2_bytes=`cat "/sys/class/net/$wan_if/statistics/tx_bytes"` wan_rx2_bytes=`cat "/sys/class/net/$wan_if/statistics/rx_bytes"` wan_tx_speed=$((($wan_tx2_bytes-$wan_tx1_bytes)/$avg_time)) wan_rx_speed=$((($wan_rx2_bytes-$wan_rx1_bytes)/$avg_time)) vpn_tx_speed=$((($vpn_tx2_bytes-$vpn_tx1_bytes)/$avg_time)) vpn_rx_speed=$((($vpn_rx2_bytes-$vpn_rx1_bytes)/$avg_time)) wan_tx_str="`convert $wan_tx2_bytes` (`convert $wan_tx_speed`/s)" wan_rx_str="`convert $wan_rx2_bytes` (`convert $wan_rx_speed`/s)" vpn_tx_str="`convert $vpn_tx2_bytes` (`convert $vpn_tx_speed`/s)" vpn_rx_str="`convert $vpn_rx2_bytes` (`convert $vpn_rx_speed`/s)" u=`uptime` load="${u##*:}" u="${u%%,*}" uptime="${u##*up}" hdd=`df -h | grep '/$' | cut -d' ' -f 20` echo '<html>' echo '<head>' echo '<title>Gateway-Status</title>' echo '<link rel="stylesheet" type="text/css" href="style.css">' echo '</head>' echo '<body>' echo '<br /><br />' echo '<h2>Statusseite des Gateways gateway-url</h2>' echo '<center>('`date`')</center>' echo '<table>' echo '<tr style="vertical-align:bottom;">' echo '<td id="left_top">'$wan_tx_str'</td>' echo '<td id="middle_top"><b>Load:</b>'$load'<br><b>Uptime:</b>'$uptime'</td>' echo '<td id="right_top">'$vpn_rx_str'</td>' echo '</tr>' echo '<tr>' echo '<td colspan=3><img src="schema.png" class="schema"></td></tr>' echo '<tr style="vertical-align:top;">' echo '<td id="left_bottom">'$wan_rx_str'</td>' echo '<td id="middle_bottom"><b>HDD:</b> '$hdd'<br><a href="vnstat/">Traffic Statistics</a></td>' echo '<td id="right_bottom">'$vpn_tx_str'</td>' echo '</tr>' echo '</table>' echo '</body>' echo '</html>' #move to final destiantion mv "$src" "$dst" exit 0
Für die Statusseite werde zusätzlich die beiden Dateien style.css und schema.png benötigt. Das obige Script generiert die Statusseite und soll alle zwei Minuten ausgeführt werden. Dafür wird ein Eintrag in die /etc/crontab vorgenommen:
*/2 * * * * www /etc/lighttpd/generate.sh '/etc/lighttpd/www/index.html'
Das gewählte Inhaltsverzeichnis muss noch erstellt werden:
mkdir /etc/lighttpd/www
Bevor lighttpd gestartet wird wird dafür noch eine Nutzer und eine Gruppe angelegt:
groupadd www useradd -g www -d /etc/lighttpd/www -s /sbin/nologin www chown -R www:www /etc/lighttpd/www/ chmod -R 775 /etc/lighttpd/www/
Nun kann der Webserver gestartet werden.
/etc/init.d/lighttpd start
vnStat
vnStat protokolliert den Netzwerkverkehr auf mehreren Anschlüssen und listest das Volumen je Minute/Stunde/Tag/Monat auf.
apt-get install php5-cgi apt-get install vnstat vnstat -u -i fastd_bat vnstat -u -i tun0 vnstat -u -i icvpn
In der /etc/vnstat.conf muss unter #default Interface:
Interface "tun0" Interface "fastd_bat" Interface "icvpn"
ergänzt werden
In /etc/lighttpd/lighttpd.conf muss dann hinzugefügt werden:
server.modules = ("mod_fastcgi") fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" )))
und
index-file.names = ( "index.html" )
wird durch
index-file.names = ( "index.html", "index.php" )
ersetzt
Nun muss nur noch das php-frontend (http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz) in den richtigen Pfad heruntergeladen und entpackt werden und die config.php angepasst werden: Alle Interfaces müssen als array aufgeführt sein:
$iface_list = array('tun0', 'fastd_bat', 'icvpn', 'eth0');
und für jedes Interface wird noch ein Titel vergeben
$iface_title['tun0'] = 'Exit-VPN'; $iface_title['fastd_bat'] = 'Freifunk intern'; $iface_title['icvpn'] = 'IC-VPN'; $iface_title['eth0'] = 'Netzwerkkarte';