Freifunk-Gateway aufsetzen/DHCP

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

DHCP Server

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!

ISC-DHCP-Server

In isc-dhcp-server definieren wir ... vi /etc/default/isc-dhcp-server

... das der DHCP Server für das B.A.T.M.A.N Device Anfragen beantworten soll:

.
.

INTERFACES="bat0"
.
.

Nachfolge Konfiguration wird in auskommentierter Form vorbereitet und sollte erst im letzten Schritt durch Einkommentieren und durch einen Neustart des DHCP Servers... /etc/init.d/isc-dhcp-server restart ...aktiviert werden.

Die Konfiguration wird in dhcpd.conf vorgenommen: vi /etc/dhcp/dhcpd.conf

und folgender Konfigurationsblock zunächst auskommentiert eingefügt, wobei Gateway und Hood spezifische Änderungen noch eingepflegt werden müssen:

.
.
.
### Freifunk Franken
#option domain-name "fff.community";
#option domain-name-servers 10.50.16.1;
#authoritative;
### Fuerth
#shared-network fff-fuerth {
#    subnet 10.50.32.0 netmask 255.255.248.0 {                  # Netzwerk und Netzmaske der Fuerther Hood
#        range 10.50.38.0 10.50.39.254;                     # IP-Range die der DHCP-Server innerhalb der Fuerther Hood verwaltet 
#        option routers 10.50.32.5;                         # Default-Gateway, dass Clients mitgeteilt wird 
#        option domain-name-servers 10.50.32.5, 10.50.32.1; # Name-Server, die Clients mitgeteilt werden
#    }
#}

Netzwerk und Netzmaske müssen derjenigen der Hood des Gateways entsprechen. Im Beispiel ist dies Fürth, für z.B. Hassberge hieße der Eintrag "subnet 10.50.56.0 netmask 255.255.252.0".

Der IP-Bereich (Range), die der DHCP-Server in der Hood verwaltet, wurde zuvor unter Portal:Netz reserviert.

Unter Routers wird den Clients das Default-Gateway mitgeteilt: Das Gateway, über das Clients das Internet oder eine andere Hood erreichen. In unserem Beispiel routet das aufgesetzte Gateway selber via VPN ins Internet oder via olsr (später) in andere Hoods. Als Default-Gateway wird also die eigene statische IP des Gateways, aus der eigenen Hood, die in Portal:Netz reserviert wurde, verwendet.

Ähnlich verhält es sich mit den Nameservern: Auf unserem Gateway wurde ein DNS Server eingerichtet, also kann der domain-name-server unser eigenes Gateway, mit der reservierten statische IP aus der Hood, wie in Portal:Netz, sein. Als Backup empfiehlt sich ein weiterer DNS-Server aus der Hood, in unserem Beispiel ro1 in der Fürther.

dnsmasq

Es kann als DHCP Server auch der dnsmasq verwendet werden.

Installation

Einfach aus den Paketquellen installieren z.b.

apt-get install dnsmasq

Konfiguration

zuerst die alte systemd Unit deaktivieren

systemctl stop dnsmasq
systemctl disable dnsmasq

Danach folgende Konfigartion anlegen

/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

/etc/dnsmasq.d/disable-dns.conf

port=0

hiermit werden die Daten angelegt die für jede Hood gleich sind, z.b. die DNS Server eingetragen oder die DNS Funktion deaktiviert.

Nun kann für jede Hood noch eine systemd File angelegt werden z.b.:

/etc/systemd/system/dnsmasqbat0.service

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

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

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-batX.pid --dhcp-leasefile=/var/lib/misc/batX.leases

[Install]
WantedBy=multi-user.target

Vor & Nachteile

Vorteile

  • schlanker
  • lässt sich besser per Script konfigurieren
  • man muss ihn nicht umständlich abgewöhnen die Logs vollzumüllen
  • loggt deutlich weniger kram 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 machen.

Nachteil

  • Ich kenne keins...