Redundantes Gateway inkl bonding unter Linux bauen

Folgendes Szenario:
– Zentrales Gateway mit Debian 8
– Uplink zu Zwei Internetanschlüssen
– Lastverteilung auf beide Uplinks
– lokaler Storage über bonding mit mehr als 1Gbit im LAN verfügbar machen
– dedizierte lokale Leitung ins Internet

Zwei Wohnungen liegen direkt übereinander, in jeder Wohnung gibt es einen DSL Anschluss mit 16Mbit. Ein zentraler Fileserver soll als Gateway fungieren. Eingehender Traffic auf eth0 soll ins Internet gelangen. Beide Internetanschlüsse terminieren am Fileserver und sollen zur Erhöhung der Geschwindigkeit parallel genutzt werden (eth3 und eth4). Der eingebaute Storage soll im LAN mit mehr als 1Gbit erreichbar sein, weshalb eth1 und eth2 zu bond0 zusammengefasst werden. Die Config dazu sieht wie folgt aus:

# The loopback network interface
#auto lo eth3 eth4 eth0 bond0
iface lo inet loopback

# internal network for internet
allow-hotplug eth0
iface eth0 inet static
address 10.3.3.2
netmask 255.0.0.0
broadcast 10.255.255.255
post-up iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE
post-up iptables -t nat -A POSTROUTING -o eth4 -j MASQUERADE
post-up ip route add default scope global nexthop via 192.168.1.1 dev eth3 weight 1 nexthop via 192.168.2.1 dev eth4 weight 1

# internal network for NAS access
allow-hotplug bond0
iface bond0 inet static
address 10.3.3.1
netmask 255.0.0.0
network 10.0.0.0
broadcast 10.255.255.255
dns-nameservers 8.8.8.8
bond-slaves eth1 eth2
bond-mode 4
bond-miimon 100
bond-updelay 200
bond-downdelay 200
post-up ip route add 10.0.0.0/8 dev bond0 src 10.3.3.1 table rt2
post-up ip rule add from 10.3.3.1 lookup rt2

# dummy entry because I would like to see eth1 in ifconfig
#allow-hotplug eth1
iface eth1 inet manual

# same shit as above
#allow-hotplug eth2
iface eth2 inet manual

# uplink to robert
allow-hotplug eth3
iface eth3 inet static
address 192.168.1.10
netmask 255.255.255.0
post-up ip route add 192.168.1.0/24 dev eth3 src 192.168.1.10 table robert
post-up ip route add default via 192.168.1.1 table robert
#post-up ip route add 127.0.0.0/8 dev lo table robert
post-up ip rule add from 192.168.1.10 table robert
post-down ip rule del from 192.168.1.10 table robert

# uplink to florian
allow-hotplug eth4
iface eth4 inet static
address 192.168.2.10
netmask 255.255.255.0
post-up ip route add 192.168.2.0/24 dev eth4 src 192.168.2.10 table florian
post-up ip route add default via dev 192.168.2.1 table florian
post-up ip rule add from 192.168.2.10 table florian
post-down ip rule del from 192.168.2.10 table florian

Das ganze wurde außerdem von Robert hier dokumentiert: C²FS
Außerdem gibt es noch eine kleine Gallerie hier: http://www.abload.de/gallery.php?key=simmlGVZ
Doku dazu: http://lartc.org/howto/lartc.rpdb.multiple-links.html
Linux Server mit mehreren NICs im selben Netz

Posted in General, Linux, Nerd Stuff | Leave a comment

Wundertüten vom bastelfreak

Ein Bekannter hat von mir zwei Lankabel gekauft – für 5€ Aufpreis wurde daraus eine Wundertüte – hier das Unboxing Video dazu:

Dies hat zwei anderen Freunden so gut gefallen das diese ebenfalls Wundertüten wollten. Da beide keine Unboxing Videos machen wollten wurden einfach Inboxing Videos erstellt:
Taxus seine Wunschtüte
foxxx0 seine Wunschtüte

Posted in General, Nerd Stuff | 2 Comments

Nach einer Konversation im IRC

│19:00:28 Heradon | weisste was? ich glaub ich installier mir wieder ein gentoo, du hast mich auf den geschmack gebracht XD

Goog guy Heradon wurde von mir zu Gentoo überredet :)

Posted in General, Nerd Stuff | Leave a comment

Heinlein PDFs

