Compare commits

...

213 Commits

Author SHA1 Message Date
Gregor Michels eadcf6f296 monitoring: extend ifInErrors alert to non-snmp devices
also automatically clear alarm after 2 hours because linux devices have
no way to clear the nic error counters
2023-04-18 21:00:04 +02:00
Gregor Michels 7de03e6cd6 add incident 045 about a fibre cut in ANS 2023-04-18 20:54:38 +02:00
Gregor Michels 4904933475 add incident 44 about a broken gigacube 2023-04-18 20:51:48 +02:00
Gregor Michels 2299e3aff1 monitoring: make summary and description for snmp alarms more verbose 2023-03-23 00:07:23 +01:00
Gregor Michels d1c1f34bf8 monitoring: alert on snmp if{In,Out}Errors 2023-03-22 23:53:39 +01:00
Gregor Michels 14df3e24df gw-core01: fix broken mgmt tunnel 2023-03-22 23:26:03 +01:00
Gregor Michels d7206111fa incidents: add 042 and 043 2023-03-22 23:07:40 +01:00
Gregor Michels e5a0e2352d documentation: add first draft of ANS diagram 2023-03-14 02:13:28 +01:00
Gregor Michels 509f56e167 add pw for new hardware offloader (ffl node id 1669) (for ans) 2023-03-08 00:32:33 +01:00
Gregor Michels 1171e76cd7 incidents: add 035 - 040
was sitting on them a long time...
2023-03-08 00:29:05 +01:00
Gregor Michels a236643969 gw-core01: fix dns issues
gigacube could not handle amount of dns queries.

* move dns to quad9 and cloudflare
* increase size of dns cache
* increase amount of concurrent dns queries
2023-03-08 00:11:54 +01:00
Gregor Michels 191b7f2a77 rgs wifi: improve RSSI for clients by increasing tx power 2023-03-08 00:03:54 +01:00
Gregor Michels b621e8dd48 grafana: put airtime into overview dashboard 2023-03-08 00:02:37 +01:00
Gregor Michels 01c9fa2317 accesspoints: expose airtime information 2023-03-07 23:59:58 +01:00
Gregor Michels 23dba0c340 inventory: append location information to every switch 2023-03-07 23:59:04 +01:00
Gregor Michels eaeb360e6c inventory: give sw-access04 a site 2023-03-07 23:46:05 +01:00
Gregor Michels 72df3338d3 monitoring: nice labels for openwrt switches
* keep instance label
* add site and location labels
2023-03-07 23:44:19 +01:00
Gregor Michels 8fa87485ff monitoring: nice instance labels for snmp switches 2023-03-07 23:43:44 +01:00
Gregor Michels 220bb149c8 adp: add temporary access switch sw-access04 2023-03-07 23:40:37 +01:00
Gregor Michels 7b452966d2 ffl-ans-gw-core01: prepare eth2 and eth3 for hardware ffl offloader
eth2: WAN
eth3: CLIENTS
2023-03-07 23:33:48 +01:00
Gregor Michels 68ee430145 gw-core01: change mullvad account 2023-03-07 23:24:01 +01:00
Gregor Michels 3e7178b5ec grafana: accomodations overview: dynamically build site list 2023-01-18 01:20:50 +01:00
Gregor Michels 473d7aa05a sax-rgs-gw-core01: add laundering client network
v4 works, v6 is still a work in progress

launder:
* v4 through mullvad
* v6 through mowoe
2023-01-18 00:35:25 +01:00
Gregor Michels c7989547aa sax-rgs-gw-core01: network fix indentation in backoffice config 2023-01-18 00:34:18 +01:00
Gregor Michels 767f76e13e sax-rgs-gw-core01: firewall allow ping (v4/6) from everywhere 2023-01-18 00:15:12 +01:00
Gregor Michels fe220194f9 sax-rgs-gw-core01: configure port for backoffice printer 2023-01-18 00:09:52 +01:00
Gregor Michels 2962a08be7 sax-rgs-gw-core01: bump fw to latest version 2023-01-17 23:54:07 +01:00
Gregor Michels 77454046b8 sax-rgs-gw-core01: configure backbone 2023-01-17 23:54:07 +01:00
Gregor Michels a837a2b916 playbook_provision_backbone: configure backbone for sax-rgs-gw-core01 2023-01-17 23:54:07 +01:00
Gregor Michels e3793d07a8 pass: add wireguard keys for sax-rgs-gw-core01 backbone 2023-01-17 23:54:07 +01:00
Gregor Michels fe8d3b5dec sax-rgs-gw-core01: add config tree 2023-01-17 23:54:07 +01:00
Gregor Michels 3ec08cb017 rgs: add gateway 'sax-rgs-gw-core01' 2023-01-17 23:53:58 +01:00
Gregor Michels 67db4a7521 site rgs: add accesspoints 2023-01-17 23:52:53 +01:00
Gregor Michels bdc70d629b rgs: add switches sax-rgs-sw-access0{1-2} 2023-01-17 23:50:49 +01:00
Gregor Michels a23c6dc488 rgs: add wifi information 2023-01-17 23:50:49 +01:00
Gregor Michels e750db6783 add new site 'rgs' 2023-01-17 23:50:49 +01:00
Gregor Michels 2d74d25dfc accesspoints: add new type aruba-ap-303 2023-01-17 23:50:49 +01:00
Gregor Michels 718bdb4594 accesspoints: generify wifi config
be able to support different ap hardware (wifi wise)
2023-01-17 23:50:49 +01:00
Gregor Michels 0edf72cb66 accesspoints: add option to skip wifi (and network) reconf 2023-01-17 23:50:40 +01:00
Gregor Michels c40e49d645 playbook_create_switch_configs_stock: add config template for s2800s-8t2f-p from fs.com 2023-01-10 02:38:31 +01:00
Gregor Michels 6524149a48 playbook_create_switch_configs_stock: prepare for other stock firmwares 2023-01-10 02:38:31 +01:00
Gregor Michels ea1cf9dc43 playbook_sysupgrade: fix fatal error on local connections
issuing a "sysupgrade" through a jumphost makes ansible raise an
"unrechable" error.

issuing a "sysupgrade" through a direct connection makes ansible raise
an "fatal" error.

Because the latter case was not properly delt with the playbook aborted
for that specific device. This commit fixes this problem.
2023-01-10 02:37:54 +01:00
Gregor Michels f832189278 gateways: move some configs into base
* system
* lldpd
* prometheus-node-exporter-lua
* frr: daemons
2023-01-10 00:54:27 +01:00
Gregor Michels 325e06cdc0 playbook_provision_gateway: add base file functionality
a file in "base" will be distributed to all gateways but can still be
overriden by a device specific file in $inventory_hostname.

This should enable some config sharing
2023-01-10 00:37:45 +01:00
Gregor Michels f806e83705 add incident 033 about someone unplugging the wrong plug 2023-01-08 22:56:44 +01:00
Gregor Michels 1a834de455 gateways: enable lldp 2023-01-08 06:28:47 +01:00
Gregor Michels 2d85ba5226 accesspoints: enable lldp 2023-01-08 05:58:50 +01:00
Gregor Michels d5617ce1e9 accesspoints: upgrade to OpenWrt 22.03 2023-01-08 05:44:17 +01:00
Gregor Michels dce505c762 playbook_sysupgrade: stringify garet_release
when garet_release only contains digets, playbook_sysupgrade compared
the string from the device itself against an integer from the inventory
always triggering an upgrade.

This should fix this corner case
2023-01-08 04:54:21 +01:00
Gregor Michels 26884f6d8d gateways: fix mismatch between inventory fw name and backed in fw name
for some reason i've misspelled the fw profile name for the two gateways
resulting in `playbook_sysupgrade` always wanting to upgrade the
firmware
2023-01-08 04:54:21 +01:00
Gregor Michels ff623aec65 playbook_provision_accesspoints: do not install wifi.lua via ansible
all aps are on firmware that ships with this file.
No need to let ansible install it again
2023-01-08 04:54:21 +01:00
Gregor Michels bd2dd8795e also add mowoe into the password manager
Fixes: 032937c7ea
2022-12-30 20:18:55 +01:00
Gregor Michels 032937c7ea add mowoe as a maintainer
welcome to the team :)
2022-12-30 20:00:47 +01:00
Gregor Michels b1a9e763ec README: update a few things 2022-12-30 19:54:46 +01:00
Gregor Michels e79bc30351 incident 032: document new ap in facility mgmt container 2022-12-30 19:20:09 +01:00
Gregor Michels 44a1e9613a adp: old facility management container is noẃ social work 2022-12-30 19:19:42 +01:00
Gregor Michels cdac15e466 adp: add new ap-1293
into the new facility management container
2022-12-30 17:57:10 +01:00
Gregor Michels e3d8369768 Revert "hotfix for adp: also emit backoffice wifi in tent 1"
This reverts commit d808775f39.
2022-12-29 15:38:24 +01:00
Gregor Michels 9afebe8438 add incident 031: adp enable backoffice wifi in tent 1 2022-12-23 16:18:11 +01:00
Gregor Michels d808775f39 hotfix for adp: also emit backoffice wifi in tent 1 2022-12-23 16:09:37 +01:00
Gregor Michels 0db1eb2c6a accesspoints: fix default dns and gateway
forgot to quote the ips

