<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.skytech.dk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.0.0%2F16</id>
	<title>Skytech - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.skytech.dk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=192.168.0.0%2F16"/>
	<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php/Special:Contributions/192.168.0.0/16"/>
	<updated>2026-07-14T17:32:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Postserver_-_med_certifikat_mm&amp;diff=1652</id>
		<title>Postserver - med certifikat mm</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Postserver_-_med_certifikat_mm&amp;diff=1652"/>
		<updated>2011-04-23T19:56:11Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
=== Standard installation ===&lt;br /&gt;
Start med at gå installationen af en Xen Klient maskine igennem [[InstallXenClientServer]]&lt;br /&gt;
&lt;br /&gt;
==== Tilføjelser ====&lt;br /&gt;
===== mail partition =====&lt;br /&gt;
Lav en mail partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
evmsn&lt;br /&gt;
tilføj en maildir partition i stil med dem der findes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj denne partition i fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/hda3               /var/maildir    ext3    defaults,noatime        0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj biblioteket til var&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== host filen =====&lt;br /&gt;
Første linje i host filen skal indeholde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       postXX.dk localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== mailname filen =====&lt;br /&gt;
Filen skal have hele domain navnet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
postXX.dk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Når det er gjort så kan du jo gå i gang med at installerer de programmer der skal være på den og konfigurerer dem.&lt;br /&gt;
&lt;br /&gt;
=== Installation af programmer ===&lt;br /&gt;
Du skal starte med at installerer subversion. Den skal du bruge til at hente konfigurationrene fra repositoriet med.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install subversion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herefter kan du tage ssh private og public nøgler fra post01.dk&lt;br /&gt;
&lt;br /&gt;
Dem skal du ligge i .ssh i /root/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &lt;br /&gt;
mkdir .ssh&lt;br /&gt;
scp -rp post01.dk:~/.ssh/ .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu kan vi så gå i gang med at hente konfigurations filerne fra subversion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
mkdir baseinstall&lt;br /&gt;
cd baseinstall&lt;br /&gt;
svn co svn+ssh://svn@svn.dk/mailsetup/baseinstall .&lt;br /&gt;
dpkg --set-selections &amp;lt; installed.txt&lt;br /&gt;
apt-get dselect-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så har vi fået installeret de programmer der skal ligge på serveren.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration af programmer ===&lt;br /&gt;
&lt;br /&gt;
==== ssl certifikater ====&lt;br /&gt;
Bestil et certifikat på https://products.geotrust.com/geocenter/reseller/logon.do&amp;lt;br&amp;gt;&lt;br /&gt;
key fil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl genrsa -out /etc/ssl/private/hostname.key 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
csr fil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -new -key /etc/ssl/private/hostname.key -out /etc/ssl/hostname.csr&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:DK&lt;br /&gt;
State or Province Name (full name) [Some-State]:N/A&lt;br /&gt;
Locality Name (eg, city) []:Kolding&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:WorldWeb Interactive A/S&lt;br /&gt;
Organizational Unit Name (eg, section) []:System&lt;br /&gt;
Common Name (eg, YOUR name) []:hostname.dk&lt;br /&gt;
Email Address []:sysadm@dk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gem din crt fil i &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssl/private/hostname.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exim4 ====&lt;br /&gt;
De filer svn brokker sig over svn ikke kan overskrive skal bare fjernes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/exim4/&lt;br /&gt;
rm -rf conf.d&lt;br /&gt;
svn co svn+ssh://svn@svn.dk/mailsetup/post .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editer i update-exim4.conf.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dc_other_hostnames=&#039;postXX.dk&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opdater exim konfig&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-exim4.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opdater exim certifikaterne&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/ssl/private/hostname.key /etc/exim4/exim.key&lt;br /&gt;
cp /etc/ssl/private/hostname.crt /etc/exim4/exim.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genstart exim4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/exim4 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== courier ====&lt;br /&gt;
Så er det courier&#039;s tur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/courier/&lt;br /&gt;
rm -rf *&lt;br /&gt;
svn co svn+ssh://svn@svn.dk/mailsetup/courier&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så skal vi lige have lavet nogle pem filer til imap og pop3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /etc/ssl/private/hostname.key /etc/ssl/private/hostname.crt &amp;gt; hostname.pem&lt;br /&gt;
openssl gendh &amp;gt;&amp;gt; hostname.pem&lt;br /&gt;
cp hostname.pem imapd.pem&lt;br /&gt;
cp hostname.pem pop3d.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genstart server og deamon&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/courier-authdaemon restart&lt;br /&gt;
/etc/init.d/courier-imap restart&lt;br /&gt;
/etc/init.d/courier-imap-ssl restart&lt;br /&gt;
/etc/init.d/courier-pop restart&lt;br /&gt;
/etc/init.d/courier-pop-ssl restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== apache2 ===&lt;br /&gt;
==== Squirrelmail ====&lt;br /&gt;
Vi skal lige have lavet de bibs der skal bruges&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/www/.ssh/&lt;br /&gt;
mkdir /var/www/squirrelmail/&lt;br /&gt;
scp -rp mailadmin.dk:/var/www/.ssh/* /var/www/.ssh/&lt;br /&gt;
chown www-data: -R /var/www/.ssh/&lt;br /&gt;
chown www-data: -R /var/www/squirrelmail/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så er det tid til co af squirrelmail fra svn&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - www-data&lt;br /&gt;
svn co svn+ssh://svn@svn.dk/mailsetup/squirrelmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== apache2 config ====&lt;br /&gt;
Vi skal lige have ssl support i apache2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/apache2/ssl.crt&lt;br /&gt;
mkdir -p /etc/apache2/ssl.key&lt;br /&gt;
cp /etc/ssl/private/hostname.crt /etc/apache2/ssl.crt/&lt;br /&gt;
cp /etc/ssl/private/hostname.key /etc/apache2/ssl.key/&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sidst skal vi lige tilføje&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
til /etc/apache2/ports.conf&lt;br /&gt;
&lt;br /&gt;
Vi skal lige have apache til at redirecte alt http til https gå til squirrelmail bib som default.&amp;lt;br&amp;gt;&lt;br /&gt;
Starter i /etc/apache2/site-avaliable/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
NameVirtualHost *:443&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
        RewriteEngine On&lt;br /&gt;
        RewriteCond  %{SERVER_NAME} !post01.dk&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.dk$1 [L,R]&lt;br /&gt;
&lt;br /&gt;
        RewriteCond  %{SERVER_PORT} !^443$&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.dk$1 [L,R]&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
                RedirectMatch ^/$ /squirrelmail/&lt;br /&gt;
.. &lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Og laver et webmail site&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        RewriteEngine On&lt;br /&gt;
        RewriteCond  %{SERVER_PORT} !^443$&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.dk/$1 [L,R]&lt;br /&gt;
        ServerAdmin webmaster@dk&lt;br /&gt;
        ServerName post01.dk&lt;br /&gt;
&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        SSLCertificateFile /etc/apache2/ssl.crt/post01.crt&lt;br /&gt;
        SSLCertificateKeyFile /etc/apache2/ssl.key/post01.key&lt;br /&gt;
        SSLProtocol all&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM&lt;br /&gt;
&lt;br /&gt;
        DocumentRoot /var/www/squirrelmail&lt;br /&gt;
        &amp;lt;Directory /&amp;gt;&lt;br /&gt;
                Options FollowSymLinks&lt;br /&gt;
                AllowOverride None&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        ErrorLog /var/log/apache2/error.log&lt;br /&gt;
&lt;br /&gt;
        # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
        # alert, emerg.&lt;br /&gt;
        LogLevel warn&lt;br /&gt;
&lt;br /&gt;
        CustomLog /var/log/apache2/access.log combined&lt;br /&gt;
        ServerSignature On&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aktiverer webmail sitet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite webmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi skal også lige have rewrite modulet enabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så kan vi reloade apache og vi er done med serveren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
apache2ctl graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailadmin ===&lt;br /&gt;
For at mailadmin virker som den skal. Skal vi have key auth til root fra mailadmin.dk&amp;lt;br&amp;gt;&lt;br /&gt;
edit /root/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnzEs1SVZhvmaXeO3LiYO4U2q2pppdI57/cnK0ccW7fT1J36fT+4od15isppxc3HilvosY/e9kOEwQTPciEa+NffQ9O5QCroXUyweEZN7HFKFU509drUFrjLgxiAXwbEoQmpysJzPKerqZOzri/Et+kCybvHx4HipshqVHHEQNGvt2b9jk8T7Plia1u2zP941zFh0L5v4QW+UiNO7Zcx4xAXfIjsCOTiw+y0rMop8J3SCrP7jOYRRY8zvCQ7pwS7XINw88LicMuVjgLh1hvZrUB6OnUZaLDA2sh2wFo+rGpeyVYCkU3gjZo04CIfnht56g0yTxALHn+UTX67Ac46AlQ== admin@mailadmin.dk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== scripts/sudo mm ===&lt;br /&gt;
Kopier alle perl/bash scripts over til serveren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /usr/local/sbin/log&lt;br /&gt;
svn co svn+ssh://svn@svn.dk/mailsetup/scripts /usr/local/sbin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj så brugeren kan eksekvere med root-access:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
Cmnd_Alias      MAILCMD=/usr/local/sbin/createmaildir.sh&lt;br /&gt;
&lt;br /&gt;
# # User privilege specification&lt;br /&gt;
root    ALL=(ALL) ALL&lt;br /&gt;
Debian-exim     ALL=(ALL) NOPASSWD:MAILCMD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP ændring ===&lt;br /&gt;
Det er nødvendigt at sætte php memory execution op til 32MB fra default 8MB, ellers virker squirrelmail ikke.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overvågning/backup mm =&lt;br /&gt;
Tilføj normal procedure vedr. overvågning og backup&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Postserver_-_med_certifikat_mm&amp;diff=1651</id>
		<title>Postserver - med certifikat mm</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Postserver_-_med_certifikat_mm&amp;diff=1651"/>
		<updated>2011-04-23T19:54:33Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* mailname filen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
=== Standard installation ===&lt;br /&gt;
Start med at gå installationen af en Xen Klient maskine igennem [[InstallXenClientServer]]&lt;br /&gt;
&lt;br /&gt;
==== Tilføjelser ====&lt;br /&gt;
===== mail partition =====&lt;br /&gt;
Lav en mail partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
evmsn&lt;br /&gt;
tilføj en maildir partition i stil med dem der findes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj denne partition i fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/hda3               /var/maildir    ext3    defaults,noatime        0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj biblioteket til var&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== host filen =====&lt;br /&gt;
Første linje i host filen skal indeholde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       postXX.dk localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== mailname filen =====&lt;br /&gt;
Filen skal have hele domain navnet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
postXX.dk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Når det er gjort så kan du jo gå i gang med at installerer de programmer der skal være på den og konfigurerer dem.&lt;br /&gt;
&lt;br /&gt;
=== Installation af programmer ===&lt;br /&gt;
Du skal starte med at installerer subversion. Den skal du bruge til at hente konfigurationrene fra repositoriet med.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install subversion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herefter kan du tage ssh private og public nøgler fra post01.wwi.dk&lt;br /&gt;
&lt;br /&gt;
Dem skal du ligge i .ssh i /root/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &lt;br /&gt;
mkdir .ssh&lt;br /&gt;
scp -rp post01.wwi.dk:~/.ssh/ .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu kan vi så gå i gang med at hente konfigurations filerne fra subversion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
mkdir baseinstall&lt;br /&gt;
cd baseinstall&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/baseinstall .&lt;br /&gt;
dpkg --set-selections &amp;lt; installed.txt&lt;br /&gt;
apt-get dselect-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så har vi fået installeret de programmer der skal ligge på serveren.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration af programmer ===&lt;br /&gt;
&lt;br /&gt;
==== ssl certifikater ====&lt;br /&gt;
Bestil et certifikat på https://products.geotrust.com/geocenter/reseller/logon.do&amp;lt;br&amp;gt;&lt;br /&gt;
key fil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl genrsa -out /etc/ssl/private/hostname.key 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
csr fil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -new -key /etc/ssl/private/hostname.key -out /etc/ssl/hostname.csr&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:DK&lt;br /&gt;
State or Province Name (full name) [Some-State]:N/A&lt;br /&gt;
Locality Name (eg, city) []:Kolding&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:WorldWeb Interactive A/S&lt;br /&gt;
Organizational Unit Name (eg, section) []:System&lt;br /&gt;
Common Name (eg, YOUR name) []:hostname.wwi.dk&lt;br /&gt;
Email Address []:sysadm@wwi.dk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gem din crt fil i &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssl/private/hostname.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exim4 ====&lt;br /&gt;
De filer svn brokker sig over svn ikke kan overskrive skal bare fjernes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/exim4/&lt;br /&gt;
rm -rf conf.d&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/post .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editer i update-exim4.conf.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dc_other_hostnames=&#039;postXX.wwi.dk&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opdater exim konfig&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-exim4.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opdater exim certifikaterne&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/ssl/private/hostname.key /etc/exim4/exim.key&lt;br /&gt;
cp /etc/ssl/private/hostname.crt /etc/exim4/exim.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genstart exim4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/exim4 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== courier ====&lt;br /&gt;
Så er det courier&#039;s tur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/courier/&lt;br /&gt;
rm -rf *&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/courier&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så skal vi lige have lavet nogle pem filer til imap og pop3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /etc/ssl/private/hostname.key /etc/ssl/private/hostname.crt &amp;gt; hostname.pem&lt;br /&gt;
openssl gendh &amp;gt;&amp;gt; hostname.pem&lt;br /&gt;
cp hostname.pem imapd.pem&lt;br /&gt;
cp hostname.pem pop3d.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genstart server og deamon&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/courier-authdaemon restart&lt;br /&gt;
/etc/init.d/courier-imap restart&lt;br /&gt;
/etc/init.d/courier-imap-ssl restart&lt;br /&gt;
/etc/init.d/courier-pop restart&lt;br /&gt;
/etc/init.d/courier-pop-ssl restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== apache2 ===&lt;br /&gt;
==== Squirrelmail ====&lt;br /&gt;
Vi skal lige have lavet de bibs der skal bruges&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/www/.ssh/&lt;br /&gt;
mkdir /var/www/squirrelmail/&lt;br /&gt;
scp -rp mailadmin.wwi.dk:/var/www/.ssh/* /var/www/.ssh/&lt;br /&gt;
chown www-data: -R /var/www/.ssh/&lt;br /&gt;
chown www-data: -R /var/www/squirrelmail/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så er det tid til co af squirrelmail fra svn&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - www-data&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/squirrelmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== apache2 config ====&lt;br /&gt;
Vi skal lige have ssl support i apache2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/apache2/ssl.crt&lt;br /&gt;
mkdir -p /etc/apache2/ssl.key&lt;br /&gt;
cp /etc/ssl/private/hostname.crt /etc/apache2/ssl.crt/&lt;br /&gt;
cp /etc/ssl/private/hostname.key /etc/apache2/ssl.key/&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sidst skal vi lige tilføje&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
til /etc/apache2/ports.conf&lt;br /&gt;
&lt;br /&gt;
Vi skal lige have apache til at redirecte alt http til https gå til squirrelmail bib som default.&amp;lt;br&amp;gt;&lt;br /&gt;
Starter i /etc/apache2/site-avaliable/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
NameVirtualHost *:443&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
        RewriteEngine On&lt;br /&gt;
        RewriteCond  %{SERVER_NAME} !post01.wwi.dk&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.wwi.dk$1 [L,R]&lt;br /&gt;
&lt;br /&gt;
        RewriteCond  %{SERVER_PORT} !^443$&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.wwi.dk$1 [L,R]&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
                RedirectMatch ^/$ /squirrelmail/&lt;br /&gt;
.. &lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Og laver et webmail site&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        RewriteEngine On&lt;br /&gt;
        RewriteCond  %{SERVER_PORT} !^443$&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.wwi.dk/$1 [L,R]&lt;br /&gt;
        ServerAdmin webmaster@wwi.dk&lt;br /&gt;
        ServerName post01.wwi.dk&lt;br /&gt;
&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        SSLCertificateFile /etc/apache2/ssl.crt/post01.crt&lt;br /&gt;
        SSLCertificateKeyFile /etc/apache2/ssl.key/post01.key&lt;br /&gt;
        SSLProtocol all&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM&lt;br /&gt;
&lt;br /&gt;
        DocumentRoot /var/www/squirrelmail&lt;br /&gt;
        &amp;lt;Directory /&amp;gt;&lt;br /&gt;
                Options FollowSymLinks&lt;br /&gt;
                AllowOverride None&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        ErrorLog /var/log/apache2/error.log&lt;br /&gt;
&lt;br /&gt;
        # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
        # alert, emerg.&lt;br /&gt;
        LogLevel warn&lt;br /&gt;
&lt;br /&gt;
        CustomLog /var/log/apache2/access.log combined&lt;br /&gt;
        ServerSignature On&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aktiverer webmail sitet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite webmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi skal også lige have rewrite modulet enabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så kan vi reloade apache og vi er done med serveren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
apache2ctl graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailadmin ===&lt;br /&gt;
For at mailadmin virker som den skal. Skal vi have key auth til root fra mailadmin.wwi.dk&amp;lt;br&amp;gt;&lt;br /&gt;
edit /root/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnzEs1SVZhvmaXeO3LiYO4U2q2pppdI57/cnK0ccW7fT1J36fT+4od15isppxc3HilvosY/e9kOEwQTPciEa+NffQ9O5QCroXUyweEZN7HFKFU509drUFrjLgxiAXwbEoQmpysJzPKerqZOzri/Et+kCybvHx4HipshqVHHEQNGvt2b9jk8T7Plia1u2zP941zFh0L5v4QW+UiNO7Zcx4xAXfIjsCOTiw+y0rMop8J3SCrP7jOYRRY8zvCQ7pwS7XINw88LicMuVjgLh1hvZrUB6OnUZaLDA2sh2wFo+rGpeyVYCkU3gjZo04CIfnht56g0yTxALHn+UTX67Ac46AlQ== admin@mailadmin.wwi.dk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== scripts/sudo mm ===&lt;br /&gt;
Kopier alle perl/bash scripts over til serveren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /usr/local/sbin/log&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/scripts /usr/local/sbin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj så brugeren kan eksekvere med root-access:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
Cmnd_Alias      MAILCMD=/usr/local/sbin/createmaildir.sh&lt;br /&gt;
&lt;br /&gt;
# # User privilege specification&lt;br /&gt;
root    ALL=(ALL) ALL&lt;br /&gt;
Debian-exim     ALL=(ALL) NOPASSWD:MAILCMD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP ændring ===&lt;br /&gt;
Det er nødvendigt at sætte php memory execution op til 32MB fra default 8MB, ellers virker squirrelmail ikke.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overvågning/backup mm =&lt;br /&gt;
Tilføj normal procedure vedr. overvågning og backup&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Postserver_-_med_certifikat_mm&amp;diff=1650</id>
		<title>Postserver - med certifikat mm</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Postserver_-_med_certifikat_mm&amp;diff=1650"/>
		<updated>2011-04-23T19:54:22Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* host filen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
=== Standard installation ===&lt;br /&gt;
Start med at gå installationen af en Xen Klient maskine igennem [[InstallXenClientServer]]&lt;br /&gt;
&lt;br /&gt;
==== Tilføjelser ====&lt;br /&gt;
===== mail partition =====&lt;br /&gt;
Lav en mail partition&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
evmsn&lt;br /&gt;
tilføj en maildir partition i stil med dem der findes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj denne partition i fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/hda3               /var/maildir    ext3    defaults,noatime        0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj biblioteket til var&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/maildir&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== host filen =====&lt;br /&gt;
Første linje i host filen skal indeholde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       postXX.dk localhost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== mailname filen =====&lt;br /&gt;
Filen skal have hele domain navnet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
postXX.wwi.dk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Når det er gjort så kan du jo gå i gang med at installerer de programmer der skal være på den og konfigurerer dem.&lt;br /&gt;
&lt;br /&gt;
=== Installation af programmer ===&lt;br /&gt;
Du skal starte med at installerer subversion. Den skal du bruge til at hente konfigurationrene fra repositoriet med.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install subversion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Herefter kan du tage ssh private og public nøgler fra post01.wwi.dk&lt;br /&gt;
&lt;br /&gt;
Dem skal du ligge i .ssh i /root/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &lt;br /&gt;
mkdir .ssh&lt;br /&gt;
scp -rp post01.wwi.dk:~/.ssh/ .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nu kan vi så gå i gang med at hente konfigurations filerne fra subversion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd&lt;br /&gt;
mkdir baseinstall&lt;br /&gt;
cd baseinstall&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/baseinstall .&lt;br /&gt;
dpkg --set-selections &amp;lt; installed.txt&lt;br /&gt;
apt-get dselect-upgrade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så har vi fået installeret de programmer der skal ligge på serveren.&lt;br /&gt;
&lt;br /&gt;
=== Konfiguration af programmer ===&lt;br /&gt;
&lt;br /&gt;
==== ssl certifikater ====&lt;br /&gt;
Bestil et certifikat på https://products.geotrust.com/geocenter/reseller/logon.do&amp;lt;br&amp;gt;&lt;br /&gt;
key fil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl genrsa -out /etc/ssl/private/hostname.key 1024&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
csr fil&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl req -new -key /etc/ssl/private/hostname.key -out /etc/ssl/hostname.csr&lt;br /&gt;
-----&lt;br /&gt;
Country Name (2 letter code) [AU]:DK&lt;br /&gt;
State or Province Name (full name) [Some-State]:N/A&lt;br /&gt;
Locality Name (eg, city) []:Kolding&lt;br /&gt;
Organization Name (eg, company) [Internet Widgits Pty Ltd]:WorldWeb Interactive A/S&lt;br /&gt;
Organizational Unit Name (eg, section) []:System&lt;br /&gt;
Common Name (eg, YOUR name) []:hostname.wwi.dk&lt;br /&gt;
Email Address []:sysadm@wwi.dk&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Gem din crt fil i &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/ssl/private/hostname.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exim4 ====&lt;br /&gt;
De filer svn brokker sig over svn ikke kan overskrive skal bare fjernes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/exim4/&lt;br /&gt;
rm -rf conf.d&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/post .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editer i update-exim4.conf.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dc_other_hostnames=&#039;postXX.wwi.dk&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opdater exim konfig&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
update-exim4.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Opdater exim certifikaterne&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cp /etc/ssl/private/hostname.key /etc/exim4/exim.key&lt;br /&gt;
cp /etc/ssl/private/hostname.crt /etc/exim4/exim.crt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genstart exim4&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/exim4 restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== courier ====&lt;br /&gt;
Så er det courier&#039;s tur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /etc/courier/&lt;br /&gt;
rm -rf *&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/courier&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så skal vi lige have lavet nogle pem filer til imap og pop3&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /etc/ssl/private/hostname.key /etc/ssl/private/hostname.crt &amp;gt; hostname.pem&lt;br /&gt;
openssl gendh &amp;gt;&amp;gt; hostname.pem&lt;br /&gt;
cp hostname.pem imapd.pem&lt;br /&gt;
cp hostname.pem pop3d.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genstart server og deamon&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/courier-authdaemon restart&lt;br /&gt;
/etc/init.d/courier-imap restart&lt;br /&gt;
/etc/init.d/courier-imap-ssl restart&lt;br /&gt;
/etc/init.d/courier-pop restart&lt;br /&gt;
/etc/init.d/courier-pop-ssl restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== apache2 ===&lt;br /&gt;
==== Squirrelmail ====&lt;br /&gt;
Vi skal lige have lavet de bibs der skal bruges&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /var/www/.ssh/&lt;br /&gt;
mkdir /var/www/squirrelmail/&lt;br /&gt;
scp -rp mailadmin.wwi.dk:/var/www/.ssh/* /var/www/.ssh/&lt;br /&gt;
chown www-data: -R /var/www/.ssh/&lt;br /&gt;
chown www-data: -R /var/www/squirrelmail/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så er det tid til co af squirrelmail fra svn&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
su - www-data&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/squirrelmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== apache2 config ====&lt;br /&gt;
Vi skal lige have ssl support i apache2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /etc/apache2/ssl.crt&lt;br /&gt;
mkdir -p /etc/apache2/ssl.key&lt;br /&gt;
cp /etc/ssl/private/hostname.crt /etc/apache2/ssl.crt/&lt;br /&gt;
cp /etc/ssl/private/hostname.key /etc/apache2/ssl.key/&lt;br /&gt;
a2enmod ssl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sidst skal vi lige tilføje&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listen 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
til /etc/apache2/ports.conf&lt;br /&gt;
&lt;br /&gt;
Vi skal lige have apache til at redirecte alt http til https gå til squirrelmail bib som default.&amp;lt;br&amp;gt;&lt;br /&gt;
Starter i /etc/apache2/site-avaliable/default&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NameVirtualHost *:80&lt;br /&gt;
NameVirtualHost *:443&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
        RewriteEngine On&lt;br /&gt;
        RewriteCond  %{SERVER_NAME} !post01.wwi.dk&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.wwi.dk$1 [L,R]&lt;br /&gt;
&lt;br /&gt;
        RewriteCond  %{SERVER_PORT} !^443$&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.wwi.dk$1 [L,R]&lt;br /&gt;
&lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
                RedirectMatch ^/$ /squirrelmail/&lt;br /&gt;
.. &lt;br /&gt;
..&lt;br /&gt;
..&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Og laver et webmail site&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
        RewriteEngine On&lt;br /&gt;
        RewriteCond  %{SERVER_PORT} !^443$&lt;br /&gt;
        RewriteRule ^(.*)$ https://post01.wwi.dk/$1 [L,R]&lt;br /&gt;
        ServerAdmin webmaster@wwi.dk&lt;br /&gt;
        ServerName post01.wwi.dk&lt;br /&gt;
&lt;br /&gt;
        SSLEngine on&lt;br /&gt;
        SSLCertificateFile /etc/apache2/ssl.crt/post01.crt&lt;br /&gt;
        SSLCertificateKeyFile /etc/apache2/ssl.key/post01.key&lt;br /&gt;
        SSLProtocol all&lt;br /&gt;
        SSLCipherSuite HIGH:MEDIUM&lt;br /&gt;
&lt;br /&gt;
        DocumentRoot /var/www/squirrelmail&lt;br /&gt;
        &amp;lt;Directory /&amp;gt;&lt;br /&gt;
                Options FollowSymLinks&lt;br /&gt;
                AllowOverride None&lt;br /&gt;
        &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        ErrorLog /var/log/apache2/error.log&lt;br /&gt;
&lt;br /&gt;
        # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
        # alert, emerg.&lt;br /&gt;
        LogLevel warn&lt;br /&gt;
&lt;br /&gt;
        CustomLog /var/log/apache2/access.log combined&lt;br /&gt;
        ServerSignature On&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aktiverer webmail sitet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2ensite webmail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vi skal også lige have rewrite modulet enabled&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
a2enmod rewrite&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Så kan vi reloade apache og vi er done med serveren.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apache2ctl configtest&lt;br /&gt;
apache2ctl graceful&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== mailadmin ===&lt;br /&gt;
For at mailadmin virker som den skal. Skal vi have key auth til root fra mailadmin.wwi.dk&amp;lt;br&amp;gt;&lt;br /&gt;
edit /root/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnzEs1SVZhvmaXeO3LiYO4U2q2pppdI57/cnK0ccW7fT1J36fT+4od15isppxc3HilvosY/e9kOEwQTPciEa+NffQ9O5QCroXUyweEZN7HFKFU509drUFrjLgxiAXwbEoQmpysJzPKerqZOzri/Et+kCybvHx4HipshqVHHEQNGvt2b9jk8T7Plia1u2zP941zFh0L5v4QW+UiNO7Zcx4xAXfIjsCOTiw+y0rMop8J3SCrP7jOYRRY8zvCQ7pwS7XINw88LicMuVjgLh1hvZrUB6OnUZaLDA2sh2wFo+rGpeyVYCkU3gjZo04CIfnht56g0yTxALHn+UTX67Ac46AlQ== admin@mailadmin.wwi.dk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== scripts/sudo mm ===&lt;br /&gt;
Kopier alle perl/bash scripts over til serveren:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /usr/local/sbin/log&lt;br /&gt;
svn co svn+ssh://svn@svn.wwi.dk/mailsetup/scripts /usr/local/sbin/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tilføj så brugeren kan eksekvere med root-access:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Cmnd alias specification&lt;br /&gt;
Cmnd_Alias      MAILCMD=/usr/local/sbin/createmaildir.sh&lt;br /&gt;
&lt;br /&gt;
# # User privilege specification&lt;br /&gt;
root    ALL=(ALL) ALL&lt;br /&gt;
Debian-exim     ALL=(ALL) NOPASSWD:MAILCMD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PHP ændring ===&lt;br /&gt;
Det er nødvendigt at sætte php memory execution op til 32MB fra default 8MB, ellers virker squirrelmail ikke.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overvågning/backup mm =&lt;br /&gt;
Tilføj normal procedure vedr. overvågning og backup&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1649</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1649"/>
		<updated>2011-04-23T19:51:30Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* DRBD &amp;amp; Heartbeat on Debian Etch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
*** DRBD is now part of the kernel, so the build part is deprecated&lt;br /&gt;
&lt;br /&gt;
* // START deprecated&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* // END deprecated&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140 ### Change to 192.168.0.110 for slave&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit resources ( /etc/ha.d/haresources )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server1 drbddisk::drbd \&lt;br /&gt;
        Filesystem::/dev/drbd0::/data::ext3 \&lt;br /&gt;
        mysql \&lt;br /&gt;
        apache2 \&lt;br /&gt;
        IPaddr::192.168.0.180/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount and prepare drbd disk&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /data&lt;br /&gt;
mount /dev/drbd0 /data&lt;br /&gt;
&lt;br /&gt;
## Create appropriate dirs for data to reside on or hardlink&lt;br /&gt;
mkdir -p /data/var/log/apache2&lt;br /&gt;
mkdir /data/var/log/mysql&lt;br /&gt;
chown www-data: /data/var/log/apache2&lt;br /&gt;
chown mysql: /data/var/log/mysql&lt;br /&gt;
mkdir -p /data/var/lib/&lt;br /&gt;
mv /var/lib/mysql /data/var/lib&lt;br /&gt;
chown mysql: /data/var/lib/mysql&lt;br /&gt;
mkdir /data/var/www/&lt;br /&gt;
chown www-data: /data/var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Heartbeat controlled ressources ==&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Squid_proxy_remote_server&amp;diff=1646</id>
		<title>Squid proxy remote server</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Squid_proxy_remote_server&amp;diff=1646"/>
		<updated>2011-04-10T20:00:54Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Howto run transparant proxy on same network on seperate server =&lt;br /&gt;
This is a blatant ripoff from this source: http://tldp.org/HOWTO/TransparentProxy-6.html&lt;br /&gt;
All credits goes there. I just spent a long time to find it, so reposted here for easy access again.&lt;br /&gt;
&lt;br /&gt;
== Chapter 6 ==&lt;br /&gt;
=== 6. Transparent Proxy to a Remote Box ===&lt;br /&gt;
&lt;br /&gt;
Now, the question naturally arises, if we can do all this nifty stuff redirecting HTTP connections to local ports, could we do the same thing but to a remote box (e.g., the machine with squid running is not the same machine as iptables is running on). The answer is yes, but it takes a little different magic words. If you only want to redirect to the local box (the normal case), skip this section.&lt;br /&gt;
&lt;br /&gt;
For the purposes of example commands, let&#039;s assume we have two boxes called squid-box and iptables-box, and that they are on the network local-network. In the commands below, replace these strings with the actual IP addresses or name of your machines and network.&lt;br /&gt;
&lt;br /&gt;
I will present two different approaches here.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 First method (simpler, but does not work for some esoteric cases) ===&lt;br /&gt;
&lt;br /&gt;
First, we need to machine that squid will be running on, squid-box. You do not need iptables or any special kernel options on this machine, just squid. You *will*, however, need the &#039;http_accel&#039; options as described above. (Previous version of this HOWTO suggested that you did not need those options. That was a mistake. Sorry to have confused people...)&lt;br /&gt;
&lt;br /&gt;
Now, the machine that iptables will be running on, iptables-box You will need to configure the kernel as described in section 3 above, except that you don&#039;t need the REDIRECT target support). Now, for the iptables commands. You need three:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128&lt;br /&gt;
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box&lt;br /&gt;
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first one sends the packets to squid-box from iptables-box. The second makes sure that the reply gets sent back through iptables-box, instead of directly to the client (this is very important!). The last one makes sure the iptables-box will forward the appropriate packets to squid-box. It may not be needed. YMMV. Note that we specified &#039;-i eth0&#039; and then &#039;-o eth0&#039;, which stands for input interface eth0 and output interface eth0. If your packets are entering and leaving on different interfaces, you will need to adjust the commands accordingly.&lt;br /&gt;
&lt;br /&gt;
Add these commands to your appropriate startup scripts under /etc/rc.d/&lt;br /&gt;
&lt;br /&gt;
(Thanks to Giles Coochey for help writing this section).&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Squid_proxy_remote_server&amp;diff=1645</id>
		<title>Squid proxy remote server</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Squid_proxy_remote_server&amp;diff=1645"/>
		<updated>2011-04-10T20:00:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categor:Linux]]&lt;br /&gt;
= Howto run transparant proxy on same network on seperate server =&lt;br /&gt;
This is a blatant ripoff from this source: http://tldp.org/HOWTO/TransparentProxy-6.html&lt;br /&gt;
All credits goes there. I just spent a long time to find it, so reposted here for easy access again.&lt;br /&gt;
&lt;br /&gt;
== Chapter 6 ==&lt;br /&gt;
=== 6. Transparent Proxy to a Remote Box ===&lt;br /&gt;
&lt;br /&gt;
Now, the question naturally arises, if we can do all this nifty stuff redirecting HTTP connections to local ports, could we do the same thing but to a remote box (e.g., the machine with squid running is not the same machine as iptables is running on). The answer is yes, but it takes a little different magic words. If you only want to redirect to the local box (the normal case), skip this section.&lt;br /&gt;
&lt;br /&gt;
For the purposes of example commands, let&#039;s assume we have two boxes called squid-box and iptables-box, and that they are on the network local-network. In the commands below, replace these strings with the actual IP addresses or name of your machines and network.&lt;br /&gt;
&lt;br /&gt;
I will present two different approaches here.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 First method (simpler, but does not work for some esoteric cases) ===&lt;br /&gt;
&lt;br /&gt;
First, we need to machine that squid will be running on, squid-box. You do not need iptables or any special kernel options on this machine, just squid. You *will*, however, need the &#039;http_accel&#039; options as described above. (Previous version of this HOWTO suggested that you did not need those options. That was a mistake. Sorry to have confused people...)&lt;br /&gt;
&lt;br /&gt;
Now, the machine that iptables will be running on, iptables-box You will need to configure the kernel as described in section 3 above, except that you don&#039;t need the REDIRECT target support). Now, for the iptables commands. You need three:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128&lt;br /&gt;
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box&lt;br /&gt;
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first one sends the packets to squid-box from iptables-box. The second makes sure that the reply gets sent back through iptables-box, instead of directly to the client (this is very important!). The last one makes sure the iptables-box will forward the appropriate packets to squid-box. It may not be needed. YMMV. Note that we specified &#039;-i eth0&#039; and then &#039;-o eth0&#039;, which stands for input interface eth0 and output interface eth0. If your packets are entering and leaving on different interfaces, you will need to adjust the commands accordingly.&lt;br /&gt;
&lt;br /&gt;
Add these commands to your appropriate startup scripts under /etc/rc.d/&lt;br /&gt;
&lt;br /&gt;
(Thanks to Giles Coochey for help writing this section).&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Squid_proxy_remote_server&amp;diff=1644</id>
		<title>Squid proxy remote server</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Squid_proxy_remote_server&amp;diff=1644"/>
		<updated>2011-04-10T20:00:34Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: Created page with &amp;quot;= Howto run transparant proxy on same network on seperate server = This is a blatant ripoff from this source: http://tldp.org/HOWTO/TransparentProxy-6.html All credits goes there...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Howto run transparant proxy on same network on seperate server =&lt;br /&gt;
This is a blatant ripoff from this source: http://tldp.org/HOWTO/TransparentProxy-6.html&lt;br /&gt;
All credits goes there. I just spent a long time to find it, so reposted here for easy access again.&lt;br /&gt;
&lt;br /&gt;
== Chapter 6 ==&lt;br /&gt;
=== 6. Transparent Proxy to a Remote Box ===&lt;br /&gt;
&lt;br /&gt;
Now, the question naturally arises, if we can do all this nifty stuff redirecting HTTP connections to local ports, could we do the same thing but to a remote box (e.g., the machine with squid running is not the same machine as iptables is running on). The answer is yes, but it takes a little different magic words. If you only want to redirect to the local box (the normal case), skip this section.&lt;br /&gt;
&lt;br /&gt;
For the purposes of example commands, let&#039;s assume we have two boxes called squid-box and iptables-box, and that they are on the network local-network. In the commands below, replace these strings with the actual IP addresses or name of your machines and network.&lt;br /&gt;
&lt;br /&gt;
I will present two different approaches here.&lt;br /&gt;
&lt;br /&gt;
=== 6.1 First method (simpler, but does not work for some esoteric cases) ===&lt;br /&gt;
&lt;br /&gt;
First, we need to machine that squid will be running on, squid-box. You do not need iptables or any special kernel options on this machine, just squid. You *will*, however, need the &#039;http_accel&#039; options as described above. (Previous version of this HOWTO suggested that you did not need those options. That was a mistake. Sorry to have confused people...)&lt;br /&gt;
&lt;br /&gt;
Now, the machine that iptables will be running on, iptables-box You will need to configure the kernel as described in section 3 above, except that you don&#039;t need the REDIRECT target support). Now, for the iptables commands. You need three:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128&lt;br /&gt;
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box&lt;br /&gt;
iptables -A FORWARD -s local-network -d squid-box -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The first one sends the packets to squid-box from iptables-box. The second makes sure that the reply gets sent back through iptables-box, instead of directly to the client (this is very important!). The last one makes sure the iptables-box will forward the appropriate packets to squid-box. It may not be needed. YMMV. Note that we specified &#039;-i eth0&#039; and then &#039;-o eth0&#039;, which stands for input interface eth0 and output interface eth0. If your packets are entering and leaving on different interfaces, you will need to adjust the commands accordingly.&lt;br /&gt;
&lt;br /&gt;
Add these commands to your appropriate startup scripts under /etc/rc.d/&lt;br /&gt;
&lt;br /&gt;
(Thanks to Giles Coochey for help writing this section).&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1640</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1640"/>
		<updated>2011-03-21T21:16:35Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Cron entry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Reset counter?&lt;br /&gt;
my $bReset = 0;&lt;br /&gt;
if (defined($ARGV[0]) &amp;amp;&amp;amp; $ARGV[0] eq &#039;--reset&#039;)&lt;br /&gt;
{&lt;br /&gt;
        $bReset = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;databasename&amp;gt;:&amp;lt;hostname or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Reset?&lt;br /&gt;
if ($bReset)&lt;br /&gt;
{&lt;br /&gt;
        my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
* I added the reset option so that one can update traffic data as wanted as long as the script is not run with --reset (resetting iptable counter). This way the ON UPDATE clause can do it&#039;s magic.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Grab data every 5min. This is a relatively lightweight operation taking ~0.3s on old hardware&lt;br /&gt;
*/5 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&lt;br /&gt;
## Reset data every hour&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl --reset&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Recording_apache_data_in_database&amp;diff=1639</id>
		<title>Recording apache data in database</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Recording_apache_data_in_database&amp;diff=1639"/>
		<updated>2011-03-19T20:38:29Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: Created page with &amp;quot;Category:Linux  = Recording data = stuff&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