Auf der Webseite vom Heinlein-Support gibt es diverse gute PDFs:
SPF, DKIM und Greylisting – DFN-Postmastertreffen 2010 von Peer Heinlein
SPF, DKIM und Greylisting: Noch aktuell im Spamschutz? von Peer heinlein und Robert Sander
Dovecot und mdbox! – LinuxTag Berlin 2012 von Peer Heinlein
Dovecot: Warum man keinen anderen IMAP-Server haben will. CLT 2010Peer Heinlein
Exim: MTA-Framework oder MTA? – Mailserver-Konferenz Berlin 2014 von Heiko Schlittermann
IPv6: Eine Einführung – 3. Secure Linux Administration Conference 2008 von Jens Link
Intelligentes Trafficmanagement für Internet Service Provider von Michael Bonin
Headers, Websockets + More: Webserver und Webapp-Sicherheit im Jahre 2014 von Markus Manzke
SASL von Patrick Koetter
Was ist dovecot?von Timo Sirainen

Ein großer Haufen weiterer Vorträge direkt vom Heinlein Team gibt es unter https://www.heinlein-support.de/vortrag

Posted in General, Internet found pieces, IT-Security, Linux | Leave a comment

Kurzanleitung für filebin

Kurzanleitung für die Installation von Filebin

cpan App::cpanminus
cpanm Text::Markdown
wget https://bootstrap.pypa.io/get-pip.py -O /tmp/
python /tmp/get-pip.py
pip install Pygments
pip install ansi2html
git clone git://git.server-speed.net/users/flo/filebin .
cp application/config/example/* application/config/
mv htaccess.txt .htaccess
echo "$config['index_page'] = '';" >> application/config/config-local.php

Ansonsten:
Wiki
Mailingliste
Installationsanleitung

Posted in General, Linux | Leave a comment

Heinlein-Support PDF zu Raid

Vom Heinlein-Support gibt es eine gute PDF zum Thema Raid, IOPS Skalierung und MB/s Berechnung.

Posted in General, Internet found pieces | Leave a comment

vim Short Tip

:%s/$search/$replace/gc

Damit sucht vim im ganzen Dokument nach $search und möchte es mit $replace ergänzen. Bei jedem Aufkommen von $search wird man gefragt man man es wirklich ersetzen möchte oder weiter zum nächsten Vorkommen springen will.

Posted in General, Linux | Leave a comment

Wie schreibt man richtige Bash Scripte

Hier gibt es einige Tips wie man bessere Bash Scripte schreibt. Zusätzlich gibt es unter ShellCheck einen Online Validator für Bash/Sh Scripte.

Posted in General, Internet found pieces | Leave a comment

Ruby Einzeiler für String.to_media_wiki

ary=[]; File.read('/path/to/file').each_byte{|x| ary << (x == 10 ? "\n" : '&#'+x.to_s+';')}; ary.each_index{|i| ary[i] = ' ' if ary[i] == "&#32;" };puts ary.join('')

Muss man diesen Einzeiler noch kommentieren? ;)

Mediawiki interpretiert bestimmte Zeichen, z.b. ” und macht folgenden Text in der Zeile kursiv. Um dies zu vermeiden kann man die Zeichen als ASCII Notation angeben. Normalen Text mit ASCII zu mischen ist aber recht unhübsch weshalb es sich anbietet gleich die ganze Wikiseite in ASCII zu speichern. Der Einzeiler liest eine Datei ein und gibt ihn in ASCII formatiert aus. Mediawiki ignoriert Steuerreichen (z.B. \n) in ASCII Notation weshalb wir den ASCII-Test entsprechend formatiert ausgeben. Ein Beispiel:
#!/usr/bin/env ruby

require 'ipaddr'
(Um den ASCII Code zu sehen bitte den Quellcode der Seite lesen ;))

Verbesserung eines Arbeitskollegen:

ary=[]; File.read('/path/to/file').each_byte{|x| ary << (x == 10 ? "\n" : '&#'+x.to_s+';'); ary[-1].gsub!("&#32;"," ");};puts ary.join('')
Posted in General, Nerd Stuff | Leave a comment

API Design Guide by Heroku

Von den Heroku Entwicklern gibt es einige Tips wie man HTTP-JSON APIs (nicht) implementieren sollte https://github.com/interagent/http-api-design

Posted in General, Internet found pieces | Leave a comment