Benutzer-Werkzeuge

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
gatewaykonfiguration [2015/03/11 20:13] adlerwebgatewaykonfiguration [2020/10/17 20:04] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 15: Zeile 15:
   * [[https://www.archlinux.org/packages/extra/x86_64/bind/|bind (named)]] -> DNS-Zone   * [[https://www.archlinux.org/packages/extra/x86_64/bind/|bind (named)]] -> DNS-Zone
   * [[https://www.archlinux.org/packages/core/x86_64/openvpn/|OpenVPN]] -> VPN Internetzugang   * [[https://www.archlinux.org/packages/core/x86_64/openvpn/|OpenVPN]] -> VPN Internetzugang
-  * [[https://www.archlinux.org/packages/extra/x86_64/haveged/|haveged]] -> Genug Entropie bereithalten+  * [[https://www.archlinux.org/packages/extra/x86_64/haveged/|haveged]] -> Genug Entropie bereithalten; alternativ rng-tools
   * [[https://www.archlinux.org/packages/extra/x86_64/ntp/|ntp]] -> Weil Baum   * [[https://www.archlinux.org/packages/extra/x86_64/ntp/|ntp]] -> Weil Baum
   * [[https://www.archlinux.org/packages/extra/x86_64/php/|php]] -> Kleine Hilfsprogramme   * [[https://www.archlinux.org/packages/extra/x86_64/php/|php]] -> Kleine Hilfsprogramme
   * [[https://aur.archlinux.org/packages/batman-adv/|batman-adv (AUR)]] -> B.A.T.M.A.N. Routing (Kompatibilität 15!)   * [[https://aur.archlinux.org/packages/batman-adv/|batman-adv (AUR)]] -> B.A.T.M.A.N. Routing (Kompatibilität 15!)
 +  * [[https://aur.archlinux.org/packages/batctl/|batctl (AUR)]] -> B.A.T.M.A.N. Konfiguration
   * [[https://www.archlinux.org/packages/core/x86_64/bridge-utils/|bridge-utils]] -> Netzwerkbrücke   * [[https://www.archlinux.org/packages/core/x86_64/bridge-utils/|bridge-utils]] -> Netzwerkbrücke
-  * [[https://www.archlinux.org/packages/extra/x86_64/screen/|screen]] -> Wir starten fastd in screen - kann ggf. angepasst werden +  * [[https://www.archlinux.org/packages/extra/x86_64/screen/|screen]] -> Wir starten fastd in screen - kann ggf. angepasst werden  
 +  * [[https://​www.archlinux.org/​packages/​community/​x86_64/​vnstat/​|vnstat]] -> Traffic-Statistiken  
 +  * [[https://​www.archlinux.org/​packages/​extra/​x86_64/​lighttpd/​|lighttpd]] -> Statistiken (und ggf. Karte). Anderer Server mit HTTP geht natürlich auch
 ==== Optional (Karte/Statistik/...) - nicht dokumentiert ==== ==== Optional (Karte/Statistik/...) - nicht dokumentiert ====
  
-  * lighttpd+  * python
   * batman-alfred   * batman-alfred
   * batman-alfred-json-git   * batman-alfred-json-git
 +  * meshviewer
 +  * ffmap-backend (patched)
 +  * ffapi-updater (adlerweb)
 +  * Ein Haufen Workarounds…
  
 ===== Konfiguration ===== ===== Konfiguration =====
Zeile 55: Zeile 61:
 driftfile /var/lib/ntp/ntp.drift driftfile /var/lib/ntp/ntp.drift
 </code> </code>
 +
 +NTP sollte automatisch starten
 +
 +==== Haveged ====
 +
 +Der Server muss z.T. einiges an Crypto abarbeiten und kann daher - vorallen da keine Tastatur/Mausaktionen erfolgen - schnell in einen Entropiemangel laufen. Als Workarround kann haveged gestartet werden um künstlich den Pool hoch zu halten.
  
 ==== Fastd ==== ==== Fastd ====
  
-Fastd ist ein VPN-Server/Client, welcher zur Verbindung mit den Knoten verwendet wird. Er ist durch die geringen Speicheranforderungen optimal für Router geeignet. Als Methode kommt salsa2012+gmac zum Einsatz, zur Kompatibilität mit älteren Firmwareversionen wird auch salsa2012+umac akzeptiert. Eine unverschlüsselte Verbindung, welche bei einigen Communitys zur Steigerung der Performance angeboten wird, ist nicht aktiv. Verbindungen werden über udp/5000 abgewickelt. Für jeden Client muss der öffentliche Schlüssel hinterlegt werden. Auf unseren Gateways lassen wir ausschließlich Knoten zu, welche über das Webinterface registriert wurden (dies gilt nur für VPN, Mesh ist immer möglich!). Ein Abgleich erfolgt über ein PHP-Script, welches die öffentlichen Schlüssel der Clients aus der Datenbank abruft und passende Konfigurationsdateien erzeugt.+Fastd ist ein VPN-Server/Client, welcher zur Verbindung mit den Knoten verwendet wird. Er ist durch die geringen Speicheranforderungen optimal für Router geeignet. Als Methode kommt salsa2012+gmac zum Einsatz, zur Kompatibilität mit älteren Firmwareversionen wird auch salsa2012+umac akzeptiert. Eine unverschlüsselte Verbindung, welche bei einigen Communitys zur Steigerung der Performance angeboten wird, ist nicht aktiv. Verbindungen werden über udp/10000 abgewickelt. Für jeden Client muss der öffentliche Schlüssel hinterlegt werden. Auf unseren Gateways lassen wir ausschließlich Knoten zu, welche über das Webinterface registriert wurden (dies gilt nur für VPN, Mesh ist immer möglich!). Ein Abgleich erfolgt über ein PHP-Script, welches die öffentlichen Schlüssel der Clients aus der Datenbank abruft und passende Konfigurationsdateien erzeugt.
  
 ("lamepassword" durch den geheimen Schlüssel des Servers ersetzen) ("lamepassword" durch den geheimen Schlüssel des Servers ersetzen)
Zeile 67: Zeile 79:
 method "salsa2012+umac"; method "salsa2012+umac";
 secure handshakes yes; secure handshakes yes;
-bind 0.0.0.0:5000;+bind any:10000;
 hide ip addresses yes; hide ip addresses yes;
 hide mac addresses yes; hide mac addresses yes;
-mtu 1426;+mtu 1280;
 include peers from "peers"; include peers from "peers";
 secret "lamepassword"; secret "lamepassword";
Zeile 76: Zeile 88:
  
 <code php /etc/fastd/ff/bin/fastd-api.php> <code php /etc/fastd/ff/bin/fastd-api.php>
 +#!/usr/bin/php -f
 <?php <?php
 $url = '***APIURL***'; $url = '***APIURL***';
-$out = '/etc/fastd/vpn/peers/';+$out = '/etc/fastd/ff/peers/';
  
 if(!is_dir($out)) die('Output Dir missing'); if(!is_dir($out)) die('Output Dir missing');
Zeile 114: Zeile 127:
 </code> </code>
  
-Das PHP-Script sollte mindestens alle 10 Minuten via Cron aufgerufen werden (cd /etc/fastd/vpn/bin ; php -f gen.php). Es ist zu beachten, dass das Script zum Erstellen der Configs und reload des fastd entsprechende Berechtigungen benötigt.+Das PHP-Script sollte mindestens alle 10 Minuten via Cron aufgerufen werden (cd /etc/fastd/ff/bin ; php -f fastd-api.php). Es ist zu beachten, dass das Script zum Erstellen der Configs und reload des fastd entsprechende Berechtigungen benötigt. Der Daemon selbst wird über das Routing-Script im Screen gestartet und ist nicht als Systemdienst hinterlegt. 
 + 
 +Hinweis: Ggf. muss in der php.ini die Variable open_basedir ergänzt oder auskommentiert werden.
  
   * ERR: Inter Supernode VPN   * ERR: Inter Supernode VPN
Zeile 137: Zeile 152:
 } }
 </code> </code>
 +
 +dhcpd4 sollte automatisch starten
  
   * TODO: Feste IPs via API   * TODO: Feste IPs via API
Zeile 238: Zeile 255:
  
 </code> </code>
 +
 +DNS/BIND/named sollte als Systemdienst automatisch starten
  
   * ERR: Das ist für Master, wir bräuchten Multimaster oder Slaves   * ERR: Das ist für Master, wir bräuchten Multimaster oder Slaves
Zeile 324: Zeile 343:
 </code> </code>
 chmod +x nicht vergessen! chmod +x nicht vergessen!
 +
 +OpenVPN wird über das Routing-Script gestartet und ist nicht als Systemdienst hinterlegt.
 +
 +
 +==== Traffic-Statistik ====
 +
 +Um den Überblick zu behalten verwenden wir vnstat um Trafficstatistiken (nur Interface-Auslastung) zu sammeln.
 +
 +Nach der Installation müssen die Interfaces einmalig registriert werden
 +<code bash>
 +vnstat -u -i enp3s0
 +vnstat -u -i br-ffmyk
 +vnstat -u -i mullvad
 +</code>  
 +
 +Im Anschluss wird der Daemon vnstatd gestartet und als Systemdienst eingerichtet.
 +
 +  * TODO: Zentrales sammeln
  
 ==== Routing ==== ==== Routing ====
Zeile 329: Zeile 366:
 Beim Start des Servers sollte ein Script die grundlegende Konfiguration durchführen. Dies beinhaltet u.A. die Einrichtung der Routingtablellen und Netzwerkbrücken. Beim Start des Servers sollte ein Script die grundlegende Konfiguration durchführen. Dies beinhaltet u.A. die Einrichtung der Routingtablellen und Netzwerkbrücken.
  
-[[MAC-Adressen|MAC-Adresse]] aus der Liste wählen - diese wird genutzt um das Gerät in der Map als Gateway zu identifizieren+[[MAC-Adressen|MAC-Adresse]] aus der Liste wählen - diese wird genutzt um das Gerät in der Map als Gateway zu identifizieren
 + 
 +Vor dem Ausführen des Scripts muss das Kernelmodul batman-adv geladen sein. 
 +<code bash /etc/modules-load.d/batman.conf> 
 +batman-adv 
 +</code> 
  
 <code bash init.sh> <code bash init.sh>
 # Fastd starten # Fastd starten
-screen -AmSd fastd fastd -c /etc/fastd/vpn/config --log-level debug+screen -AmSd fastd fastd -c /etc/fastd/ff/fastd.conf --log-level debug
  
 #Warten sodass fastd die devices sicher erstellt hat #Warten sodass fastd die devices sicher erstellt hat
 sleep 5 sleep 5
  
-#MAC-Adresse einrichten+#MAC-Adresse des VPN-Interface einrichten
 ip link set down address 02:FF:4D:59:4B:10 dev ffmyk-mesh-vpn ip link set down address 02:FF:4D:59:4B:10 dev ffmyk-mesh-vpn
 ip link set up dev ffmyk-mesh-vpn ip link set up dev ffmyk-mesh-vpn
  
 +#VPN-Interface als B.A.T.M.A.N.-Device einrichten
 batctl if add ffmyk-mesh-vpn batctl if add ffmyk-mesh-vpn
 +
 +#Server-Modus (=kann Broadcast empfangen, für DHCP)
 batctl gw server batctl gw server
 +
 +#Intervall der Originator-Beacons
 batctl it 10000 batctl it 10000
 +
 +#B.A.T.M.A.N-Interface einschalten
 ip link set up dev bat0 ip link set up dev bat0
  
 +#Netzwerkbrücke einrichten und B.A.T.M.A.N-Interface hinzufügen
 brctl addbr br-ffmyk brctl addbr br-ffmyk
 brctl addif br-ffmyk bat0 brctl addif br-ffmyk bat0
- 
 ip link set up dev br-ffmyk ip link set up dev br-ffmyk
  
-ip addr add 10.222.100.1/16 dev br-ffmyk +#IPs vergeben 
-ip addr add 2a01:198:70a:ff::100:1/64 dev br-ffmyk+ip addr add 10.222.xxx.xxx/16 dev br-ffmyk 
 +ip addr add 2a01:198:70a:ff::xxx:xxx/64 dev br-ffmyk
  
 #Nur Stat-Server #Nur Stat-Server
-screen -AmSd alfred alfred -i br-ffmyk -b bat0 -m +#screen -AmSd alfred alfred -i br-ffmyk -b bat0 -m 
-screen -AmSd batadv-vis batadv-vis -i bat0 -s+#screen -AmSd batadv-vis batadv-vis -i bat0 -s
  
 +#Hop-Penalty soll den Nodes Mesh-Verbindungen schmackhafter machen - normal würde VPN wegen geringerem Packet-Loss immer bevorzugt
 echo 128 > /sys/class/net/bat0/mesh/hop_penalty echo 128 > /sys/class/net/bat0/mesh/hop_penalty
  
 +#IP-Forwardung wäre für Router hilfreich…
 sysctl -w net.ipv4.ip_forward=1 sysctl -w net.ipv4.ip_forward=1
  
 +#OpenVPN starten
 systemctl start openvpn@mullvad systemctl start openvpn@mullvad
  
 +#Routing  umbiegen - alles was über br-ffmyk rein kommt wird als 0x1 markiert
 iptables -t mangle -A PREROUTING -i br-ffmyk -j MARK --set-xmark 0x1/0xffffffff iptables -t mangle -A PREROUTING -i br-ffmyk -j MARK --set-xmark 0x1/0xffffffff
 +
 +#Alles auf dem Interface mullvad (via OpenVPN) macht NAT-Masquerading
 iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADE iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADE
  
 +#Routingtabelle 42 (==Freifunk) ist per default nicht erreichbar
 ip route add unreachable default table 42 ip route add unreachable default table 42
 +
 +#Alles, was mit 0x1 markiert wird gehört zu Tabelle 42
 ip rule add from all fwmark 0x1 table 42 ip rule add from all fwmark 0x1 table 42
 +
 +#Alles mit Freifunk-IP - woher auch immer - gehlrt zu Tabelle 42
 ip rule add from 10.222.0.0/16 table 42 ip rule add from 10.222.0.0/16 table 42
 +
 +#Tabelle 42 routet das Ziel mit Freifunk-IPs über das Device br-ffmyk
 ip route add 10.222.0.0/16 dev br-ffmyk table 42 ip route add 10.222.0.0/16 dev br-ffmyk table 42
  
 +#DHCP brauch bei neu auftauchenden devices (start fastd) einen restart
 systemctl restart dhcpd4  systemctl restart dhcpd4 
 </code> </code>
- 
- 
  
 ---- ----
gatewaykonfiguration.1426104802.txt.gz · Zuletzt geändert: 2020/10/17 20:04 (Externe Bearbeitung)