Author Topic: Linux Homerouter/Homeserver (Erzählung)  (Read 1731 times)

DarthShredder

  • Global Moderator
  • Immernoch zu viel RL
  • *****
  • Posts: 28
  • Karma: +10/-0
    • View Profile
Linux Homerouter/Homeserver (Erzählung)
« on: March 05, 2014, 10:35:48 pm »
Vorab. Dies ist kein Tutorial. Es ist mehr so etwas wie eine Geschichte, die als Motivation dient. Habe keine Lust unwissenden das Rad zu erklären. Google ist euer Freund. Daher kein Tutorial, auch wenn ich hier womöglich hin und wieder Mal Scripte poste, die euch zu dem Thema evtl. was bringen würden. Ich freue mich auch, wenn jemand was beizutragen hat. Hab aber keine Lust mit Euch zu diskutieren, wieso ich das nicht anders mache usw. Thats the Shredderway and not yours :o

Ich habe vor etwa einem Jahr angefangen mir meinen eigenen Router mittels eines "Homeserver" zu basteln. Hintergrund war vorallem das mich die ganze IPv6 Geschichte in Bezug auf fertige Router wie z.B. von AVM die Fritzbox oder was ich hatte "Buffalo Router mit DD-WRT", ziemlich ankotzte. So Firewall Technisch lies sich da wenig machen, IPv6 Support war eine Katastrophe und die Dinger waren total überladen und hatten Features von denen man in Deutschland nicht mal Geräte findet, die das unterstützen und da ich ungern meine Systeme direkt im Internet habe, was bei IPv6 ohne Firewall der Fall wäre, wollte ich iptables haben und dann ging es los. Am Ende kam dann ein Server raus, wo ein Softwareraid mit vier Festplatten läuft, ein WLAN Accesspoint mittles USB Dongle, Router Funktionalität mit zwei Netzwerkkarten und Mediastation ähnliche Features (nicht ganz fertig ausgebaut bzw. langt mir so) mit einer billigen passiven Grafikkarte mit HDMI Ausgang. Funktastatur mit Touchpad verfeinert das ganze noch.

Was habe ich für Hardware dafür genommen?
Hier muss man vorweg sagen. Man kann hier auf Sparflame fahren, dann sollte man aber nichts erwarten. Zum Beispiel würde sich etwas ähnliches im kleinem Maße auch mit einem Raspberry Pi sehr wohl umsetzen (z.B. zweite Netzwerkkarte auf USB bzw. WLAN Dongle) jedoch wollte ich so einen Scheiß nicht und Raspberry war damals zu der Zeit eh nicht Lieferbar und ich hätte mit sicherheit über die bescheidene Performance geflucht.
Naja, zum wesentlichen. Als Hardware eignet sich eigentlich alles, wo man zwei Netzwerkkarte rein basteln kann und seine Wünsche realisieren kann. Zum Beispiel wäre es wohl eher nicht produktiv einen alten Pentium 2 mit 400Mhz raus zu kramen und den als Router und Mediastation zu verwenden. Das wird keinen Spaß machen. Man sollte sich also sehr wohl bewusst sein, was man eigentlich vor hat. Ich hatte mich entschieden, das ich einfach Spaß will und so viel wie möglich auf einer kleinen Kiste machen will.
Also fiel bei mir die Wahl auf einen HP Proliant MicroServer -> http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=6280786#!tab=features
Ist ein schnuckeliges Teil. Kann man viel dran rum basteln und von Haus aus schon leise, aber nicht lautlos (warum auch? Server muss man hören! :-P )
Das Teil lässt sich mit den zwei PCI-X auf dem Mainboard ganz gut mit einer Grafikkarte und einer Netzwerkkarte erweitern. War also genau das richtige für meine Idee. Es passen 4 bzw. 5 Festplatten rein. Habe da noch eine Samsung 840SSD Pro dazu gesteckt, wo das Bebtriebsystem drauf läuft. Die Dinge gibt es auch schon fast für einen Apfel und Ei. Kostenfaktor mässig war ich insgesamt ohne Festplatte (jedoch SSD einbezogen) bei etwa 500€. Geht mittlerweile sicher sehr viel günstiger. Habe gesehen aktuelle Proliant Microserver gibts teilweise jetzt schon für 150€. Also da kann man schon was machen. Wie schon erwähnt ist das keine Sparaktion sondern eine Aktion um was "gescheites" zu besitzen, wo mit man viel machen kann. Sparaktion ist nen Raspberry und das ist mir viel zu lahm, auch wenn das echt Strom sparen würde. Bin aber außerdem kein Student, also fuckit. Trotzdem kurz zum Strom. Mit Platten und allen drum und dran verbratet das Teil nach meinen Messungen etwa rund 60 Watt. Das geht, wenn man überlegt das es ein "echter" Homeserver ist. Für viele wird das zu viel sein ... aber mein Desktop PC frisst im Idle auch 250Watt und Strom ist in meiner Wohnung wirklich neben Internetanschluss das günstigste, was ich im Monat so an laufenden Kosten habe also nicht weiter drüber reden ...

Auf die Festplatten,Grafikkarte,Netzwerkkarte usw. geh ich jetzt nicht mehr ein, ist quasi Standardscheisse. Wie schon am Anfang erwähnt, will ich hier kein Tutorial schreiben. Ich gebe aber gerne mehr Infos, bei Interesse. Just ask!

