Freifunk Lübeck

Gateways

Gateways

gw04 (muhlentor) gw03 (kaisertor) gw02 (huextertor) holstentor
Kontakt: FFHH FFHH FFOH (netcup) johnyb (hetzner)
Ip:
Ip/external/v4: 193.96.224.242 193.96.224.228 185.163.119.235 5.9.153.153
Ip/external/v6: 2a03:2267:ffff:a00::ff41 2a03:2267:ffff:c00::d 2a03:4000:3b:53c:a4d4:5dff:fee7:d0e0 2a01:4f8:190:4190::3007:1
Domain:
Domain/external muehlentor.mesh.ffhl.chaotikum.org kaisertor.mesh.ffhl.chaotikum.org huextertor.mesh.ffhl.chaotikum.org holstentor.mesh.ffhl.chaotikum.org
Domain/internal muehlentor.ffhl.de kaisertor.ffhl.de huextertor.ffhl.de holstentor.ffhl.de
DNS-auth-server

Übersicht

Eine kurze Ubersicht, welche Ordner/Dateien was machen

  • group vars/all.yml: Hier sind Variable definiert, die für all Hosts gültig sind
  • host_vars/<gateway>.yml: spezifische Variablen für einen Host. Z.B. DHCP-Bereich. Außerdem sind hier Variablen, die für eine Role benutzt werden, defniniert.
  • hosts.yml: eine Liste von Hosts. Hosts sind außerdem in einer Gruppe. Die Gruppe heißt i.d.R. ‘gateways`. Theoretisch können hier auch direkt Variablen für einen Host definiert werden. Das machen wir aber nicht. Wir definieren hier Variable für Gruppen.
  • roles/*: Hier liegen die Konfigurationen für die Roles. Die Role ‘base’ setzt für uns ein Gateway auf.
  • playbook. yml: die eigentliche Konfigurationsdatei. Hier steht, welche Hosts/Gruppen welche Rollen bekommen.

Ein paar nützliche Befehle:

  • ansible-playbook playbook.yml --list-hosts
  • ansible-playbook playbook.yml --list-tags
  • ansible-playbook playbook.yml --list-tasks
  • ansible-playbook playbook.yml --list-tasks --tag powerdns: zeigt alle tasks, die mit dem Tag powerdns versehen sind
  • ansible-playbook --step playbook.yml: wie im debugger durch die tasks steppen

Setup

Die Gateways werden mit einem ansible-playbook aufgesetzt.

Connectivity testen:

ansible -m ping all

ansible facts anzeigen:

ansible -m setup all

Ansible Checklist

  1. Host ins Inventar adden hosts.yml
  2. Fastd-keys generieren
  3. host-vars/<gateway> von einem anderen kopieren und Variablen anpassen (secret-keys mit ansible-vault encrypt-string verschlüsseln)
  4. gw-vpn peer-file erstellen. roles/base/files/mesh-gwvpn/gateways/<gateway>
  5. SSH-Key für root auf gateway erstellen und ins fastd-key-repo als “deploy-key” hinzufügen
  6. ansible scripts NUR FÜR DEN NEUEN GATEWAY laufen lassen. ansible-playbook [...] -l <gw>
    • vorher einmal ansible -m ping all und
    • ansible-playbook my-playbook.yml --check (da kann was failen weil configs und pakete einfach noch nicht da. grob schauen ob das der Fall ist)
  7. reboot! (and check if everything is okay)

Bird

Wenn die bird confg geändert wird kann sie auf alle gateways synchronisiert werden:

ansible-playbook playbook.yml -v --diff --tags bird

Damit werden die bird Instanzen auch neu gestartet.

MAC Adress Schema

MAC Adressen auf Gateways sollten nach einem festen Schema aufgebaut werden. Ziel ist es, schnell und einfach anhand der MAC Adresse erkennen zu koennen, um welchen Gateway/Server es sich handelt. Schema:

de:ad:ca:fe:<gateway>:<iface-type>

<Gateway> kann frei gewahlt werden, sollte aber auf dem ganzen Gateway konsistent verwendet werden. Es bietet sich an, Werte wie aa, cc, etc. zu verwenden. <iface-type> ist der Identifier fuer ein entsprechendes Interface. Das tatsaechlich im Netzwerk sichtbare Interface (meistens eine Bridge) soll dabei aa als Wert haben.

Dienste