Fixes: bf1c7bd3ab
2022-12-23 16:06:15 +01:00
Gregor Michels 51a8de4299 ffl-ans-gw-core01: move offloader network hook into /usr/lib 2022-12-23 13:30:03 +01:00
Gregor Michels 1ea236b206 ffl-ans-gw-core01: finally put offloader vm setup into ansible 2022-12-23 13:22:38 +01:00
Gregor Michels a1870e78ba incident 030: fix formatting error
Fixes: 0bf94d10a2
2022-12-23 01:46:26 +01:00
Gregor Michels 0bf94d10a2 add incident 030: replace switches in ans 2022-12-23 01:45:29 +01:00
Gregor Michels ec0cfc908a add incident 029: ans create a service for the offloader vm 2022-12-23 01:39:26 +01:00
Gregor Michels fb901524ca incident 028: add disclaimer
Fixes: 9506e94dad
2022-12-23 01:30:07 +01:00
Gregor Michels 9506e94dad add incident 028: peridically restart prometheus on eae-adp-jump01 2022-12-23 01:28:30 +01:00
Gregor Michels 3e2fc42c19 incident 027: remembered that I also sysupgraded eae-adp-jump01
Fixes: 34e4fbf000
2022-12-23 01:27:00 +01:00
Gregor Michels 6d30cf07da incident 027: add disclaimer and fix typo
Fixes: 34e4fbf000
2022-12-23 01:19:41 +01:00
Gregor Michels 34e4fbf000 add incident 027: eae-adp-jump01 increase /var/prometheus to 20GB 2022-12-23 01:18:19 +01:00
Gregor Michels 35f48f1bad add incident 026: ans replace sfp modules 2022-12-23 01:13:32 +01:00
Gregor Michels 090b8b4709 add incident 025: ans steer clients into 5 GHz band 2022-12-23 01:12:37 +01:00
Gregor Michels 91918091ec Revert "incidents: add incident 025"
Wrongly commited all incidents, not only 025

This reverts commit 03e2543f95.
2022-12-23 01:10:01 +01:00
Gregor Michels 03e2543f95 incidents: add incident 025 2022-12-23 01:03:39 +01:00
Gregor Michels 0475923590 alerting: only alarm on devices that are unreachable for 1m at least 2022-12-22 16:37:15 +01:00
Gregor Michels 69834a8d2b alerting: also alert on reboots of snmp devices 2022-12-22 16:37:15 +01:00
Gregor Michels f6ba9f5aa6 ans: replace switches due to RMA 2022-12-02 00:58:46 +01:00
Gregor Michels c0f8ec9b6e monitoring: grafana: replace dashboard for adp with a generic one for the two camps 2022-11-23 01:06:00 +01:00
Gregor Michels 64721148d8 monitoring: default to "public" snmp community 2022-11-21 03:00:57 +01:00
Gregor Michels e3b111f2c7 monitoring: monitor switches in the ANS via snmp 2022-11-21 02:58:13 +01:00
Gregor Michels 5fa5b13da7 monitoring: install snmp_exporter 2022-11-21 02:56:59 +01:00
Gregor Michels 5017cb5dfb wifi ans: try to optimize channel selection for clients
inside tents:
* half transmit power in the 2,4GHz bands
* increase transmit power in the 5GHz bands by 1 dBm

this hopefully forces more clients into the 5 GHz bands
2022-11-19 03:47:24 +01:00
Gregor Michels d58b09272e wifi ans: fix channels for two aps
so they can actually transmit with 19dBm
2022-11-19 03:45:48 +01:00
Gregor Michels 9cfee1f384 monitoring: add alerting rules for disks running out of space 2022-11-19 01:58:14 +01:00
Gregor Michels dca1261f07 inventory: fix site for ffl-ans-gw-core01
Fixes: 4afda5bdd9
2022-11-19 01:48:11 +01:00
Gregor Michels ffb7617db8 monitoring: add 'location' info 2022-11-19 01:46:52 +01:00
Gregor Michels 8389a18488 monitoring: move prometheus stack onto eae-adp-jump01
to be able to also monitor the new site.

custom grafana dashboard broke while transfering stack.
will fix next
2022-11-17 00:35:57 +01:00
Gregor Michels 258355170b gw-core01: (adp) allow clients network to route into all other networks 2022-11-16 23:25:59 +01:00
Gregor Michels 74075f307f inventory: add site var 2022-11-16 23:17:07 +01:00
Gregor Michels d4b0e622ef gateways: fw: allow prometheus on backbone 2022-11-16 22:54:37 +01:00
Gregor Michels 2a781ae751 simply wifi password for the ans backoffice 2022-11-14 02:31:56 +01:00
Gregor Michels c058853f73 activate public wifi on ans 2022-11-14 02:20:51 +01:00
Gregor Michels b5fefed0be pass: add missing root passwords for newest aps in ans
Fixes: a4718616a9
2022-11-14 02:03:18 +01:00
Gregor Michels f791ad76ab accesspoints: expand backoffice wifis to all office locations 2022-11-14 01:59:22 +01:00
Gregor Michels 329b09bd9a wifi ans: shorten backoffice ssid
cause it was too long (>32 chars)
2022-11-14 01:58:46 +01:00
Gregor Michels bf1c7bd3ab accesspoints: fix gateway and dns for ans aps 2022-11-14 01:35:23 +01:00
Gregor Michels 1e82bcc6b9 accesspoins ans: define channels and transmit power 2022-11-14 01:24:29 +01:00
Gregor Michels ce15f497e7 inventory: correct site for new aps
Fixes: a4718616a9
2022-11-14 01:23:55 +01:00
Gregor Michels a4718616a9 installed remaining accesspoints on ANS 2022-11-13 19:34:05 +01:00
Gregor Michels 5337a22df1 installed a few more accesspoints on the ANS 2022-11-13 19:29:38 +01:00
Gregor Michels 8370f150a6 add lodrich as a maintainer 2022-11-12 21:48:27 +01:00
Gregor Michels e110320999 accesspoints: added toggle to disable public wifi
also disabled public wifi on ANS till offloader works
2022-11-12 21:38:27 +01:00
Gregor Michels 7244b53d6d inventory: installed the first aps in ANS 2022-11-12 21:37:52 +01:00
Gregor Michels ab2ab6601e pass: add pw for offloader for the ans (node 2135) 2022-11-12 03:06:14 +01:00
Gregor Michels 5f4430e4b8 fix typo: playbook_provision_eap -> playbook_provision_eae 2022-11-10 02:24:17 +01:00
Gregor Michels d780bdd4fb eae-adp-jump01: actually activate routing
Fixes: dbe8978987
2022-11-10 02:23:54 +01:00
Gregor Michels 82a50739b1 ffl-ans-gw-core01: activate backbone connection 2022-11-10 02:21:22 +01:00
Gregor Michels 3c69441681 fix wrong port for wg2
Fixes: 8d4fc76a81
2022-11-10 02:20:44 +01:00
Gregor Michels 8d4fc76a81 playbook_provision_backbone: configure backbone for ffl-ans-gw-core01 2022-11-10 02:06:52 +01:00
Gregor Michels e9e0b07230 pass: add wireguard keys for ffl-ans-gw-core01 backbone 2022-11-10 02:05:49 +01:00
Gregor Michels 4afda5bdd9 add ffl-ans-gw-core01 2022-11-10 01:57:56 +01:00
Gregor Michels 1579bbdd47 pass: add root pw for ffl-ans-gw-core01 2022-11-10 01:48:13 +01:00
Gregor Michels 02115216d6 playbook_provision_gateway: move config files into host specific dir 2022-11-10 01:30:26 +01:00
Gregor Michels 2cc3c9457a new playbook: playbook_create_switch_configs_stock for ans
creates local configs files for the stock firmware on the zyxel switches