Nunja so viel zur Hardware. Mal auf die Software. Habe ein Debian Wheezy (7.x) genommen. Ich mag Ubuntu nicht und bin der Debian Linie treu. Ist zwar nicht immer das neuste vom neusten, aber darum geht es ja auch nicht. Grafiktreiber von Ati, weils ne hässliche Ati ist. Nvidia wäre mir lieber gewesen, jedoch haben die nicht ins Gehäuse mit der Passivkühlung reingepasst, außer ich hätte ein älteres Model der Karte genommen, wo ich nicht wollte. Aktiv Kühlung kam schon wegen Stromgeschichten nicht in Frage, weil auf dem PCI-X Bus bei dem HP Proliant MicroServer dürfen nur 25Watt anliegen ... *hust* und ich bin handwerklich für Säge usw. sehr unbegabt, also wurde es Ausnahmsweise eine Ati, aber funzt.
Naja also Debian mit Gnome3, den Grafiktreibern, dem Softwareraid, den PPP Stuff (irgendwie muss ich über die ADSL Leitung ja ins Internet),  HostAPd, Radv für IPv6, DHCP, Bind usw. das übliche halt, was man so alles braucht.
Firewall schaut ganz simple aus. Alles natürlich selfmade und da mache ich immer INSERT und nicht APPEND. Hat vielleicht der eine oder andere ein Verständnisproblem mit, aber ich sagte schon das es kein Tutorial ist ...
Code: [Select]
#!/bin/bash
# Clear all Rules
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
ip6tables -F
ip6tables -X
ip6tables -t mangle -F
ip6tables -t mangle -X
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT

# FIREWALL RULES START
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Internet
iptables -I INPUT -i ppp0 -j DROP
iptables -I INPUT -i ppp0 -j LOG
iptables -I INPUT -i ppp0 -p icmp -j ACCEPT
iptables -I INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# SSH from Everywhere
iptables -I INPUT -i ppp0 -p tcp --dport 22 -j ACCEPT
# BoBVNC
iptables -t nat -I PREROUTING -i ppp0 -p tcp --dport 5900 -j DNAT --to 192.168.0.42
# BackupFTP
iptables -I INPUT -s xx.4.xx.2 -j ACCEPT

# Start Fail2Ban
/etc/init.d/fail2ban restart

### IPv6 ####
# Internet
ip6tables -I INPUT -i ppp0 -j DROP
ip6tables -I INPUT -i ppp0 -j LOG
ip6tables -I INPUT -i ppp0 -p icmpv6 -j ACCEPT
ip6tables -I INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# DHCPv6
ip6tables -I INPUT -i ppp0 -p udp --sport 547 --dport 546 -j ACCEPT

# Forwarding
ip6tables -I FORWARD -i ppp0 -j DROP
ip6tables -I FORWARD -i ppp0 -j LOG
ip6tables -I FORWARD -i ppp0 -p icmpv6 -j ACCEPT
ip6tables -I FORWARD -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Block Teredo Tunneling
iptables -I FORWARD -i ppp0 -p udp --dport 3544 -j DROP
ip6tables -I FORWARD -i ppp0 -p udp --dport 3544 -j DROP

Interessant ist dann auch so Stuff, wie das IPv6 Script, was ich mit pppd hochfahren lassen, weil es immer wieder Probs gibt, die aktuelle IPv6 Adresse von Radv und DHCP usw. zu verwenden und mein Provider mir dynamisch ein IPv6 Netz zuteilt.
Hab es mal workarrounded. Copyright by me ... Sagt wenigstens Danke, wenn es euch weiter bringt ... und ja es ist nicht perfekt -> es funktioniert!
Code: [Select]
#!/bin/bash
/etc/init.d/radvd stop
/etc/init.d/wide-dhcpv6-client stop
#ifdown dsl-provider
#ifup dsl-provider
sleep 60
ip -6 route add default dev ppp0
sleep 60
/etc/init.d/wide-dhcpv6-client start
sleep 30
ipv6address=$(ifconfig br0 | grep inet6-Adresse | grep ": 2001" | awk {'print $2'} | cut -d : -f 1,2,3,4)
oldipv6file=/etc/ppp/oldipv6address
oldipv6=$(cat $oldipv6file)
sed -i -e s/"$oldipv6"/"$ipv6address"/g /etc/radvd.conf
/etc/init.d/radvd start
echo $ipv6address > $oldipv6file

Als ADSL Modem setze ich ein D-Link 321B ein. Das ist ein super Teil, so lange man es unter der Firmware 1.05 hält (z.B 1.04 ist noch ok) weil die ab der aktuellen Firmware Telnet,SSH usw. deaktiviert haben. Nur Gott weiß wieso. Weil das ist nämlich das Super MegaDuppa Feature überhaupt. Ich kann mittels Telnet drauf und mit simplen Befehlen wie "adsl info" die Werte abfragen und SNR Tuning ist auch drinnen. Da holt man bei einer schlechte Leitung, wie ich sie leider besitze, gleich mal einige 1000Kbit mehr raus. Z.B anstatt 13000kbit dann halt 16000Kbit auf kosten der Stabilität (hin und wieder Syncverlust, wenn das Wetter scheisse ist *hust* )

Fortsetzung folgt, irgendwann
« Last Edit: March 05, 2014, 10:46:05 pm by DarthShredder »