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 sindhost_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 sindansible-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
- Host ins Inventar adden
hosts.yml
- Fastd-keys generieren
host-vars/<gateway>
von einem anderen kopieren und Variablen anpassen (secret-keys mitansible-vault encrypt-string
verschlüsseln)- gw-vpn peer-file erstellen.
roles/base/files/mesh-gwvpn/gateways/<gateway>
- SSH-Key für
root
auf gateway erstellen und ins fastd-key-repo als “deploy-key” hinzufügen - 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)
- vorher einmal
- 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.