assumes that all switches have the same config (except admin pw and ip)
2022-11-10 00:29:44 +01:00
Gregor Michels 61c1255e64 inventory: add switches (with stock firmware) for ans 2022-11-10 00:24:07 +01:00
Gregor Michels e2be3c1c2d pass: add snmp community (for ans switches) 2022-11-10 00:17:33 +01:00
Gregor Michels 13ea6beabc pass: add passwords for ans switches 2022-11-10 00:17:14 +01:00
Gregor Michels ad46726773 inventory: fix copy pasta error for new aps
Fixes: 0e3ff8b22f
2022-11-09 00:37:15 +01:00
Gregor Michels d732b5c1bd pass: add root passwords for the new aps on ans 2022-11-09 00:27:59 +01:00
Gregor Michels 3a03ff7cdd wifi: site specific settings 2022-11-09 00:21:17 +01:00
Gregor Michels f7827b6fd9 inventory: sort hosts into sites 2022-11-09 00:20:27 +01:00
Gregor Michels a1a92d66cc inventory: correct aps for ans 2022-11-09 00:19:46 +01:00
Gregor Michels 421cb9ab18 pass: create wifi password for Arno-Nitzsche-Straße Backoffice 2022-11-09 00:07:45 +01:00
Gregor Michels 0e3ff8b22f wip: add new aps for different site into inventory 2022-11-08 21:42:11 +01:00
Gregor Michels a038b5e5ff move switches into the correct timezone 2022-11-03 00:18:39 +01:00
Gregor Michels 166a2d33b8 new playbook 'playbook_provision_switches'
to finally provision switches via ansible.

Because we cannot fit python onto the switches we are using the awesome
ansible module/role from gekmihesg to still be able to automate this :)

https://github.com/gekmihesg/ansible-openwrt
2022-11-03 00:15:05 +01:00
Gregor Michels 4a784df86c add submodule "gekmihesg.openwrt"
to be able to provision the switches (sadly not enough rom for python)
2022-11-03 00:07:31 +01:00
Gregor Michels aa8e746faf playbook_sysupgrade.yml: add empty firmware directory into vcs
Fixes: a9429b661a
2022-11-02 23:53:07 +01:00
Gregor Michels 8e44051abd incident 024: include openwrt version header 2022-10-24 02:37:16 +02:00
Gregor Michels c4d329fd49 correct hardware overview for gw-core01
since the "big" replacement of gw-core01 the device itself and the mac
changed.

Fixes: 0e838e7dc1
2022-10-24 02:25:58 +02:00
Gregor Michels 492c343af2 correct gigacube doc and pw entry
after Vodafone expired theire free tier for refugee camps the camp
received a different gigacube
2022-10-24 02:21:04 +02:00
Gregor Michels 54b8fdd7f2 incident 024: also upgrade gw-core01
Fixes: a030383fb8
2022-10-24 01:50:45 +02:00
Gregor Michels 59b841850d gateways: define garet profile and release 2022-10-24 01:41:22 +02:00
Gregor Michels 01abb9c160 playbook_sysupgrade: extend fw upgrade automation onto gateways 2022-10-24 01:40:41 +02:00
Gregor Michels a030383fb8 incidents: add maintenance incident 024 about fw upgrades on aps 2022-10-24 00:55:04 +02:00
Gregor Michels 8d79518516 accesspoints: pin fw to garet aruba-ap-105_21.02 (845a6ba) 2022-10-24 00:34:30 +02:00
Gregor Michels a9429b661a playbook_sysupgrade: make idempotent
only issue a sysupgrade if the desired garet version and profile
specified in the inventory does not match the firmware running on the
device.

Because we do not put the firmware files into this git, simply
clone the garet repo, checkout the desired commit, build the needed
profile and then put the firmware file into
  firmware/garet_${profile}-${version}.bin
2022-10-24 00:25:18 +02:00
Gregor Michels c51e5e438a incidents: add incident 023 about broken public wifi 2022-10-19 02:13:35 +02:00
Gregor Michels ec917a24c6 monitoring: add alarm "PublicWifiUpstreamLost" 2022-10-19 02:05:32 +02:00
Gregor Michels df6a5a93ef monitoring: remove non-dns e2e test 2022-10-19 02:01:08 +02:00
Gregor Michels 466fefeb8d gw-core01: reenable traffic laundering for the public wifi
Fixes: 6297531dfd
2022-10-19 01:47:30 +02:00
Gregor Michels 6297531dfd gw-core01: temporarily disable traffic laundering for the public wifi
because the vpn connection stopped handshaking yesterday
2022-10-18 12:58:19 +02:00
Gregor Michels bb9f502eb9 accesspoints: limit backoffice wifi to aps inside office containers 2022-10-11 01:29:49 +02:00
Gregor Michels 7d4d297ef5 inventory: add location information to accesspoints 2022-10-11 01:29:49 +02:00
Gregor Michels 46d02e4822 todo: mark incident 022 as done
Fixes: 9313dc32ff
2022-10-11 00:56:47 +02:00
Gregor Michels 9313dc32ff incidents: add maintenance incident 022 about directional lte antenna 2022-10-11 00:50:39 +02:00
Gregor Michels 5cc5c8e81d todo: mark `incident 21` as done
Fixes: 0e838e7dc1
2022-10-11 00:48:30 +02:00
Gregor Michels 0e838e7dc1 incidents: add maintenance incident 021 - replace gw-core01 2022-10-10 23:17:05 +02:00
Gregor Michels f83792749e update todos 2022-10-08 16:42:02 +02:00
Gregor Michels 71965a2412 gw-core01: increase mtu of launder vpn (used for the public wifi)
apparently the LTE connection on site actually get's an MTU of 1500

`traceroute -n --mtu <destination>` confirmed that
2022-10-01 23:30:46 +02:00
Gregor Michels 05228f19cf gw-core01: persist dhcp leases
/etc/dhcp.leases is not saved with `sysupgrade -b`
2022-10-01 20:47:01 +02:00
Gregor Michels bd42961a8c playbook_provision_accesspoints: remove unnecessary statements
since 836436e all aps run on firmware with the correct packages
2022-10-01 20:34:49 +02:00
Gregor Michels e7054c1b64 gw-core01: prepare configs for platform change
replace `Ubiquiti EdgeRouter X` with an `Sophos SG-125r2`
2022-09-28 01:54:16 +02:00
Gregor Michels 03e2986f7b playbook_create_ssh_config: fix indentation of 'ProxyJump' 2022-09-28 00:49:10 +02:00
Gregor Michels c4b282d7fb playbook_distribute_authorized_keys: also set root pw on gw and aps 2022-09-28 00:47:14 +02:00
Gregor Michels 836436e625 incidents: (maintenance) add incident 020 about ap firmware upgrades 2022-09-28 00:40:12 +02:00
Gregor Michels 87e7767ea5 incidents: add incident 019 about broken ssh on ap-0b99 2022-09-27 23:55:16 +02:00
Gregor Michels 2db141ea4b incidents: add incident 018 concerning power outages
in the facility management container
2022-09-27 23:41:22 +02:00
Gregor Michels 9580723103 documentation: fix typos
Fixes: 4a82e9fe69
2022-09-27 22:32:24 +02:00
Gregor Michels 4a82e9fe69 incident 017: close
* fixed instabilities by installing an ap into the social work container
* also installed an access switch for direct ethernet connections
2022-09-27 22:28:24 +02:00
Gregor Michels b20538efaf documentation: fix mac of `ap-1a38` 2022-09-27 18:38:54 +02:00
Gregor Michels 3664b97ab1 accesspoints: fix timezone 2022-09-26 01:25:20 +02:00
Gregor Michels c311163884 playbook_provision_accesspoints: change vcs layout
* replace whole config files (instead of adding lines to existing files)
* move config tree beneath `templates/accesspoints`
* just like `gw-core01`
2022-09-26 00:59:49 +02:00
Gregor Michels c00669664e gw-core01: fix timezone 2022-09-26 00:34:07 +02:00
Gregor Michels 0084c1a742 playbook_provision_backbone: remove tunnel configuration for gw-core01
because that is already handled by `playbook_provision_gateway`
2022-09-26 00:34:07 +02:00
Gregor Michels 5461ae6e93 new playbook 'playbook_provision_gateway.yml'
finally move configuration of `gw-core01` into vcs
2022-09-26 00:34:06 +02:00
Gregor Michels cc7a94127d add new ap-ac7c
documentation will follow soon
2022-09-26 00:34:06 +02:00
Gregor Michels 60dcef23b7 limit txpower of ap-c5d1 2022-09-26 00:34:06 +02:00
Gregor Michels 6bcefd4955 incident 017: add another icmp probe `mon-e2e-wan01` 2022-09-15 02:02:22 +02:00
Gregor Michels e1152c28a0 incidents: add 017 about instability of the network 2022-09-15 01:13:27 +02:00
Gregor Michels 9c5675cbf7 incidents: add 016 power outages on site 2022-09-15 00:48:26 +02:00
Gregor Michels a3a9fdaa74 incident: create incident 015
switched gw-core01 back to the original hardware
2022-09-15 00:18:18 +02:00
Gregor Michels 01c3d3f300 grafana: filter jobs for `available devices` widget on public dashboard
ie. hiding the new blackbox jobs

