Freifunk-Gateway aufsetzen/DHCP: Unterschied zwischen den Versionen

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
Zeile 44: Zeile 44:
Nun kann für jede Hood noch eine systemd Service angelegt werden.
Nun kann für jede Hood noch eine systemd Service angelegt werden.


/etc/systemd/system/dnsmasqbat0.service
/etc/systemd/system/nuernberg-dns.service
<pre>
<pre>
[Unit]
[Unit]

Version vom 23. Juni 2019, 19:27 Uhr

Funktion

Ein DHCP Server wird benötigt damit IPv4 Adressen in der Hood vergeben werden können. Es können hier verschiedene Systeme verwendet werden. Aus gründen der Datensparsamkeit sollte man das logging soweit wie möglich abstellen und nur wirklich techn. zwingende Daten speichern.

Der DHCP Server muss auf das Batman Interface arbeiten, falls eine Bridge verwendet wird auf der Bridge. IP Adressen müssen hier https://wiki.freifunk-franken.de/w/Portal:Netz reserviert werden.

Die DHCP Konfiguration kann schon mal vorbereitet werden, sollte aber erst mit als vorletzter Schritt scharf geschaltet werden. Ein DHCP-Server, der Clients nicht funktionierende DNS-Server oder ein nicht funktionierendes Gateway mitteilt, sperrt diese aus dem Freifunk Netz aus. Daher hier bitte acht geben!

dnsmasq

Installation

Einfach aus den Paketquellen installieren z.b.

apt-get install dnsmasq

Konfiguration

zuerst die default systemd Unit deaktivieren

systemctl stop dnsmasq
systemctl disable dnsmasq

Globale Optionen

Danach kann man einige globale Optionen in /etc/dnsmasq.d/dhcp.conf

quiet-dhcp
bind-interfaces
dhcp-authoritative
dhcp-option=6,10.83.252.11,10.83.252.31,10.50.252.0
domain=fff.community

quiet-dhcp stellt das Logging ab. dhcp-option=6,.. setzt die DNS-Server, die an den Client gesendet werden.

DNS-Funktionalität abschalten

Außerdem sollte die DNS-Funktionalität in /etc/dnsmasq.d/disable-dns.conf vollständig abgeschaltet werden.

port=0

Hoodspezifische Einstellungen

Nun kann für jede Hood noch eine systemd Service angelegt werden.

/etc/systemd/system/nuernberg-dns.service

[Unit]
Requires=network.target
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=20

ExecStart=/usr/sbin/dnsmasq -k --conf-dir=/etc/dnsmasq.d,*.conf --interface batX --dhcp-range=10.83.xx.1,10.83.xx.127,255.255.xxx.0,20m --pid-file=/var/run/dhcp-bat-nuernberg.pid --dhcp-leasefile=/var/lib/misc/bat-nuernberg.leases

[Install]
WantedBy=multi-user.target
  • -k behält dnsmasq im Vordergrund, was für systemd bequemer ist (in Kombination mit Type=simple)
  • --interface setzt das Interface, auf dem der DHCP-Server laufen soll.
  • --dhcp-range setzt die DHCP-Range. Die Angabe erfolgt in <von>,<bis>,<Netzmaske>,<Leasetime>
    • Bei neueren Batman-adv Versionen wird die Netzmaske automatisch ermittelt, wenn die Option weggelassen wird
    • Bei älteren Versionen ist ein Bug, daher fällt dnsmasq auf den Standard für die IP-Range (255.0.0.0 bei 10.0.0.0/8) zurück.
  • pid-file und dhcp-leasefile müssen für jede Hood eindeutig sein


Anschliesend den neuen Service registrieren und starten:

systemctl daemon-reload
systemctl enable dnsmasqbat0.service
systemctl start dnsmasqbat0.service 

Voteile gegenüber ISC-DHCP

+ schlanker
+ lässt sich besser per Script konfigurieren
+ Loggt deutlich weniger Kram per Default mit
+ DHCP Leases werden nur solange behalten, wie technisch unbedingt nötig
+ Man kann sehr schön pro Hood eine eigene Instanz laufen lassen und muss so bei Änderung nicht immer das komplette DHCP neu starten.

ISC-DHCP-Server

Es ist sehr schwierig, bei diesem Server das Logging der Mac Adressen abzuschalten. Daher wird dessen Einsatz nicht empfohlen