[[Datei:Plitc_pppoe_failover.jpg|thumbnail|left|"serverseitiges PPPoE Failover]]
== Switch (Partitionierung) mit filter source-port ==
Der Switch "diethylether" (OBEN / mit der IP: '''.7''') hat per CLI ein [http://whp-hou4.cold.extweb.hp.com/pub/networking/software/Security-Oct2005-59906024-Chap10-Traf-Security-Filts.pdf HP ProCurve - filter source-port] Regelsatz
Dieser Regelsatz dient weitgehend zur Trennung der PPPoE Übertragung mit dem restlichen Netzwerk
* Port 1-4 dürfen nur mit Trk2 / Trk3 kommunizieren
* > Port 1 ist für das PPPoE DSL Modem
* > Port 2 (Notfall) Ratbert (generell ausgeschaltet)
* > Port 3 (für Debugzwecke zum Port-Mirroring)
* > Port 4 (Fritzbox für VoIP zum Asterisk LXC)
Der zweite Teil der Segmentierung sie wie folgt aus:
* > Port 5-8 (ist der Trunk von Trk2 & Trk3)
* > Trk2 ist freenas/storage server
* > Trk3 ist flatbert server
* (einige ) Port 9-20 und Trk1 (Port 21-24) dient der Kommunikation mit dem Switch (UNTEN / mit der IP: '''.6''') der das eigentliche HQ, über das Patchfeld, versorgt
(untagged als auch VLAN 100-105)
== PPPoE Failover Schema ==
* Der Flatbert Server hat den LXC Container: '''dropbert1''' mit der IP: '''.91''' (primärer PPPoE Dialin/Routing Container)
* Der FreeNAS/Storage Server hat die JAIL: '''dropbert2''' mit der IP: '''.92''' (backup PPPoE Dialin/Routing Container)
* Da es sich bei Flatbert um einen Linux (Debian) Server und FreeNAS/Storage um einen FreeBSD Server handelt, wird zur gegenseitigen "failover" Verständigung, innerhalb der Container, [http://www.pureftpd.org/project/ucarp ucarp] verwendet
== Funktionen der Container ==
* PPPoE Dialin ([https://wiki.debian.org/PPPoE Debian]/[https://www.freebsd.org/doc/handbook/pppoe.html FreeBSD])
* Routing ([https://www.debian.org/doc/manuals/network-administrator/ch-tcpip.html Debian]/[https://www.freebsd.org/doc/handbook/network-routing.html FreeBSD])
* NAT – [https://wiki.debian.org/iptables iptables] unter Debian / [https://www.freebsd.org/doc/handbook/firewalls-ipfw.html ipfw] unter FreeBSD
== HOST System Einrichtung ==
=== Flatbert (Linux) ===
System auf den aktuellen Stand halten
Umgebungs-/Debugtools installieren
Kernelmodule laden
Container erstellen
Container stoppen und LXC-Container-Config anpassen (für pppoe kernel support)
WICHTIG: durch das Flatbert Netzwerkschema muss! vswitch1 nach vswitch0 umgeschrieben werden, damit „dropbert1“ direkt über die erste Bridge angebunden wird und nicht an der zweiten Bridge, die ProxyARP/ProxyNDP verwendet!
=== FreeNAS/Storage (FreeBSD) ===
Da wir zunächst ein „Buildenvironment“ benötigen, erstellen wir uns über die FreeNAS Web GUI eine Jail mit der Bezeichnung „buildbert“
„buildbert“ Container: login
„buildbert“ Container: auf den aktuellsten Stand bringen
„buildbert“ Container: FreeNAS (9.3) selbst bauen, dazu bitte der Anleitung unter [https://github.com/freenas/freenas github.com/freenas/freenas] folgen
WICHTIG: damit nun die NetGraph PPP/PPPoE Module mitgebaut werden, müssen folgende Zeilen, in der Konfig, angepasst werden, siehe Zeilennummer:
sofern der „make release“ abgeschlossen wurde, können die benötigten Kernelmodule ins FreeNAS System kopiert und geladen werden
Download PLITC: [https://blog.plitc.eu/downloads/freenas/freenas_9.3_amd64_netgraph_pppoe.tar.gz freenas_9.3_amd64_netgraph_pppoe.tar.gz]*
*Download ohne Gewähr
NetGraph Kernelmodule laden
damit auch die NetGraph Module bei einem Systemstart mitgeladen werden, müssen über die FreeNAS Web GUI, ein paar Tunables gesetzt werden
'''System -> Tunables'''
[[Datei:Plitc_pppoe_failover_freenas.jpg]]
'''Wichtig ist ebenso die „pfil“ Einträge zu setzen! sonst werden die PPPoE Pakete, auf der FreeNAS Bridge, gedroppt!'''
Erklärung dazu unter: FreeBSD [https://www.freebsd.org/cgi/man.cgi?if_bridge if_bridge]
FreeNAS Reboot!
Nach dem FreeNAS Systemreboot kann jetzt per Web GUI die JAIL: „dropbert2“ erstellt und eingerichtet werden
== Container Einrichtung ==
=== LXC: dropbert1 ===
„dropbert1“ Container: starten und einloggen
Der Container sollte automatisch per DHCP eine IP Adresse zugewiesen bekommen.
„dropbert1“ Container: ucarp und pppoeconf installieren
„dropbert1“ Container: pppoe einrichten
„dropbert1“ Container: Netzwerk Interface Konfiguration
„dropbert1“ Container: damit nach dem failover Moduswechsel (von BACKUP auf MASTER) auch der tatsächliche Switch die neue MAC Adresse zur virtuellen (virtual shared) IP erhält, wird das ucarp-up Skript angepasst indem man einfach ein Ping anschließend senden lässt
„dropbert1“ Container: /etc/sysctl.conf & /etc/rc.local anpassen
Sofern ich an dieser Stelle nichts nennenswertes vergessen habe zu erwähnen, sollte nach einem Container Neustart die PPPoE Einwahl und das Routing schon funktionieren
=== JAIL: dropbert2 ===
„dropbert2“ Container: ucarp installieren
„dropbert2“ Container: ucarp up & down scripts
Die „while true“ Schleife ist notwendig, da ipfw mit dem laden der Regelsätze abbricht wenn ein (noch nicht) vorhandenes Device (in dem Fall: tun0) auf Firewallregeln matchen soll
„dropbert2“ Container: /etc/ppp/ppp.conf (PPPoE Config!)
„dropbert2“ Container: /etc/sysctl.conf
„dropbert2“ Container: /etc/rc.conf
„dropbert2“ Container: /etc/rc.local
„dropbert2“ Container: /etc/firewall.rules
„dropbert2“ Container: /etc/rc.firewall.local
Das sollte es gewesen sein!
Nun sollte man einmal die „routbert“ JAIL, per FreeNAS Web GUI, neustarten lassen
#