also correct threshold for vms on `available devices` widget
2022-09-14 03:46:29 +02:00
Gregor Michels c9843a4cdd inventory: use /tmp as a the temporary dir on openwrt devices
* increases speed (in theory)
* conserve write cycles on the flash
2022-09-14 03:27:20 +02:00
Gregor Michels f0115625f6 monitoring: add end to end tests to monitor internet reachability
via imcp (blackbox exporter)

There are two exporters.
One lives inside `monitoring01` and uses the "normal" route into the
internet without a vpn (job: `e2e_default_v4`).

The other one lives inside `mon-e2e-clients01` and routes into the
internet via the vpn (job: `e2e_clients_v4`).
2022-09-14 03:12:22 +02:00
Gregor Michels 60e57af853 hypervisor: create new container "mon-e2e-clients01"
* lives inside the public network
* configured static lease on `gw-core01` for `mon-e2e-clients01`
* because of the policy-based-routing `mon-e2e-clients01` is not able to
  route into other network than the internet/wan. Jump via `gw-core01`
  if you want to reach this container
2022-09-14 03:11:05 +02:00
Gregor Michels bbfc548e23 rename playbook_provision_hyper01 -> playbook_provision_hypervisor 2022-09-14 03:01:41 +02:00
Gregor Michels 10d8e0133e monitoring: rollout node exporters on new inventory group "container"
Fixes: e350445a4b
2022-09-14 02:59:48 +02:00
Gregor Michels e539d6c36f pass: move container credentials into own folder 2022-09-14 02:58:42 +02:00
Gregor Michels e350445a4b playbook_provision_hyper01: generify playbook
now we read the containers to create dynamically from the inventory
2022-09-14 02:56:05 +02:00
Gregor Michels 24a31603ef monitoring: move node exporter installation into single task 2022-09-14 02:26:27 +02:00
Gregor Michels 6623cc0e09 monitoring: alert on node reboots 2022-09-14 02:16:15 +02:00
Gregor Michels 79d46e3100 add `ap-8f38`
also document mullvad vpn tunnel
2022-09-09 02:07:13 +02:00
Gregor Michels dfab9afcde update incident log
* update 012
* create 013 - 015
2022-09-09 01:50:22 +02:00
Gregor Michels 67ebf9b9bb monitoring: automagically provision grafana 2022-09-04 18:56:20 +02:00
Gregor Michels 6e108868cb incident 012: still not fixed after power supply replacement 2022-09-04 15:23:16 +02:00
Gregor Michels b57200bd6c incidents: add 012 about the ongoing random reboots of gw-core01 2022-09-02 22:05:25 +02:00
Gregor Michels b5698a6c90 incident 009: document traffic laundering 2022-09-01 16:32:13 +02:00
Gregor Michels 5349baa100 incident 011: update to inform about long term solution 2022-09-01 13:11:25 +02:00
Gregor Michels d57b0ae362 incidents: add incidents 009 till 011 2022-09-01 13:06:15 +02:00
Gregor Michels 1d01fa7020 incidents: clean up 008
Fixes: b96fa8542c
2022-08-22 15:56:40 +02:00
Gregor Michels b96fa8542c add backoffice wifi 2022-08-22 15:53:37 +02:00
Gregor Michels dc5be9eacf documentation: fix IPAM typo for client v4 space 2022-08-21 22:23:30 +02:00
Gregor Michels f240192bab incidents: paginate incidents 2022-08-21 22:19:19 +02:00
Gregor Michels 6e5d4448db incident - 2022.08.01: no internet access for 2 weeks 2022-08-21 22:15:09 +02:00
Gregor Michels f481f91e5f incident - 2022.07.23: update regarding facility access 2022-07-28 02:44:25 +02:00
Gregor Michels 974e141f6e incidents: os upgrades (maintenance) 2022-07-28 02:41:32 +02:00
Gregor Michels 21362b546b doc - OVERVIEW: info regarding the upstream connectivity 2022-07-28 02:28:37 +02:00
Gregor Michels 830f99036f pass: add entry for gigacube-E950 2022-07-28 02:19:33 +02:00
Gregor Michels 87d2b0e690 doc - OVERVIEW: add info regarding gigacube 2022-07-28 02:16:29 +02:00
Gregor Michels 90e231d371 accesspoints: add wifi clients metrics into prometheus
`wifi_network_clients` exposes the amount of connected wifi clients
2022-07-25 02:26:54 +02:00
Gregor Michels ba014a64d0 wifi.lua: add wifi_clients metric 2022-07-25 02:00:56 +02:00
Gregor Michels 7b223d7053 add vanilla wifi.lua
from `prometheus-node-exporter-lua-wifi` package
2022-07-25 01:59:52 +02:00
Gregor Michels 735a07c842 venv: upgrade to ansible 6.1.0 2022-07-24 17:09:57 +02:00
Gregor Michels 5728762dbe incident - 2022.07.23: power outage in tent 5 2022-07-23 13:28:23 +02:00
Gregor Michels 51449a9801 fix incorrect ips for switches in IPAM 2022-07-17 02:07:55 +02:00
Gregor Michels ddb00c61ff incidents: client dhcp pool maintenance 2022-07-17 02:07:12 +02:00
Gregor Michels f01e35c531 monitoring: fix prometheus instance generation from inventory
no idea why it broke
2022-07-13 01:38:23 +02:00
Gregor Michels fcc5e277dd monitoring: rename ansible install prometheus task 2022-07-13 01:31:09 +02:00
Gregor Michels fb8b843489 monitoring: configure alertmanager to send mails 2022-07-13 01:29:46 +02:00
Gregor Michels 5a21b2cd88 monitoring: prometheus: add simple alerting rule 2022-07-13 01:27:07 +02:00
Gregor Michels a164059a77 pass: add mailbox pw ffl-eae-adp-mon01@brainpeach.de 2022-07-13 01:22:44 +02:00
158 changed files with 19954 additions and 269 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
ansible-facts.json/
switch-configs-stock/
*.html

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "roles/gekmihesg.openwrt"]
path = roles/gekmihesg.openwrt
url = https://github.com/gekmihesg/ansible-openwrt.git

View File

@ -1,11 +1,18 @@
# Freifunk Leipzig - Erstaufnahme Einrichtung - Am Deutschen Platz
# Freifunk Leipzig - Erstaufnahme Einrichtungen
This repo contains the config and documentation for our installation at the "Erstaufnahme Einrichtung - Am Deutschen Platz"
This repo contains the config and documentation for our installations at
* `Am Deutschen Platz`
* `Arno-Nitzsche-Straße`
---
**this is a work in progress**
* this repo was created for `Am Deutschen Platz` and was then reused for `Arno-Nitzsche-Straße`
* therefore the ansible stuff is a bit smelly
* there is a lot of documentation missing for the `Arno-Nitzsche-Straße`
* ...
---
## Quick Links
@ -27,7 +34,7 @@ This repo contains the config and documentation for our installation at the "Ers
### Initial Setup
0. install requirements
1. clone repo and change directory: `git clone https://git.sr.ht/~hirnpfirsich/ffl-eae-adp && cd ffl-aea-adp`
1. clone repo and change directory: `git clone --recurse-submodules https://git.sr.ht/~hirnpfirsich/ffl-eae-adp && cd ffl-aea-adp`
2. create python3 virtual enviroment: `python3 -m venv ansible-environment`
3. enter python3 virtual environment: `. ansible-environment/bin/activate`
4. install ansible and dependencies: `pip3 install -r ansible-environment.txt`
@ -46,6 +53,30 @@ Should something in the inventory change or you want to use/change the jumphost
Passwords managed using `pass`. Simply call `pass` after sourcing the environment.
### Monitoring
Initially we've deployed the monitoring on `monitoring01` (that lives on `hyper01` in `Am Deutschen Platz`).
After deploying the second camp we've decided to move the monitoring into the `cloud`.
The new monitoring stack runs on `eae-adp-jump01`.
Unfortunately `prometheus` crashes every few hours on `openbsd`.
So there is a cronjob restarting `prometheus` every 2 hours on `eae-adp-jump01`.
As soon as someone finds the time we will move the monitoring stack onto a normal linux machine.
* old monitoring: `monitoring01 - 10.84.1.51`
* is not getting new configs via ansible
* rocks an old version of the grafana dashboard
* the facility management still has a link to this instance
* new monitoring: `eae-adp-jump01 - 10.84.254.0`
Both stacks offer the following services:
* `prometheus`: `tcp/9090`
* `alertmanager`: `tcp/9093`
* `grafana`: `tcp/3000`
Use `ssh -D 8888 eae-adp-jump01` an configure this socks proxy in your favorite browser to visit the webguis.
### Descriptions
* `environment`: configure environment (path to `pass` store, http(s) socks proxy and python venv for ansible)