= Recording data =&lt;br /&gt;
stuff&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1637</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1637"/>
		<updated>2011-03-12T23:14:01Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Perl script to grab data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Reset counter?&lt;br /&gt;
my $bReset = 0;&lt;br /&gt;
if (defined($ARGV[0]) &amp;amp;&amp;amp; $ARGV[0] eq &#039;--reset&#039;)&lt;br /&gt;
{&lt;br /&gt;
        $bReset = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;databasename&amp;gt;:&amp;lt;hostname or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Reset?&lt;br /&gt;
if ($bReset)&lt;br /&gt;
{&lt;br /&gt;
        my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
* I added the reset option so that one can update traffic data as wanted as long as the script is not run with --reset (resetting iptable counter). This way the ON UPDATE clause can do it&#039;s magic.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1636</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1636"/>
		<updated>2011-03-12T23:13:35Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Perl script to grab data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Reset counter?&lt;br /&gt;
my $bReset = 0;&lt;br /&gt;
if (defined($ARGV[0]) &amp;amp;&amp;amp; $ARGV[0] eq &#039;--reset&#039;)&lt;br /&gt;
{&lt;br /&gt;
        $bReset = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;databasename&amp;gt;:localhost:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Reset?&lt;br /&gt;
if ($bReset)&lt;br /&gt;
{&lt;br /&gt;
        my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
* I added the reset option so that one can update traffic data as wanted as long as the script is not run with --reset (resetting iptable counter). This way the ON UPDATE clause can do it&#039;s magic.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1635</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1635"/>
		<updated>2011-03-12T23:09:15Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Perl script to grab data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Reset counter?&lt;br /&gt;
my $bReset = 0;&lt;br /&gt;
if (defined($ARGV[0]) &amp;amp;&amp;amp; $ARGV[0] eq &#039;--reset&#039;)&lt;br /&gt;
{&lt;br /&gt;
        $bReset = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:martin:localhost:3306&#039;; my $user = &#039;martin&#039;; my $pass = &#039;faxeBeer42!&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Reset?&lt;br /&gt;
if ($bReset)&lt;br /&gt;
{&lt;br /&gt;
        my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
* I added the reset option so that one can update traffic data as wanted as long as the script is not run with --reset (resetting iptable counter). This way the ON UPDATE clause can do it&#039;s magic.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1634</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1634"/>
		<updated>2011-03-12T23:07:39Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Perl script to grab data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Reset counter?&lt;br /&gt;
my $bReset = 0;&lt;br /&gt;
if (defined($ARGV[0]) &amp;amp;&amp;amp; $ARGV[0] eq &#039;--reset&#039;)&lt;br /&gt;
{&lt;br /&gt;
        $bReset = 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:martin:localhost:3306&#039;; my $user = &#039;martin&#039;; my $pass = &#039;faxeBeer42!&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
## Reset?&lt;br /&gt;
if ($bReset)&lt;br /&gt;
{&lt;br /&gt;
        my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1633</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1633"/>
		<updated>2011-03-12T20:04:42Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Sample database data would look like */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1632</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1632"/>
		<updated>2011-03-12T20:03:47Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
MIRROR=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
WEB=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample database data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1631</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1631"/>
		<updated>2011-03-12T20:03:03Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
WEB=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
MIRROR=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sample database data would look like ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mysql&amp;gt; SELECT * FROM traffic;&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
| id | year | month | day  | hour | source        | traffic   |&lt;br /&gt;
+----+------+-------+------+------+---------------+-----------+&lt;br /&gt;
|  1 | 2011 |     3 |   12 |   14 | 192.168.0.210 | 273143717 |&lt;br /&gt;
|  2 | 2011 |     3 |   12 |   14 | 192.168.0.220 |      2920 |&lt;br /&gt;
|  3 | 2011 |     3 |   12 |   14 | 192.168.0.240 |     30071 |&lt;br /&gt;
|  4 | 2011 |     3 |   12 |   15 | 192.168.0.210 |   3111394 |&lt;br /&gt;
|  5 | 2011 |     3 |   12 |   15 | 192.168.0.220 |         0 |&lt;br /&gt;
|  6 | 2011 |     3 |   12 |   15 | 192.168.0.240 |   1379200 |&lt;br /&gt;
|  7 | 2011 |     3 |   12 |   16 | 192.168.0.210 | 376536344 |&lt;br /&gt;
|  8 | 2011 |     3 |   12 |   16 | 192.168.0.220 |      1572 |&lt;br /&gt;
|  9 | 2011 |     3 |   12 |   16 | 192.168.0.240 |     42356 |&lt;br /&gt;
| 10 | 2011 |     3 |   12 |   17 | 192.168.0.210 | 665197917 |&lt;br /&gt;
| 11 | 2011 |     3 |   12 |   17 | 192.168.0.220 |      1440 |&lt;br /&gt;
| 12 | 2011 |     3 |   12 |   17 | 192.168.0.240 |     60937 |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=XEN_-_howto_server_%26_client_non-evmns&amp;diff=1630</id>
		<title>XEN - howto server &amp; client non-evmns</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=XEN_-_howto_server_%26_client_non-evmns&amp;diff=1630"/>
		<updated>2011-03-12T19:51:23Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: /* Interfaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
== Installation af en Xen klient==&lt;br /&gt;
=== Hent og installer en Debian Netinstall ===&lt;br /&gt;
Helst være version 4.0 eller nyere.&lt;br /&gt;
&lt;br /&gt;
Vælg den rigtige ARCH; denne anvendes gennem teksten (ie, i386, K7, AMD64 mm)&lt;br /&gt;
&lt;br /&gt;
=== Base-setup ===&lt;br /&gt;
Opdatér debian systemet&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get upgrade&lt;br /&gt;
apt-get install vim&lt;br /&gt;
apt-get install ssh&lt;br /&gt;
apt-get install debootstrap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vælg rigtige XEN arch og installér&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install -u xen-linux-system-2.6.18-3-xen-k7 iproute-doc libc6-xen bridge-utils xen-hypervisor-3.0.3-1-i386 xen-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
for en K7 install (Athlon, AthlonXP mm)&lt;br /&gt;
&lt;br /&gt;
AMD64&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install xen-linux-system-2.6.18-3-xen-amd64 iproute-doc bridge-utils xen-utils&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check /boot/grub/menu.1st og sørg for at bootmenuen passer.&lt;br /&gt;
Reboot.&lt;br /&gt;
&lt;br /&gt;
=== Opret dirs, filer, filsystem og forbered til baseinstall ===&lt;br /&gt;
====Forbered directory, opret filer====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p /home/subversion&lt;br /&gt;
cd /home/subversion&lt;br /&gt;
dd if=/dev/zero of=subversion-root.img bs=1024k count=2000 (2GB)&lt;br /&gt;
dd if=/dev/zero of=subversion-swap.img bs=1024k count=500  (500MB)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Opret filsystemet====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 subversion-root.img&lt;br /&gt;
mkswap subversion-swap.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mount det nyoprettet filsystem som loopback-device====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mount -o loop subversion-root.img /mnt/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Installation af base-system ===&lt;br /&gt;
Installere basesystemet ved hjælp af bootstrap&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
##i386##&lt;br /&gt;
debootstrap --arch i386 etch /mnt/ http://debian.uni-c.dk/debian/&lt;br /&gt;
&lt;br /&gt;
##AMD64##&lt;br /&gt;
debootstrap --arch amd64 etch /mnt/ http://debian.uni-c.dk/debian/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rette nødvendige filer ===&lt;br /&gt;
&lt;br /&gt;
De filer der skal rettes er følgende.&lt;br /&gt;
==== fstab ====&lt;br /&gt;
editor /mnt/etc/fstab&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/hda1               /               ext3    defaults        1       2&lt;br /&gt;
/dev/hda2               none            swap    sw              0       0&lt;br /&gt;
/dev/pts                devpts          gid=5,mode=620          0       0&lt;br /&gt;
none                    /dev/shm        tmpfs   defaults        0       0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interfaces ====&lt;br /&gt;
editor /mnt/etc/network/interfaces&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
        address 80.161.254.17&lt;br /&gt;
        netmask 255.255.255.128&lt;br /&gt;
        gateway 80.161.254.1&lt;br /&gt;
        # dns-* options are implemented by the resolvconf package, if installed&lt;br /&gt;
        dns-nameservers 80.161.254.2 80.166.15.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== sources.list ====&lt;br /&gt;
editor /etc/apt/sources.list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://debian.uni-c.dk/debian/ etch main&lt;br /&gt;
deb-src http://debian.uni-c.dk/debian/ etch main&lt;br /&gt;
&lt;br /&gt;
deb http://security.debian.org/ etch/updates main&lt;br /&gt;
deb-src http://security.debian.org/ etch/updates main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== hosts ====&lt;br /&gt;
editér /etc/hosts&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost.localdomain   localhost&lt;br /&gt;
&lt;br /&gt;
# The following lines are desirable for IPv6 capable hosts&lt;br /&gt;
::1     ip6-localhost ip6-loopback&lt;br /&gt;
fe00::0 ip6-localnet&lt;br /&gt;
ff00::0 ip6-mcastprefix&lt;br /&gt;
ff02::1 ip6-allnodes&lt;br /&gt;
ff02::2 ip6-allrouters&lt;br /&gt;
ff02::3 ip6-allhosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== hostname ====&lt;br /&gt;
editér /etc/hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
subversion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== resolv.conf ====&lt;br /&gt;
editor /etc/resolv.conf&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nameserver 80.161.254.2&lt;br /&gt;
nameserver 80.166.15.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== .bashrc ====&lt;br /&gt;
editor /root/.bashrc&lt;br /&gt;
&lt;br /&gt;
tilføj disse linjer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# set a fancy prompt&lt;br /&gt;
PS1=&#039;${debian_chroot:+($debian_chroot)}\u@\h:\w\$ &#039;&lt;br /&gt;
&lt;br /&gt;
# If this is an xterm set the title to user@host:dir&lt;br /&gt;
case $TERM in&lt;br /&gt;
xterm*)&lt;br /&gt;
    PROMPT_COMMAND=&#039;echo -ne &amp;quot;\033]0;${USER}@${HOSTNAME}: ${PWD}\007&amp;quot;&#039;&lt;br /&gt;
    ;;&lt;br /&gt;
*)&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
og indkommenter aliaser.&lt;br /&gt;
&lt;br /&gt;
=== Kopier xenu modulerne ===&lt;br /&gt;
logout af chroot.&lt;br /&gt;
&lt;br /&gt;
Kopier modulerne:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## I386&lt;br /&gt;
cp -rp /lib/modules/2.6.18-3-xen-i3867/ /mnt/lib/modules/&lt;br /&gt;
&lt;br /&gt;
## AMD64&lt;br /&gt;
cp -rp /lib/modules/2.6.18-3-xen-amd64/ /mnt/lib/modules/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lave xen klient konfigurations fil ===&lt;br /&gt;
vi /etc/xen/&#039;&#039;hostname&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
name=&amp;quot;test1&amp;quot;&lt;br /&gt;
kernel=&amp;quot;/boot/vmlinuz-2.6.18-3-xen-k7&amp;quot;&lt;br /&gt;
ramdisk=&amp;quot;/boot/initrd.img-2.6.18-3-xen-k7&amp;quot;&lt;br /&gt;
root=&amp;quot;/dev/hda1 ro&amp;quot;&lt;br /&gt;
memory=256&lt;br /&gt;
disk=[&#039;file:/home/test1/test1-root.img,hda1,w&#039;,&#039;file:/home/test1/test1-swap.img,hda2,w&#039;]&lt;br /&gt;
&lt;br /&gt;
# network&lt;br /&gt;
vif=[ &#039;&#039; ]&lt;br /&gt;
dhcp=&amp;quot;of&amp;quot;&lt;br /&gt;
ip=&amp;quot;192.168.0.101&amp;quot;&lt;br /&gt;
netmask=&amp;quot;255.255.255.0&amp;quot;&lt;br /&gt;
gateway=&amp;quot;192.168.0.1&amp;quot;&lt;br /&gt;
hostname=&amp;quot;test1.example.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
extra=&amp;quot;4&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB:&#039;&#039;&#039; hvis du skal bruge en fil skal man bare skrive &#039;&#039;file:&#039;&#039; i stedet for &#039;&#039;phy:&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
file:/fuld/sti/til/filen&amp;lt;br/&amp;gt;&lt;br /&gt;
phy:devicenavn. fx phy:hda6&lt;br /&gt;
&lt;br /&gt;
=== Redigér xen-config fil ===&lt;br /&gt;
Redigér /etc/xen/xend-config.sxp&lt;br /&gt;
&lt;br /&gt;
og indkommenter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(network-script network-bridge)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Udkommenter&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(network-script network-dummy)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Genstart xen-service ===&lt;br /&gt;
Da vi har lavet ændringer til xen-servicen skal den genstartes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/xend restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start xen klienten ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xm create -c /etc/xen/&#039;hostname&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Når man starter xenclienten med -c kommer man automatisk ind i consollen til denne client. Det er vigtigt man gør det første gang den starter da vi lige mangler at lave den sidste setup inden debian base installationen er færdiggjort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Når login skærmen kommer frem skriver du bare root og blankt til password da det ikke er blevet konfigureret.&lt;br /&gt;
&lt;br /&gt;
Ændr password og installér&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For at sørge for at den nye virtuelle server anvender de rigtige clibs skal der (etch RC1) installeres xen-c-libs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install libc6-xen&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Logud og den nye virtuelle server er nu klar :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Dokumentation]]&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Firewall_-_CVP-bare&amp;diff=1629</id>
		<title>Firewall - CVP-bare</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Firewall_-_CVP-bare&amp;diff=1629"/>
		<updated>2011-03-12T19:46:30Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# eth0 er ydersiden (default GW), eth1 er extra yderside fra 3 (.91), eth2 er TDC gammel yderside, eth3 er indersiden&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
IP0=xxx&lt;br /&gt;
IP1=xxx&lt;br /&gt;
IP2=xxx&lt;br /&gt;
IP3=xxx&lt;br /&gt;
&lt;br /&gt;
# Tillad ping af firewall&lt;br /&gt;
$IPT -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Tillad ping gennem firewall&lt;br /&gt;
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Webmin + ssh&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -s xxx-p tcp --dport 22 -j ACCEPT&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -s xxx -p tcp --dport 10000 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
## Forward af mailserver via IP2 På mailserveren oprettes en virtuel interface, der lytter på/til det net, hvor &lt;br /&gt;
$IPT -t nat -A PREROUTING -p tcp -d $IP2 --dport 25 -j DNAT --to-destination xxx:25&lt;br /&gt;
&lt;br /&gt;
## Forward af port 10001 til filserver 10000&lt;br /&gt;
$IPT -t nat -A PREROUTING -p tcp --dport 10001 -j DNAT --to-destination xxx:10000&lt;br /&gt;
&lt;br /&gt;
## Nat den nye net kun via IP1&lt;br /&gt;
$IPT -t nat -A POSTROUTING -s xxx/32 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
## Tillad new, established, related&lt;br /&gt;
$IPT -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Firewall_-_CVP&amp;diff=1628</id>
		<title>Firewall - CVP</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Firewall_-_CVP&amp;diff=1628"/>
		<updated>2011-03-12T19:46:15Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# eth0 er ydersiden (default GW), eth1 er extra yderside fra 3 (.91), eth2 er TDC gammel yderside, eth3 er indersiden&lt;br /&gt;
#&lt;br /&gt;
# Disable OS fingerprinting&lt;br /&gt;
&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/tcp_timestamps&lt;br /&gt;
echo 0 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
IP0=80.251.198.92&lt;br /&gt;
IP1=80.251.198.91&lt;br /&gt;
IP2=xxx&lt;br /&gt;
IP3=xxx&lt;br /&gt;
&lt;br /&gt;
# Flush alle chains og slet user-chains&lt;br /&gt;
for i in filter nat mangle&lt;br /&gt;
do&lt;br /&gt;
$IPT -t $i -F&lt;br /&gt;
$IPT -t $i -X&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Set default policy&lt;br /&gt;
$IPT -P INPUT DROP ## ACCEPT i testing&lt;br /&gt;
$IPT -P FORWARD DROP ## ACCEPT i testing&lt;br /&gt;
$IPT -P OUTPUT ACCEPT &lt;br /&gt;
&lt;br /&gt;
# Blok nye forbindelser - undtaget fra indersideinterface&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -i eth1 -j ACCEPT&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -i eth0 -j ACCEPT&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -i lo -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Tillad ping af firewall&lt;br /&gt;
$IPT -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Tillad ping gennem firewall&lt;br /&gt;
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Webmin + ssh&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -s 212.37.141.188 -p tcp --dport 22 -j ACCEPT&lt;br /&gt;
$IPT -A INPUT -m state --state NEW -s 212.37.141.188 -p tcp --dport 10000 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
## NAT rules&lt;br /&gt;
# Mail&lt;br /&gt;
$IPT -t nat -A PREROUTING -p tcp -d $IP2 --dport 25 -j DNAT --to-destination xxx:25&lt;br /&gt;
&lt;br /&gt;
# Accepter forbindelser der er etableret og relateret &lt;br /&gt;
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NAT disse net&lt;br /&gt;
$IPT -t nat -A POSTROUTING -s xxx/24 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Tillad forbindelser der er bliver etableret, er etableret og relateret&lt;br /&gt;
$IPT -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Reenable forward&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Add default routes&lt;br /&gt;
route add default gw 192.168.1.254 eth0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1627</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1627"/>
		<updated>2011-03-12T17:19:26Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
WEB=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
MIRROR=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1626</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1626"/>
		<updated>2011-03-12T17:18:50Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
WEB=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
MIRROR=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
I&#039;ve added this to crontab (crontab -e)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
59 * * * * /usr/local/sbin/grabTraffic.pl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE TABLE `traffic` (&lt;br /&gt;
  `id` int(11) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `year` smallint(4) DEFAULT NULL,&lt;br /&gt;
  `month` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `day` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `hour` smallint(2) DEFAULT NULL,&lt;br /&gt;
  `source` varchar(20) DEFAULT NULL,&lt;br /&gt;
  `traffic` bigint(20) DEFAULT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `datecheck` (`year`,`month`,`day`,`hour`,`source`)&lt;br /&gt;
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=latin1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Example iptables output to test if it&#039;s working =&lt;br /&gt;
For ingoing traffic, issue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_IN -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_IN (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
  968985 56959759            all  --  *      *       0.0.0.0/0            192.168.0.210       &lt;br /&gt;
      78     4328            all  --  *      *       0.0.0.0/0            192.168.0.220       &lt;br /&gt;
   55144 80428099            all  --  *      *       0.0.0.0/0            192.168.0.240&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For outgoing, do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@gateway:~# iptables -L TRAFFIC_ACCT_OUT -n -v -x&lt;br /&gt;
Chain TRAFFIC_ACCT_OUT (1 references)&lt;br /&gt;
    pkts      bytes target     prot opt in     out     source               destination         &lt;br /&gt;
   12713  4252586            all  --  *      *       192.168.0.210        0.0.0.0/0           &lt;br /&gt;
      26     1440            all  --  *      *       192.168.0.220        0.0.0.0/0           &lt;br /&gt;
     928    53851            all  --  *      *       192.168.0.240        0.0.0.0/0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to flush the counter for any of those, just use the -Z option followed by the chain-name:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
iptables -Z TRAFFIC_ACCT_OUT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1625</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1625"/>
		<updated>2011-03-12T17:14:38Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
I&#039;ve added two new chains; in- and outgoing traffic inside forwarding rules. I&#039;ve added these to my firewall startup script:&lt;br /&gt;
&lt;br /&gt;
It is pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
### Static variables&lt;br /&gt;
IPT=/sbin/iptables&lt;br /&gt;
&lt;br /&gt;
### Static machines&lt;br /&gt;
WEB=192.168.0.210&lt;br /&gt;
MAIL=192.168.0.220&lt;br /&gt;
MIRROR=192.168.0.240&lt;br /&gt;
&lt;br /&gt;
### Create logging of traffic (assuming eth0 is the wan interface and/or the one doing the forwarding)&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -N TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -I FORWARD -i eth0 -j TRAFFIC_ACCT_IN&lt;br /&gt;
$IPT -I FORWARD -o eth0 -j TRAFFIC_ACCT_OUT&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_IN --dst ${MIRROR}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${WEB}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MAIL}&lt;br /&gt;
$IPT -A TRAFFIC_ACCT_OUT --src ${MIRROR}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1624</id>
		<title>Traffic summary using iptables</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Traffic_summary_using_iptables&amp;diff=1624"/>
		<updated>2011-03-12T16:54:40Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: Created page with &amp;quot;= Overview = Using iptables and a simple perl script to analyze data traffic.  = Prereq = &amp;lt;code&amp;gt; Perl ver 5.6+ Iptables &amp;lt;/code&amp;gt;  = Iptables setup =  = Perl script to grab data = ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Using iptables and a simple perl script to analyze data traffic.&lt;br /&gt;
&lt;br /&gt;
= Prereq =&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Perl ver 5.6+&lt;br /&gt;
Iptables&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Iptables setup =&lt;br /&gt;
&lt;br /&gt;
= Perl script to grab data =&lt;br /&gt;
I&#039;m putting the data from iptables into a local mysql database. From there I further analyze.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a simple two-stage process;&lt;br /&gt;
1. Get the data from the newly created chains;&lt;br /&gt;
2. Put into db and reset counter.&lt;br /&gt;
&lt;br /&gt;
Mine is based around getting data every hour, so I&#039;ve made a cron entry for that&lt;br /&gt;
&lt;br /&gt;
Perl script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use strict;&lt;br /&gt;
use DBI;&lt;br /&gt;
&lt;br /&gt;
## Setup database connection&lt;br /&gt;
my $dsn = &#039;dbi:mysql:&amp;lt;dbname&amp;gt;:&amp;lt;ip or localhost&amp;gt;:3306&#039;; my $user = &#039;&amp;lt;username&amp;gt;&#039;; my $pass = &#039;&amp;lt;password&amp;gt;&#039;;&lt;br /&gt;
my $dbh = DBI-&amp;gt;connect($dsn, $user, $pass) or die &amp;quot;Horrible!!\n$DBI::errstr\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);&lt;br /&gt;
$mon++;&lt;br /&gt;
$year += 1900;&lt;br /&gt;
&lt;br /&gt;
## Only grab outgoing data&lt;br /&gt;
my @aData = `/sbin/iptables -L TRAFFIC_ACCT_OUT -n -v -x | awk &#039;\$1 ~ /^[0-9]+\$/ { printf \&amp;quot;%s, %d \\n\&amp;quot;, \$7, \$2 }&#039;`;&lt;br /&gt;
&lt;br /&gt;
foreach (@aData)&lt;br /&gt;
{&lt;br /&gt;
        chomp;&lt;br /&gt;
        my @aSplitter = split(/, /, $_);&lt;br /&gt;
        my $sExtraSQL = &amp;quot;ON DUPLICATE KEY UPDATE traffic = &amp;quot;.$dbh-&amp;gt;quote($aSplitter[1]);&lt;br /&gt;
        my $sSQL = &amp;quot;INSERT INTO traffic (source, year, month, day, hour, traffic) VALUES (?, ?, ?, ?, ?, ?) $sExtraSQL\n&amp;quot;;&lt;br /&gt;
        my $sth = $dbh-&amp;gt;prepare($sSQL);&lt;br /&gt;
        $sth-&amp;gt;execute($aSplitter[0], $year, $mon, $mday, $hour, $aSplitter[1]);&lt;br /&gt;
}&lt;br /&gt;
my $bResetIptableCounter = `/sbin/iptables -Z TRAFFIC_ACCT_OUT`;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The code is extremely straightforward and no checks really. If I miss out of one hours traffic, it&#039;s no biggie, so haven&#039;t put much work into that part.&lt;br /&gt;
&lt;br /&gt;
= Cron entry =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database create options =&lt;br /&gt;
For those wanting it; I&#039;ve made a unique key formed by year+month+day+hour+source. It&#039;s highly inefficient, but I&#039;m dealing with a relatively low amount of data on my end (checking 3 hosts, so for a year I&#039;ll have a max of 3 hosts * 24 hours * 365 days ~= 25000 entries).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Mirror_getdeb&amp;diff=1623</id>
		<title>Mirror getdeb</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Mirror_getdeb&amp;diff=1623"/>
		<updated>2011-03-11T18:50:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: Created page with &amp;quot;== Mirror - getdeb ==  &amp;lt;pre&amp;gt; #/bin/sh  fatal() {   echo &amp;quot;$1&amp;quot;   exit 1 }  warn() {   echo &amp;quot;$1&amp;quot; }  # RSYNC source RSYNCSOURCE=rsync://rsync.getdeb.net/getdeb/  # Define where you w...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mirror - getdeb ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#/bin/sh&lt;br /&gt;
&lt;br /&gt;
fatal() {&lt;br /&gt;
  echo &amp;quot;$1&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
warn() {&lt;br /&gt;
  echo &amp;quot;$1&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# RSYNC source&lt;br /&gt;
RSYNCSOURCE=rsync://rsync.getdeb.net/getdeb/&lt;br /&gt;
&lt;br /&gt;
# Define where you want the mirror-data to be on your mirror&lt;br /&gt;
BASEDIR=$HOME/getdeb&lt;br /&gt;
&lt;br /&gt;
if [ ! -d ${BASEDIR} ]; then&lt;br /&gt;
  warn &amp;quot;${BASEDIR} does not exist yet, trying to create it...&amp;quot;&lt;br /&gt;
  mkdir -p ${BASEDIR} || fatal &amp;quot;Creation of ${BASEDIR} failed.&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rsync --recursive --times --links --hard-links \&lt;br /&gt;
  --stats \&lt;br /&gt;
  --exclude &amp;quot;Packages*&amp;quot; --exclude &amp;quot;Sources*&amp;quot; \&lt;br /&gt;
  --exclude &amp;quot;Release*&amp;quot; \&lt;br /&gt;
  ${RSYNCSOURCE} ${BASEDIR} || fatal &amp;quot;First stage of sync failed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
rsync --recursive --times --links --hard-links \&lt;br /&gt;
  --stats --delete --delete-after \&lt;br /&gt;
  ${RSYNCSOURCE} ${BASEDIR} || fatal &amp;quot;Second stage of sync failed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Mirror_gentoo&amp;diff=1622</id>
		<title>Mirror gentoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Mirror_gentoo&amp;diff=1622"/>
		<updated>2011-03-11T18:49:18Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
== Mirror - gentoo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
RSYNC=&amp;quot;/usr/bin/rsync&amp;quot;&lt;br /&gt;
OPTS=&amp;quot;--recursive --links --perms --times -D --delete --timeout=300&amp;quot;&lt;br /&gt;
#Uncomment the following line only if you have been granted access to masterportage.gentoo.org&lt;br /&gt;
#SRC=&amp;quot;rsync://masterportage.gentoo.org/gentoo-portage&amp;quot;&lt;br /&gt;
#If you are waiting for access to our master mirror, select one of our mirrors to mirror from:&lt;br /&gt;
SRC=&amp;quot;rsync://rsync.de.gentoo.org/gentoo-portage&amp;quot;&lt;br /&gt;
DST=&amp;quot;/home/mirroruser/gentoo/rsync/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Started update at&amp;quot; `date` &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
logger -t rsync &amp;quot;re-rsyncing the gentoo-portage tree&amp;quot;&lt;br /&gt;
${RSYNC} ${OPTS} ${SRC} ${DST} &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;End: &amp;quot;`date` &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Mirror_gentoo&amp;diff=1621</id>
		<title>Mirror gentoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Mirror_gentoo&amp;diff=1621"/>
		<updated>2011-03-11T18:48:48Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: Created page with &amp;quot;== Mirror - gentoo ==  &amp;lt;pre&amp;gt; #!/bin/bash  RSYNC=&amp;quot;/usr/bin/rsync&amp;quot; OPTS=&amp;quot;--recursive --links --perms --times -D --delete --timeout=300&amp;quot; #Uncomment the following line only if you ha...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Mirror - gentoo ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
RSYNC=&amp;quot;/usr/bin/rsync&amp;quot;&lt;br /&gt;
OPTS=&amp;quot;--recursive --links --perms --times -D --delete --timeout=300&amp;quot;&lt;br /&gt;
#Uncomment the following line only if you have been granted access to masterportage.gentoo.org&lt;br /&gt;
#SRC=&amp;quot;rsync://masterportage.gentoo.org/gentoo-portage&amp;quot;&lt;br /&gt;
#If you are waiting for access to our master mirror, select one of our mirrors to mirror from:&lt;br /&gt;
SRC=&amp;quot;rsync://rsync.de.gentoo.org/gentoo-portage&amp;quot;&lt;br /&gt;
DST=&amp;quot;/home/mirroruser/gentoo/rsync/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Started update at&amp;quot; `date` &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
logger -t rsync &amp;quot;re-rsyncing the gentoo-portage tree&amp;quot;&lt;br /&gt;
${RSYNC} ${OPTS} ${SRC} ${DST} &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;End: &amp;quot;`date` &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1620</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1620"/>
		<updated>2011-03-11T18:48:11Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1619</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1619"/>
		<updated>2011-03-11T18:47:54Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.250: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
RSYNC=&amp;quot;/usr/bin/rsync&amp;quot;&lt;br /&gt;
OPTS=&amp;quot;--recursive --links --perms --times -D --delete --timeout=300&amp;quot;&lt;br /&gt;
#Uncomment the following line only if you have been granted access to masterportage.gentoo.org&lt;br /&gt;
#SRC=&amp;quot;rsync://masterportage.gentoo.org/gentoo-portage&amp;quot;&lt;br /&gt;
#If you are waiting for access to our master mirror, select one of our mirrors to mirror from:&lt;br /&gt;
SRC=&amp;quot;rsync://rsync.de.gentoo.org/gentoo-portage&amp;quot;&lt;br /&gt;
DST=&amp;quot;/home/mirroruser/gentoo/rsync/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Started update at&amp;quot; `date` &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
logger -t rsync &amp;quot;re-rsyncing the gentoo-portage tree&amp;quot;&lt;br /&gt;
${RSYNC} ${OPTS} ${SRC} ${DST} &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;End: &amp;quot;`date` &amp;gt;&amp;gt; $0.log 2&amp;gt;&amp;amp;1&lt;/div&gt;</summary>
		<author><name>192.168.0.250</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Games&amp;diff=1613</id>
		<title>Category:Games</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Games&amp;diff=1613"/>
		<updated>2010-06-27T19:16:39Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Ufo_2.3_-_Ubuntu_fix&amp;diff=1612</id>
		<title>Ufo 2.3 - Ubuntu fix</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Ufo_2.3_-_Ubuntu_fix&amp;diff=1612"/>
		<updated>2010-06-27T19:16:26Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Games]]&lt;br /&gt;
&lt;br /&gt;
==Ufo AI 2.3==&lt;br /&gt;
Ufo: AI 2.3 cannot run on ubuntu because sdl mixer fails (for whatever reason)&lt;br /&gt;
&lt;br /&gt;
One solution would be to add the PPA for sdl and upgrade that way, it at least solved my problems.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ppa:dnjl/games&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Ufo_2.3_-_Ubuntu_fix&amp;diff=1611</id>
		<title>Ufo 2.3 - Ubuntu fix</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Ufo_2.3_-_Ubuntu_fix&amp;diff=1611"/>
		<updated>2010-06-27T19:15:46Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Games]]&lt;br /&gt;
&lt;br /&gt;
Ufo: AI 2.3 cannot run on ubuntu because sdl mixer fails (for whatever reason)&lt;br /&gt;
&lt;br /&gt;
One solution would be to add the PPA for sdl and upgrade that way, it at least solved my problems.&lt;br /&gt;
&lt;br /&gt;
[pre]&lt;br /&gt;
ppa:dnjl/games&lt;br /&gt;
[/pre]&lt;/div&gt;</summary>
		<author><name>192.168.0.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Games&amp;diff=1610</id>
		<title>Category:Games</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Games&amp;diff=1610"/>
		<updated>2010-06-27T19:14:16Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Main&lt;br /&gt;
[[Wow macroes]]&lt;br /&gt;
[[Ufo 2.3 - Ubuntu fix]]&lt;/div&gt;</summary>
		<author><name>192.168.0.1</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Fluxbox_-_default_setup&amp;diff=1606</id>
		<title>Fluxbox - default setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Fluxbox_-_default_setup&amp;diff=1606"/>
		<updated>2009-06-30T18:28:10Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
= Default fluxbox setup =&lt;br /&gt;
This setup will move alt+drag to Mod4 (Windows key) instead of the usual Mod1 (alt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
!mouse actions added by fluxbox-update_configs&lt;br /&gt;
OnTitlebar Mouse2 :StartTabbing&lt;br /&gt;
&lt;br /&gt;
!mouse actions added by fluxbox-update_configs&lt;br /&gt;
OnTitlebar Double Mouse1 :Shade&lt;br /&gt;
OnTitlebar Mouse3 :WindowMenu&lt;br /&gt;
&lt;br /&gt;
!mouse actions added by fluxbox-update_configs&lt;br /&gt;
OnWindow Mod4 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving}&lt;br /&gt;
OnWindow Mod4 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing BottomRight}&lt;br /&gt;
&lt;br /&gt;
!mouse actions added by fluxbox-update_configs&lt;br /&gt;
OnToolbar Mouse4 :NextWorkspace&lt;br /&gt;
OnToolbar Mouse5 :PrevWorkspace&lt;br /&gt;
&lt;br /&gt;
OnDesktop Mouse1 :HideMenus&lt;br /&gt;
OnDesktop Mouse2 :WorkspaceMenu&lt;br /&gt;
OnDesktop Mouse3 :RootMenu&lt;br /&gt;
OnDesktop Mouse4 :NextWorkspace&lt;br /&gt;
OnDesktop Mouse5 :PrevWorkspace&lt;br /&gt;
&lt;br /&gt;
Mod1 Tab :NextWindow&lt;br /&gt;
Mod1 Shift Tab :PrevWindow&lt;br /&gt;
Mod4 F1 :Workspace 1&lt;br /&gt;
Mod4 F2 :Workspace 2&lt;br /&gt;
Mod4 F3 :Workspace 3&lt;br /&gt;
Mod4 F4 :Workspace 4&lt;br /&gt;
Mod4 F5 :Workspace 5&lt;br /&gt;
Mod4 F6 :Workspace 6&lt;br /&gt;
Mod1 F7 :Workspace 7&lt;br /&gt;
Mod1 F8 :Workspace 8&lt;br /&gt;
Mod1 F9 :Workspace 9&lt;br /&gt;
Mod1 F10 :Workspace 10&lt;br /&gt;
Mod1 F11 :Workspace 11&lt;br /&gt;
Mod1 F12 :Workspace 12&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
Mod4 e :Fullscreen&lt;br /&gt;
Mod4 f :exec firefox&lt;br /&gt;
Mod4 t :exec thunderbird&lt;br /&gt;
Mod4 r :exec fbrun&lt;br /&gt;
&lt;br /&gt;
Mod4 a :exec xterm -name xterm -sl 3000 +sb -sk -bg black -fg white -tn xterm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Join_linux_to_windows_domain&amp;diff=1574</id>
		<title>Join linux to windows domain</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Join_linux_to_windows_domain&amp;diff=1574"/>
		<updated>2009-03-02T07:21:55Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ubuntu Server, apt-get install likewise-open, and then type &amp;quot;domainjoin-cli join my.domain my-username&amp;quot; in the command line&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1573</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1573"/>
		<updated>2009-03-02T07:20:38Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Lenny setup]]&lt;br /&gt;
*[[Join linux to windows domain]]&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Lenny_setup&amp;diff=1572</id>
		<title>Lenny setup</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Lenny_setup&amp;diff=1572"/>
		<updated>2009-03-01T19:26:12Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
= Install base packages =&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install php5 mysql-server apache2 php5-mysql rsync&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup rsync modules + &#039;slave&#039; ssh keys&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vim /etc/rsyncd.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1571</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1571"/>
		<updated>2009-03-01T19:10:37Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Lenny setup]]&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Gentoo_-_which_packages_a_file_belongs_to&amp;diff=1570</id>
		<title>Gentoo - which packages a file belongs to</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Gentoo_-_which_packages_a_file_belongs_to&amp;diff=1570"/>
		<updated>2009-02-14T14:10:55Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
To list which packages a file belongs too&lt;br /&gt;
&lt;br /&gt;
ie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
portageq owners / /usr/share/hwdata/videoaliases/r128.xinf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1569</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1569"/>
		<updated>2009-02-14T14:10:24Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Debian Etch - Nagios 3.1]]&lt;br /&gt;
*[[ClamAV - centos with SELinux]]&lt;br /&gt;
*[[Gentoo - which packages a file belongs to]]&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=ClamAV_-_centos_with_SELinux&amp;diff=1565</id>
		<title>ClamAV - centos with SELinux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=ClamAV_-_centos_with_SELinux&amp;diff=1565"/>
		<updated>2009-01-19T21:31:15Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
= Remove SElinux from clamd =&lt;br /&gt;
This way it can run under default /var/clamav instead of the policy /var/lib/clamav&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setsebool -P clamd_disable_trans=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1564</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1564"/>
		<updated>2009-01-19T21:30:27Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[DRBD, heartbeat on Debian Etch]]&lt;br /&gt;
*[[ClamAV - centos with SELinux]]&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Danish_keyboard_with_xorg-server_1.5&amp;diff=1556</id>
		<title>Danish keyboard with xorg-server 1.5</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Danish_keyboard_with_xorg-server_1.5&amp;diff=1556"/>
		<updated>2008-12-13T21:56:16Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Linux]]&lt;br /&gt;
&lt;br /&gt;
Edit ( /etc/hal/fdi/policy/10-x11-input.fdi ):&lt;br /&gt;
&lt;br /&gt;
Add following&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;merge key=&amp;quot;input.xkb.layout&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;dk&amp;lt;/merge&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart hal[d] service&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/hald restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart x&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1555</id>
		<title>Category:Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=Category:Linux&amp;diff=1555"/>
		<updated>2008-12-13T21:55:01Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[DRBD, heartbeat on Debian Etch]]&lt;br /&gt;
*[[Danish keyboard with xorg-server 1.5]]&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1554</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1554"/>
		<updated>2008-12-13T06:13:26Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Setup heartbeat (basic) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140 ### Change to 192.168.0.110 for slave&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit resources ( /etc/ha.d/haresources )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server1 drbddisk::drbd \&lt;br /&gt;
        Filesystem::/dev/drbd0::/data::ext3 \&lt;br /&gt;
        mysql \&lt;br /&gt;
        apache2 \&lt;br /&gt;
        IPaddr::192.168.0.180/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount and prepare drbd disk&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /data&lt;br /&gt;
mount /dev/drbd0 /data&lt;br /&gt;
&lt;br /&gt;
## Create appropriate dirs for data to reside on or hardlink&lt;br /&gt;
mkdir -p /data/var/log/apache2&lt;br /&gt;
mkdir /data/var/log/mysql&lt;br /&gt;
chown www-data: /data/var/log/apache2&lt;br /&gt;
chown mysql: /data/var/log/mysql&lt;br /&gt;
mkdir -p /data/var/lib/&lt;br /&gt;
mv /var/lib/mysql /data/var/lib&lt;br /&gt;
chown mysql: /data/var/lib/mysql&lt;br /&gt;
mkdir /data/var/www/&lt;br /&gt;
chown www-data: /data/var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Heartbeat controlled ressources ==&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1553</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1553"/>
		<updated>2008-12-11T23:25:00Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Install services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit resources ( /etc/ha.d/haresources )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server1 drbddisk::drbd \&lt;br /&gt;
        Filesystem::/dev/drbd0::/data::ext3 \&lt;br /&gt;
        mysql \&lt;br /&gt;
        apache2 \&lt;br /&gt;
        IPaddr::192.168.0.180/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount and prepare drbd disk&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /data&lt;br /&gt;
mount /dev/drbd0 /data&lt;br /&gt;
&lt;br /&gt;
## Create appropriate dirs for data to reside on or hardlink&lt;br /&gt;
mkdir -p /data/var/log/apache2&lt;br /&gt;
mkdir /data/var/log/mysql&lt;br /&gt;
chown www-data: /data/var/log/apache2&lt;br /&gt;
chown mysql: /data/var/log/mysql&lt;br /&gt;
mkdir -p /data/var/lib/&lt;br /&gt;
mv /var/lib/mysql /data/var/lib&lt;br /&gt;
chown mysql: /data/var/lib/mysql&lt;br /&gt;
mkdir /data/var/www/&lt;br /&gt;
chown www-data: /data/var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Heartbeat controlled ressources ==&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1552</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1552"/>
		<updated>2008-12-11T23:24:12Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Install services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit resources ( /etc/ha.d/haresources )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server1 drbddisk::drbd \&lt;br /&gt;
        Filesystem::/dev/drbd0::/data::ext3 \&lt;br /&gt;
        mysql \&lt;br /&gt;
        apache2 \&lt;br /&gt;
        IPaddr::192.168.0.180/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount and prepare drbd disk&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /data&lt;br /&gt;
mount /dev/drbd0 /data&lt;br /&gt;
&lt;br /&gt;
## Create appropriate dirs for data to reside on or hardlink&lt;br /&gt;
mkdir -p /data/var/log/apache2&lt;br /&gt;
mkdir /data/var/log/mysql&lt;br /&gt;
chown www-data: /data/var/log/apache2&lt;br /&gt;
chown mysql: /data/var/log/mysql&lt;br /&gt;
mkdir -p /data/var/lib/&lt;br /&gt;
mv /var/lib/mysql /data/var/lib&lt;br /&gt;
chown mysql: /data/var/lib/mysql&lt;br /&gt;
mkdir /data/var/www/&lt;br /&gt;
chown www-data: /data/var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&lt;br /&gt;
####### Heartbeat controlled ressources #########&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1551</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1551"/>
		<updated>2008-12-11T23:23:31Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Update systemfiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit resources ( /etc/ha.d/haresources )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server1 drbddisk::drbd \&lt;br /&gt;
        Filesystem::/dev/drbd0::/data::ext3 \&lt;br /&gt;
        mysql \&lt;br /&gt;
        apache2 \&lt;br /&gt;
        IPaddr::192.168.0.180/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount and prepare drbd disk&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir /data&lt;br /&gt;
mount /dev/drbd0 /data&lt;br /&gt;
&lt;br /&gt;
## Create appropriate dirs for data to reside on or hardlink&lt;br /&gt;
mkdir -p /data/var/log/apache2&lt;br /&gt;
mkdir /data/var/log/mysql&lt;br /&gt;
chown www-data: /data/var/log/apache2&lt;br /&gt;
chown mysql: /data/var/log/mysql&lt;br /&gt;
mkdir -p /data/var/lib/&lt;br /&gt;
mv /var/lib/mysql /data/var/lib&lt;br /&gt;
chown mysql: /data/var/lib/mysql&lt;br /&gt;
mkdir /data/var/www/&lt;br /&gt;
chown www-data: /data/var/www&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####### Heartbeat controlled ressources #########&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1550</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1550"/>
		<updated>2008-12-11T23:19:03Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Setup heartbeat (basic) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit resources ( /etc/ha.d/haresources )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server1 drbddisk::drbd \&lt;br /&gt;
        Filesystem::/dev/drbd0::/data::ext3 \&lt;br /&gt;
        mysql \&lt;br /&gt;
        apache2 \&lt;br /&gt;
        IPaddr::192.168.0.180/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####### Heartbeat controlled ressources #########&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1549</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1549"/>
		<updated>2008-12-11T23:18:05Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Setup heartbeat (basic) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
ucast eth0 192.168.0.140&lt;br /&gt;
auto_failback off&lt;br /&gt;
node server1&lt;br /&gt;
node server2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####### Heartbeat controlled ressources #########&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
	<entry>
		<id>https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1548</id>
		<title>DRBD, heartbeat on Debian Etch</title>
		<link rel="alternate" type="text/html" href="https://wiki.skytech.dk/index.php?title=DRBD,_heartbeat_on_Debian_Etch&amp;diff=1548"/>
		<updated>2008-12-11T23:17:47Z</updated>

		<summary type="html">&lt;p&gt;192.168.0.122: /* Install services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: Linux]]&lt;br /&gt;
&lt;br /&gt;
= DRBD &amp;amp; Heartbeat on Debian Etch =&lt;br /&gt;
&lt;br /&gt;
== Install DRBD ==&lt;br /&gt;
Unfortunately, drbd is not actively available as a package under Debian Etch, so it has to be build from source. &lt;br /&gt;
&lt;br /&gt;
Luckily this can be done automatically with debian.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install module-assistant build-essential drbd0.7-module-source&lt;br /&gt;
&lt;br /&gt;
## Then build the module&lt;br /&gt;
m-a a-i drbd0.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup some basic drbd replication [internal meta - partition] ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
resource drbd {&lt;br /&gt;
  protocol C;&lt;br /&gt;
  incon-degr-cmd &amp;quot;killall heartbeat&amp;quot;;&lt;br /&gt;
  disk {&lt;br /&gt;
    on-io-error panic;&lt;br /&gt;
  }&lt;br /&gt;
  syncer {&lt;br /&gt;
    rate 10M; # Note: &#039;M&#039; is MegaBytes, not MegaBits&lt;br /&gt;
  }&lt;br /&gt;
  on server1 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hdc3;&lt;br /&gt;
    address   192.168.0.110:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
  on server2 {&lt;br /&gt;
    device    /dev/drbd0;&lt;br /&gt;
    disk      /dev/hda3;&lt;br /&gt;
    address   192.168.0.140:7789;&lt;br /&gt;
    meta-disk  internal;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course adjust to your need.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Install heartbeat ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get install heartbeat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Setup heartbeat (basic) ===&lt;br /&gt;
Edit both host files ( /etc/ha.d/authkeys )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auth 2&lt;br /&gt;
1 crc&lt;br /&gt;
2 sha1 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
3 md5 ThisIsASampleKeyAnythingAlphaNumericIsGoodHere&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit HA for master node ( /etc/ha.d/ha.cf )&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
keepalive 1&lt;br /&gt;
deadtime 10&lt;br /&gt;
warntime 5&lt;br /&gt;
initdead 60&lt;br /&gt;
udpport 694&lt;br /&gt;
baud 19200&lt;br /&gt;
serial /dev/ttyS0&lt;br /&gt;
ucast eth0 192.168.0.140   (slave node should have master ip here; 192.168.0.110)&lt;br /&gt;
auto_failback off&lt;br /&gt;
watchdog /dev/watchdog&lt;br /&gt;
node node-a&lt;br /&gt;
node node-b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update systemfiles ==&lt;br /&gt;
Add needed servers to hosts file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[ ... ]&lt;br /&gt;
192.168.0.110   server1&lt;br /&gt;
192.168.0.140   server2&lt;br /&gt;
192.168.0.180   server&lt;br /&gt;
[ ... ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chmod /etc/ha.d/authkeys files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod 0600 /etc/ha.d/authkeys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prepare new drbd partition for data&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkfs.ext3 /dev/drbd0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setup exim&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dpkg-reconfigure exim4-config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install services ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Apache + php5 + mysql&lt;br /&gt;
apt-get install apache2 php5 php5-mysql mysql-server&lt;br /&gt;
&lt;br /&gt;
## pureftpd&lt;br /&gt;
apt-get install pure-ftpd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####### Heartbeat controlled ressources #########&lt;br /&gt;
Stop services and let heartbeat handle it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/apache2 stop&lt;br /&gt;
/etc/init.d/mysql stop&lt;br /&gt;
&lt;br /&gt;
## Copy to &lt;br /&gt;
cp -p /etc/init.d/mysql /etc/ha.d/resource.d/&lt;br /&gt;
cp -p /etc/init.d/apache2 /etc/ha.d/resource.d/&lt;br /&gt;
&lt;br /&gt;
## Remove old init-scripts for mysql/apache&lt;br /&gt;
update-rc.d -f apache2 remove&lt;br /&gt;
update-rc.d -f mysql remove&lt;br /&gt;
&lt;br /&gt;
## Config to use the new storage (/data)&lt;/div&gt;</summary>
		<author><name>192.168.0.122</name></author>
	</entry>
</feed>