View File

@ -1,13 +1,14 @@
ansible==6.0.0
ansible-core==2.13.1
ansible==6.1.0
ansible-core==2.13.2
certifi==2022.6.15
cffi==1.15.1
charset-normalizer==2.1.0
cryptography==37.0.2
cryptography==37.0.4
idna==3.3
Jinja2==3.1.2
MarkupSafe==2.1.1
packaging==21.3
pkg_resources==0.0.0
proxmoxer==1.3.1
pycparser==2.21
pyparsing==3.0.9
@ -15,4 +16,4 @@ PySocks==1.7.1
PyYAML==6.0
requests==2.28.1
resolvelib==0.8.1
urllib3==1.26.9
urllib3==1.26.10

View File

@ -1,21 +1,187 @@
[accesspoints]
ap-c5d1 ip=10.84.1.33 channel_2g=1 channel_5g=36 # Office
ap-8f42 ip=10.84.1.36 channel_2g=6 channel_5g=40 # Tent 1
ap-0b99 ip=10.84.1.32 channel_2g=11 channel_5g=44 # Tent 2
ap-c495 ip=10.84.1.34 channel_2g=1 channel_5g=48 # Tent 3
ap-2bbf ip=10.84.1.30 channel_2g=11 channel_5g=149 # Tent 4
ap-1a38 ip=10.84.1.35 channel_2g=6 channel_5g=153 # Tent 5
ap-c5d1 ip=10.84.1.33 location=office-social2 channel_2g=1 channel_5g=36 txpower_2g=12 txpower_5g=13
ap-ac7c ip=10.84.1.31 location=office-social1 channel_2g=11 channel_5g=161 txpower_2g=12 txpower_5g=13
ap-8f42 ip=10.84.1.36 location=tent-1 channel_2g=6 channel_5g=40
ap-0b99 ip=10.84.1.32 location=tent-2 channel_2g=11 channel_5g=44
ap-c495 ip=10.84.1.34 location=tent-3 channel_2g=1 channel_5g=48
ap-2bbf ip=10.84.1.30 location=tent-4 channel_2g=11 channel_5g=149
ap-1a38 ip=10.84.1.35 location=tent-5 channel_2g=6 channel_5g=153
ap-8f39 ip=10.84.1.37 location=tent-5 channel_2g=1 channel_5g=157
ap-1293 ip=10.84.1.38 location=office-facility channel_2g=1 channel_5g=100 txpower_2g=6 txpower_5g=7
ap-b62f ip=10.85.1.31 location=tent-1 channel_2g=1 channel_5g=36 txpower_2g=15 txpower_5g=20
ap-b656 ip=10.85.1.35 location=tent-1 channel_2g=6 channel_5g=140 txpower_2g=15 txpower_5g=20
ap-b6ee ip=10.85.1.32 location=office-security channel_2g=1 channel_5g=48 txpower_2g=12 txpower_5g=13
ap-b5df ip=10.85.1.38 location=office-social channel_2g=11 channel_5g=153 txpower_2g=12 txpower_5g=13
ap-b6cb ip=10.85.1.33 location=office-facility channel_2g=6 channel_5g=60 txpower_2g=12 txpower_5g=13
ap-b641 ip=10.85.1.30 location=tent-2 channel_2g=1 channel_5g=136 txpower_2g=15 txpower_5g=20
ap-b6d7 ip=10.85.1.34 location=tent-2 channel_2g=6 channel_5g=104 txpower_2g=15 txpower_5g=20
ap-b644 ip=10.85.1.36 location=tent-2 channel_2g=11 channel_5g=124 txpower_2g=15 txpower_5g=20
ap-b634 ip=10.85.1.37 location=tent-3 channel_2g=1 channel_5g=116 txpower_2g=15 txpower_5g=20
ap-b6cc ip=10.85.1.39 location=tent-3 channel_2g=6 channel_5g=40 txpower_2g=15 txpower_5g=20
ap-b682 ip=10.85.1.40 location=tent-3 channel_2g=11 channel_5g=64 txpower_2g=15 txpower_5g=20
ap-116e ip=10.86.1.31 location=p203 disable_2g=1 channel_5g=48 txpower_2g=17 txpower_5g=20
ap-11c4 ip=10.86.1.32 location=office-security channel_2g=1 channel_5g=36 txpower_2g=17 txpower_5g=20
ap-1202 ip=10.86.1.33 location=p201 disable_2g=1 channel_5g=153 txpower_2g=17 txpower_5g=20
ap-12a8 ip=10.86.1.34 location=p104 channel_2g=11 channel_5g=60 txpower_2g=17 txpower_5g=20
ap-13ac ip=10.86.1.35 location=p106 disable_2g=1 channel_5g=116 txpower_2g=17 txpower_5g=20
ap-144c ip=10.86.1.36 location=p108 channel_2g=1 channel_5g=140 txpower_2g=17 txpower_5g=20
ap-12c2 ip=10.86.1.37 location=p207 disable_2g=1 channel_5g=128 txpower_2g=17 txpower_5g=20
ap-16bc ip=10.86.1.38 location=p205 channel_2g=6 channel_5g=104 txpower_2g=17 txpower_5g=20
ap-1374 ip=10.86.1.39 location=kitchen-og disable_2g=1 channel_5g=153 txpower_2g=17 txpower_5g=20
[accesspoints:vars]
ansible_remote_tmp=/tmp
garet_profile=aruba-ap-105_22.03
garet_release=9974455
[aptype_aruba_ap_303]
ap-11c4
ap-116e
ap-1202
ap-12a8
ap-13ac
ap-144c
ap-12c2
ap-16bc
ap-1374
[aptype_aruba_ap_105]
ap-c5d1
ap-ac7c
ap-8f42
ap-0b99
ap-c495
ap-2bbf
ap-1a38
ap-8f39
ap-1293
ap-b62f
ap-b656
ap-b6ee
ap-b5df
ap-b6cb
ap-b641
ap-b6d7
ap-b644
ap-b634
ap-b6cc
ap-b682
[switches]
sw-access01 ip=10.84.1.11
sw-access02 ip=10.84.1.12
sw-access01 ip=10.84.1.11 base_mac=bc:cf:4f:e3:bb:8d location=office-social2
sw-access02 ip=10.84.1.12 base_mac=bc:cf:4f:e3:ac:39 location=tent-5
sw-access04 ip=10.84.1.14 base_mac=5c:e2:8c:6a:7f:cc location=tent-2
[switches_stock]
ffl-ans-sw-distribution01 ip=10.85.1.11 base_mac=5c:e2:8c:60:82:fb sw_type=gs1900-10hp location=office-facility
ffl-ans-sw-access01 ip=10.85.1.12 base_mac=04:bf:6d:15:c6:b3 sw_type=gs1900-10hp location=tent-1
ffl-ans-sw-access02 ip=10.85.1.13 base_mac=04:bf:6d:15:c6:92 sw_type=gs1900-10hp location=tent-2
sax-rgs-sw-access01 ip=10.86.1.11 sw_type=s2800s-8t2f-p location=p104
sax-rgs-sw-access02 ip=10.86.1.12 sw_type=s2800s-8t2f-p location=p204
[gateways]
gw-core01 ip=10.84.1.1
gw-core01 ip=10.84.1.1
ffl-ans-gw-core01 ip=10.85.1.1
sax-rgs-gw-core01 ip=10.86.1.1 garet_profile=sophos-sg-xxx_22.03 garet_release=601bc29
[gateways:vars]
ansible_remote_tmp=/tmp
garet_profile=sophos-sg-125r2_22.03
garet_release=89cbd27
[server]
hyper01 ip=10.84.1.21
[vms]
eae-adp-jump01 ip=162.55.53.85 monitoring_ip=10.84.254.0 ansible_python_interpreter=/usr/local/bin/python3
monitoring01 ip=10.84.1.51
[container]
monitoring01 ip=10.84.1.51 cpus=2 disk=50 memory=1024 net='{"net0":"name=eth0,ip=10.84.1.51/24,gw=10.84.1.1,bridge=vmbr0"}'
mon-e2e-clients01 ip=10.84.7.30 cpus=1 disk=10 memory=256 net='{"net0":"name=eth0,ip=dhcp,bridge=vmbr1"}'
mon-e2e-wan01 ip=192.168.0.3 cpus=1 disk=10 memory=256 net='{"net0":"name=eth0,ip=dhcp,bridge=vmbr3"}'
[container:vars]
ostemplate=local:vztmpl/debian-11-standard_11.3-1_amd64.tar.zst
[openwrt:children]
switches
[site_adp]
ap-c5d1
ap-ac7c
ap-8f42
ap-0b99
ap-c495
ap-2bbf
ap-1a38
ap-8f39
ap-1293
sw-access01
sw-access02
sw-access04
gw-core01
hyper01
monitoring01
mon-e2e-clients01
mon-e2e-wan01
[site_adp:vars]
wifi_ssid="GU Deutscher Platz"
wifi_encryption=none
backoffice_wifi_ssid="GU Deutscher Platz Backoffice"
backoffice_wifi_encryption=psk2
backoffice_wifi_psk="{{ lookup('passwordstore', 'wifi/GU_Deutscher_Platz_Backoffice') }}"
site=adp
[site_ans]
ap-b641
ap-b62f
ap-b6ee
ap-b6cb
ap-b6d7
ap-b656
ap-b644
ap-b634
ap-b5df
ap-b682
ap-b6cc
ffl-ans-gw-core01
ffl-ans-sw-distribution01
ffl-ans-sw-access01
ffl-ans-sw-access02
[site_ans:vars]
wifi_ssid="GU Arno-Nitzsche-Strasse"
wifi_encryption=none
wifi_disabled=0
backoffice_wifi_ssid="GU Arno-Nitzsche-Strasse BO"
backoffice_wifi_encryption=psk2
backoffice_wifi_psk="{{ lookup('passwordstore', 'wifi/GU_Arno-Nitzsche-Straße_Backoffice') }}"
mgmt_gateway=10.85.1.1
site=ans
[site_rgs]
sax-rgs-sw-access01
sax-rgs-sw-access02
sax-rgs-gw-core01
ap-11c4
ap-116e
ap-1202
ap-12a8
ap-13ac
ap-144c
ap-12c2
ap-16bc
ap-1374
[site_rgs:vars]
wifi_ssid="{{ lookup('passwordstore', 'wifi/site_rgs_ssid') }}"
wifi_encryption=none
wifi_disabled=0
backoffice_wifi_ssid="{{ lookup('passwordstore', 'wifi/site_rgs_backoffice_ssid') }}"
backoffice_wifi_encryption=psk2
backoffice_wifi_psk="{{ lookup('passwordstore', 'wifi/site_rgs_backoffice') }}"
mgmt_gateway=10.86.1.1
site=rgs

View File

@ -4,3 +4,4 @@ interpreter_python=/usr/bin/python3
gathering=smart
fact_caching=jsonfile
fact_caching_connection=ansible-facts.json
callbacks_enabled = ansible.posix.profile_tasks

View File

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2023-03-14T01:11:23.043Z" agent="5.0 (X11)" etag="HeUGzaMI0PEll7OsNIGH" version="21.0.6" type="device"><diagram name="Page-1" id="YwlCLJMcKuBeH3aDT3El">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</diagram></mxfile>

BIN
documentation/EAE-ANS.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

File diff suppressed because it is too large Load Diff

View File

@ -9,19 +9,35 @@ Diagram:
IPAM / Device Overview:
-----------------------
| Name | Location | MGMT IPv4 | MAC | Device | Notes |
| -------------- | --------- | ------------ | ------------------- | -------------------- | ----- |
| `gw-core01` | Büro | `10.84.1.1` | `78:8a:20:bd:b6:ae` | Ubiquiti EdgeRouterX | |
| `sw-access01` | Büro | `10.84.1.10` | `bc:cf:4f:e3:bb:8d` | Zyxel GS1800-8HP | |
| `sw-access02` | Zelt 5 | `10.84.1.11` | `bc:cf:4f:e3:ac:39` | Zyxel GS1800-8HP | |
| `hyper01` | Büro | `10.84.1.21` | `00:23:24:54:f0:fe` | Lenovo ThinkCentre ? | |
| `monitoring01` | `hyper01` | `10.84.1.51` | `16:b9:13:c3:10:5e` | Proxmox VM | |
| `ap-2bbf` | Zelt 4 | `10.84.1.30` | `24:de:c6:cc:2b:bf` | Aruba AP-105 | |
| `ap-1a38` | Zelt 5 | `10.84.1.35` | `24:de:c6:c3:ac:7c` | Aruba AP-105 | |
| `ap-0b99` | Zelt 2 | `10.84.1.32` | `6c:f3:7f:c9:0b:99` | Aruba AP-105 | |
| `ap-c5d1` | Büro | `10.84.1.33` | `ac:a3:1e:cf:c5:d1` | Aruba AP-105 | |
| `ap-c495` | Zelt 3 | `10.84.1.34` | `ac:a3:1e:cf:c4:95` | Aruba AP-105 | |
| `ap-8f42` | Zelt 1 | `10.84.1.36` | `d8:c7:c8:c2:8f:42` | Aruba AP-105 | |
| Name | Location | MGMT IPv4 | MAC | Device | Notes |
| ------------------- | ------------ | ------------- | ------------------- | -------------------- | ------------------------------------------------- |
| `gigacube-2001` | Büro | `192.168.0.1` | `c8:ea:f8:b6:e9:50` | ZTE MF289F/Gigacube | property of Saxonia Catering/rental from Vodafone |
| `gw-core01` | Büro | `10.84.1.1` | `00:1a:8c:48:b3:98` | Sophos SG125r2 | |
| `sw-access01` | Büro | `10.84.1.11` | `bc:cf:4f:e3:bb:8d` | Zyxel GS1800-8HP | |
| `sw-access02` | Zelt 5 | `10.84.1.12` | `bc:cf:4f:e3:ac:39` | Zyxel GS1800-8HP | |
| `sw-access03` | Sozialarbeit | / | / | KTI KGS-510F | manageable but used as a dumb switch |
| `hyper01` | Büro | `10.84.1.21` | `00:23:24:54:f0:fe` | Lenovo ThinkCentre ? | |
| `monitoring01` | `hyper01` | `10.84.1.51` | `16:b9:13:c3:10:5e` | Proxmox Container | |
| `mon-e2e-clients01` | `hyper01` | `10.84.7.30` | `ca:ac:5a:d0:b6:02` | Proxmox Container | used for end to end monitoring of the public net |
| `ap-2bbf` | Zelt 4 | `10.84.1.30` | `24:de:c6:cc:2b:bf` | Aruba AP-105 | |
| `ap-1a38` | Zelt 5 | `10.84.1.35` | `18:64:72:cf:1a:38` | Aruba AP-105 | |
| `ap-ac7c` | Sozialarbeit | `10.84.1.31` | `24:de:c6:c3:ac:7c` | Aruba AP-105 | |
| `ap-0b99` | Zelt 2 | `10.84.1.32` | `6c:f3:7f:c9:0b:99` | Aruba AP-105 | |
| `ap-c5d1` | Büro | `10.84.1.33` | `ac:a3:1e:cf:c5:d1` | Aruba AP-105 | |
| `ap-c495` | Zelt 3 | `10.84.1.34` | `ac:a3:1e:cf:c4:95` | Aruba AP-105 | |
| `ap-8f42` | Zelt 1 | `10.84.1.36` | `d8:c7:c8:c2:8f:42` | Aruba AP-105 | |
| `ap-8f39` | Zelt 5 | `10.84.1.37` | `??:??:??:??:??:??` | Aruba AP-105 | |
Upstream Connectivity:
----------------------
The gigacube itself only get's an RFC1918 address from Vodafone (CGNAT - no IPv6).
Our gateway (`gw-core01`) itself also nats, because there is no way to configure additional networks on the gigacube.
Currently the generated traffic is directly routed into the internet - without an vpn tunnel.
Therefore v4 streams get masqueraded 3 times.
Cloud VMs:
----------
@ -34,19 +50,21 @@ Cloud VMs:
Networks:
---------
| Name | VLAN | v4 Space | v6 Space | Description |
| ---------- | ---- | ----------------- | -------- | --------------------------------------------------------------------- |
| `mgmt` | 1 | `10.84.1.0/24` | / | default network which is used for administrative and monitoring tasks |
| `clients` | 2 | `10.84.2.0/22` | / | this is where the wifi clients live |
| `gigacube` | / | `192.168.8.0/24` | / | created by the gigacube. wan for our gateway |
| `backbone` | / | `10.84.254.0/30` | / | tunnel network between `gw-core01` and `eae-adp-jump01` |
| Name | VLAN | v4 Space | v6 Space | Description |
| ------------ | ---- | ----------------- | -------- | --------------------------------------------------------------------- |
| `mgmt` | 1 | `10.84.1.0/24` | / | default network which is used for administrative and monitoring tasks |
| `clients` | 2 | `10.84.4.0/22` | / | this is where the wifi clients live |
| `wan` | 3 | `192.168.0.0/24` | / | created by the gigacube. wan for our gateway |
| `backbone` | / | `10.84.254.0/30` | / | tunnel network between `gw-core01` and `eae-adp-jump01` |
| `backoffice` | 8 | `10.84.8.0/24` | / | backoffice network for the orga |
WiFi Networks:
--------------
| SSID | Encryption | VLAN | Description |
| -------------------- | ---------- | ---- | ----------- |
| `GU Deutscher Platz` | / | 2 | |
| SSID | Encryption | VLAN | Description |
| ------------------------------- | ---------- | ---- | ----------- |
| `GU Deutscher Platz` | / | 2 | |
| `GU Deutscher Platz Backoffice` | wpa2 psk | 8 | |
Remote Access / VPN:
--------------------

View File

@ -2,11 +2,13 @@
## Software
* [ ] add monitoring vm
* [x] add monitoring vm
* replace `prometheus-node-exporter-lua-hostapd_stations` with an exporter that does not collect mac addresses!
* [ ] put aps on non overlapping wifi channels
* [ ] document configuration of `gw-core01`
* [ ] provision config of `gw-core01` via ansible (network, firewall, ...)
* [x] put aps on non overlapping wifi channels
* [x] document configuration of `gw-core01`
* [x] provision config of `gw-core01` via ansible (network, firewall, ...)
* [ ] bootstrap an additional prometheus instance on `eae-adp-jump01` that alarms on a missing connection to `gw-core01`
* [ ] move openwrt device to 22.03 - track fw version in ansible ?
* [ ] add wireguard profiles for admins on `eae-adp-jump01`
## Hardware
@ -15,5 +17,16 @@
## Documentation
* [x] publish `incident 21 - replace gw-core01, reorg cabling`
* [x] publish `incident 22 - installation of directional LTE antenna`
* [ ] document backbone between `gw-core01` and `eap-adp-jump01`
* [ ] move config/installation stuff into other file (keep OS versions in `README.MD`)
* [x] move config/installation stuff into other file (keep OS versions in `README.MD`)
## Wifi Experience
* [ ] increase airtime by only broadcasting `GU Deutscher Platz Backoffice` in the office containers
* [ ] improve wifi experience for residents
- put at least two aps into every tent
- put the aps into more central locations into the tents
- measure and decrease tx signal power of aps
- maybe replace aps with something more modern (> 2012, > 802.11a/n)

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 126 KiB

90
files/alerting_rules.yml Normal file
View File

@ -0,0 +1,90 @@
groups:
- name: Basic
rules:
# from https://awesome-prometheus-alerts.grep.to/rules.html#rule-prometheus-self-monitoring-1-2
- alert: PrometheusTargetMissing
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: Prometheus target missing (instance {{ $labels.instance }})
description: "A Prometheus target has disappeared. An exporter might be crashed.\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: NodeRebooted
expr: changes(node_boot_time_seconds[2h]) > 0
for: 0m
labels:
severity: critical
annotations:
summary: A node rebooted in the last 2 hours (instance {{ $labels.instance }})
description: "The uptime of a node changed in the last two hours. VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- alert: PublicWifiUpstreamLost
expr: sum(probe_success{job="e2e_adp_clients_v4"}) == 0
for: 0m
labels:
severity: critical
annotations:
summary: The public wifi lost its ability to route into the internet
description: "check the vpn connection"
- name: ServerSpecific
rules:
# https://awesome-prometheus-alerts.grep.to/rules#rule-host-and-hardware-1-7
#
# Please add ignored mountpoints in node_exporter parameters like
# "--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|run)($|/)".
# Same rule using "node_filesystem_free_bytes" will fire when disk fills for non-root users.
- alert: HostOutOfDiskSpace
expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
for: 2m
labels:
severity: warning
annotations:
summary: Host out of disk space (instance {{ $labels.instance }})
description: "Disk is almost full (< 10% left)\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
# https://awesome-prometheus-alerts.grep.to/rules#rule-host-and-hardware-1-9
- alert: HostOutOfInodes
expr: node_filesystem_files_free / node_filesystem_files * 100 < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
for: 2m
labels:
severity: warning
annotations:
summary: Host out of inodes (instance {{ $labels.instance }})
description: "Disk is almost running out of available inodes (< 10% left)\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"
- name: Network
rules:
- alert: PortChangedState
expr: changes(ifLastChange[2h]) != 0
labels:
severity: warning
annotations:
summary: "{{ $labels.ifName }} on {{ $labels.instance }} changed it's state {{ $value }}x time(s) in the last 2 hours"
description: "This alarm will clear in 2 hours"
- alert: PortIfInErrors
expr: increase(ifInErrors[2h]) > 0 or increase(node_network_receive_errs_total[2h]) > 0
labels:
severity: critical
annotations:
summary: "{{ if $labels.ifName }} {{ $labels.ifName }} {{ else }} {{ $labels.device }} {{ end }} on {{ $labels.instance }} has {{ $value }} ifInErrors in the last 2 hours. This alarm will clear automatically in 2 hours"
description: "For some reason the port is throwing ifInErrors"
- alert: PortIfOutErrors
expr: increase(ifOutErrors[2h]) > 0 or increase(node_network_transmit_errs_total[2h]) > 0
labels:
severity: critical
annotations:
summary: "{{ if $labels.ifName }} {{ $labels.ifName }} {{ else }} {{ $labels.device }} {{ end }} on {{ $labels.instance }} has {{ $value }} ifOutErrors in the last 2 hours"
description: "For some reason the port is throwing ifOutErrors. This alarm will clear automatically in 2 hours"
- alert: SNMPNodeRebooted
expr: (sysUpTime / 100) <= (60 * 60 * 2)
labels:
severity: critical
annotations:
summary: "{{ $labels.instance }} rebooted at least one time in the last two hours"
description: "This alarm will clear in 2 hours"

View File

@ -3,3 +3,5 @@ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAykqqvlk2XTSa5xxAtWUA7RpEcI0rPBIAmFmT+zzU2VdU
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTFLWYfL9LhAj1tTfjdy2b9ncT3IqxDSXrVyG0Anci7H37GbkVGxiQw86HPR5CL2TzIX9jhrWnK8T3f/CQmhEiYhjE6p3kRkZN+krTTfm77sarb3wdg1OHtmlCNm6EmkIOuK7ewIzHgNsHW5jeNg4wl/klmXK4XKMIiJsr7s1gTZ6F7jz3av2p0aaHF6ntAyMmSPJTVhCbvUQaM27tSaPjGUOya2sxXajgIVbVBSMsaSwSGfOCty/Bef4WTM14NNMiSpdYs3uW1BMM39bYy2vgONFPeQLjmWr/X940wZZvYCcEaYSyTAbIXdaVyilxyC69ZDEg/rf3jvyemO0pWQn3 chaosox@molly (Linux)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDaUUOwqS03cgJmvA5ryagZXKxmU03gLfoYZVQ8zJIDeHzgNyfFX8orXCxL6vZYeMuM5KRFsqXQPXFc5ILjoen5qhkTI+qc70nHr2Zvy3+Zq4zVqcE8Vpcgfy4VbzJPrrcxwxmdeGzf8LlfrWPlX5OG8rZx8kpSqUpDadG3ma1guykyq4FN8oEEuzlo6gBjgSuse9qrC94JwRUbd+jHN/RbaKnbXKwslO73zVNkdbq3BVCHLjLNq40NkxQv49vYVyWIozugFoNTul3hI/M0OPxNfkx+kzkG+2cgE8nxLdjkojqAkVKNM+SC70UCuEVofEYbyyzXDWwZ3JwDO9mUpsH2XKPLsdKCwlIc9dwnKu5Pu2Q9rsvpbgmcTNhsV8EXXglsROO3YXspKwg9oAXAFjmeAzYylrMRjFv/q0RL5d8+YnN6xoRZad7/fcj5OHpaxFTDeyTQ50TSc1uIlWJmnFCE0PzWmuTz/BkR0X52fh7Tu2vE90nOn24lrZxokiLVwDo7WBbBtT7MXTnr0wKf3jMPSk7Mp2e4TaLoole4NyNHa7RwHWhwu4o/y29qwW4SvKoSOiKFnpa7HiRCkEvxpuYgVA/KsmGWySRXNndMn4TOFfRJcMHx1B67XgGLTDTtGMrP+eN2mIerAxdv/4uAIwnQUaWnycPex90BN1uyc6/itw== chaosox@wintermute
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILWktkX613ZL6iXrSXXFykgXj3XHTGhHAUMXLypKV5Qw chaosox@molly (WSL)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCVJAFhvSqCggIxCjxl8ybLUGP/WJJJ67AzipkIVpVsfYUwNGvMUFu13meHBaf34c2sVVSn7dV0qw51Xj3h570KFFuijFwsQbRb7xtyPY6c+Vw7Ehhu9EPcopxGltSk8VmxNdyO5X4DxVrnGN2xZOQq/4aDNnl1aegVtsMEXfy/wUvkMp89gJmn9u2yXhjnbgdYB4VE/Zxtwi1h0JqL6WbGf/wrvwjD6xJBmUe+G/+2tdcyYcEPmyObpNq4RYtu3JhNYD8xXRxEFVy+dNXm2P3/8JspW6N7VHYpLQTvDf3PzxoTlfENap+pgihag1URJzhqhJ4g+OHGAcpk3rKcnJbF rsa-key-20221112
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzA1vg4hukp41JZYW7I/TG02s4pBEiuUgfUqmQskbjoKpvcHxhZv82S3QqJQnqBANtOL+QTCrVyMEn6pjQ61BVTgaYNldUnedWorHXS93r32Eqz+NWW7zTqPgylEdWzznY3Sx8mimaHNnGjBjcgAgyVekk+vx4LOaTw8pqu85Da5eKAp97XQTxdJtEsxG1etp7LZrvKCL2+1KGz5J/AoyMHMdEWgMRHZPFzOJJ81uxBwvEt+1dIcO72bl+rNK1AgwEnqyrJav5mA0Z1Dj85cCb6QccUZI2J3c9RDSLMIrab359rdMj7mOVgm5GGaHS2VZb2Zjsxux9JBY7yv/wh5katkSXlpsW9LS5SGN4TPsALVEmDPLkaA0LXDsXyvWs12Sdamw5igdpJhWfnmsqvkiD3eNb0uTf/uhO8qyNx8fzn1WhxkDEphSfmH/0rP3mCvkyTWqBS1Dr15Iq4dHyVc1IfhijErbk0RUF3aedmvj7Jbpg/NfZ3dGrHUWEbRhZXngKgS9WJ3KayF7T6CsH/P2iPufYaa9PcOAp01Ezdk/wvdq1O1hRb5H76+5ilKg1HjtJ/kMgX7U39jchNZ94KGIDDiWKKvq3D+Q9Cxe6qndiGmPAyCszQ8dzEs/p11QxhDlIJHLaUF/nMRuVsFaJljIe5SA2r4tYzWQ5O7BL09e6qQ== mowoe@decima

36
files/blackbox.yml Normal file
View File

@ -0,0 +1,36 @@
modules:
http_2xx:
prober: http
http_post_2xx:
prober: http
http:
method: POST
tcp_connect:
prober: tcp
pop3s_banner:
prober: tcp
tcp:
query_response:
- expect: "^+OK"
tls: true
tls_config:
insecure_skip_verify: false
ssh_banner:
prober: tcp
tcp:
query_response:
- expect: "^SSH-2.0-"
irc_banner:
prober: tcp
tcp:
query_response:
- send: "NICK prober"
- send: "USER prober prober prober :prober"
- expect: "PING :([^ ]+)"
send: "PONG ${1}"
- expect: "^:[^ ]+ 001"
icmp_v4:
prober: icmp
icmp:
preferred_ip_protocol: ip4
ip_protocol_fallback: false

13
files/gpg/lodrich.asc.pub Normal file
View File

@ -0,0 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEY2/88hYJKwYBBAHaRw8BAQdAV9QF5wXsizMDUD2w2GTUurA04t+z3n7SAq4V
blntKKu0Fk1heCA8YWRtaW5AbG9kcmljaC5kZT6ImQQTFgoAQRYhBCLp8m6zG1Mb
22CRck/7U9n7BCTMBQJjb/zyAhsDBQkDwzg+BQsJCAcCAiICBhUKCQgLAgQWAgMB
Ah4HAheAAAoJEE/7U9n7BCTMkIMBAKHQMDe8Rb1bi2mF+caQyYP5sklMVbOTlSY4
f1tbqzG3AQDCZoClNCVF7ppCYjPsEpuhayRmS+mI9YR4JuF73owsDbg4BGNv/PIS
CisGAQQBl1UBBQEBB0CbniuHfjUu/nd6uBDYVkW4MSJo3lpg/Mdt5s64NY4jQwMB
CAeIfgQYFgoAJhYhBCLp8m6zG1Mb22CRck/7U9n7BCTMBQJjb/zyAhsMBQkDwzg+
AAoJEE/7U9n7BCTM/CwBAO+rrWsyE4x0Owx4bggh144JIu5J5DGij1KboGsoxFW0
AP9Xe4aoaYfKNEouckI2G0cmDE/9FtA9v73SkzeXTKQfDw==
=0vzZ
-----END PGP PUBLIC KEY BLOCK-----

51
files/gpg/mowoe.asc.pub Normal file
View File

@ -0,0 +1,51 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=OJvy
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -28,4 +28,10 @@ area 0.0.0.0 {
interface wg0 {
type p2p
}
interface wg2 {
type p2p
}
interface wg3 {
type p2p
}
}

11
files/pf.wg2.conf Normal file
View File

@ -0,0 +1,11 @@
# allow incoming udp packets for wg2
pass in proto udp from any to self port 51822
# allow ospf on wg2
pass on wg2 proto ospf
# allow prometheus on wg2
pass on wg2 proto tcp from any to self port 9100
# allow outgoing snmp on wg2
pass out on wg2 proto udp from self to any port snmp

11
files/pf.wg3.conf Normal file
View File

@ -0,0 +1,11 @@
# allow incoming udp packets for wg3
pass in proto udp from any to self port 51823
# allow ospf on wg3
pass on wg3 proto ospf
# allow prometheus on wg3
pass on wg3 proto tcp from any to self port 9100
# allow outgoing snmp on wg3
pass out on wg3 proto udp from self to any port snmp

58
files/wifi.lua Executable file
View File

@ -0,0 +1,58 @@
local ubus = require "ubus"
local iwinfo = require "iwinfo"
local function scrape()
local metric_wifi_network_quality = metric("wifi_network_quality","gauge")
local metric_wifi_network_bitrate = metric("wifi_network_bitrate","gauge")
local metric_wifi_network_noise = metric("wifi_network_noise_dbm","gauge")
local metric_wifi_network_signal = metric("wifi_network_signal_dbm","gauge")
local metric_wifi_clients = metric("wifi_network_clients", "gauge")
local metric_wifi_airtime_total = metric("wifi_network_airtime_total", "gauge")
local metric_wifi_airtime_busy = metric("wifi_network_airtime_busy", "gauge")
local metric_wifi_airtime_utilization = metric("wifi_network_airtime_utilization", "gauge")
local u = ubus.connect()
local status = u:call("network.wireless", "status", {})
for dev, dev_table in pairs(status) do
for _, intf in ipairs(dev_table['interfaces']) do
local ifname = intf['ifname']
if ifname ~= nil then
local iw = iwinfo[iwinfo.type(ifname)]
local labels = {
channel = iw.channel(ifname),
ssid = iw.ssid(ifname),
bssid = string.lower(iw.bssid(ifname)),
mode = iw.mode(ifname),
ifname = ifname,
country = iw.country(ifname),
frequency = iw.frequency(ifname),
device = dev,
}
local qc = iw.quality(ifname) or 0
local qm = iw.quality_max(ifname) or 0
local quality = 0
if qc > 0 and qm > 0 then
quality = math.floor((100 / qm) * qc)
end
local wifi_clients = 0
for _ in pairs(iw.assoclist(ifname)) do wifi_clients = wifi_clients +1 end
local hostapd_status = u:call("hostapd." .. ifname, "get_status", {})
metric_wifi_network_quality(labels, quality)
metric_wifi_network_noise(labels, iw.noise(ifname) or 0)
metric_wifi_network_bitrate(labels, iw.bitrate(ifname) or 0)
metric_wifi_network_signal(labels, iw.signal(ifname) or -255)
metric_wifi_clients(labels, wifi_clients)
metric_wifi_airtime_total(labels, hostapd_status.airtime.time)
metric_wifi_airtime_busy(labels, hostapd_status.airtime.time_busy)
metric_wifi_airtime_utilization(labels, hostapd_status.airtime.utilization)
end
end
end
end
return { scrape = scrape }

2
firmware/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

View File

@ -0,0 +1,12 @@
---
radios:
radio0:
type: "mac80211"
path: "pci0000:00/0000:00:11.0"
band: "2g"
htmode: "HT20"
radio1:
type: "mac80211"
path: "pci0000:00/0000:00:12.0"
band: "5g"
htmode: "HT20"

View File

@ -0,0 +1,12 @@
---
radios:
radio0:
type: "mac80211"
path: "platform/soc/a000000.wifi"
band: "2g"
htmode: "HT20"
radio1:
type: "mac80211"
path: "platform/soc/a800000.wifi"
band: "5g"
htmode: "VHT20"

View File

@ -1,2 +1,4 @@
EB0D409FD8884BBECC04532AF937CB4882C16136
C2AA3A4266D111B27C3774EB2438B8ADFDF45447
22E9F26EB31B531BDB6091724FFB53D9FB0424CC
31795FB83C5BC8D9ADB23CBA01350ECC2B89E572

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More