summaryrefslogtreecommitdiff
path: root/_posts/2022-11-20-eine-kleine-netzwerk-reise.md
blob: 1bd389b3567e4546e606d4bdcdf1cdee3bc268b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
---
layout: post
title: Eine kleine Netzwerk-Reise
date: 2022-11-20 12:36 +0100
lang: de
category: tech
---

Der "Ottonormalverbraucher" hat vermutlich nur das Plastikkästchen seines
Internetanbieters zu hause hängen.  Dieser Artikel soll nur ein Writeup meines
Netzwerkaufbaus werden. Es geht um persönliche Erfahrungen, weniger um eine
Anleitung. Produktnamen nenne ich hier nur der Vollständigkeit halber.

So fing auch meine Netzwerk-Reise an, eine "FritzBox" des Herstellers "AVM",
sowohl für WLAN als auch für das LAN.  Es tut, was es soll, was will man mehr?

## Lange Leitung

Ein Problem, dass ich recht früh nach Einzug hatte: Die TAE-Dose zum Anschluss
des Internets ist im Flur. Da hing auch dementsprechend der Router. Der
auserkorene Platz für meinen PC im Wohnzimmer liegt aber im anderen Eck der
Wohnung.

Nun, ich glaube, anfangs habe ich noch mit WLAN hantiert. Unter Linux eh so ein
hit-or-miss, je nachdem, welchen WLAN-Adapter man benutzt. Es lief nie
zufriedenstellend.

Die nächste Idee war "Power-LAN", also LAN über die Steckdose. Ich hab mich
glaub ich mehrere Wochen damit herumgeschlagen. Am Ende war das aber mit mehr
Fluchen verbunden. Die Konnektivität brach sporadisch einfach mal zusammen.
Kein Ping ging mehr durch, es half nur ein Reset des Power-LAN-Adapters, meist
verbunden mit Aus- und Einstecken, und damit verbunden der Neustart des PCs.

Finale Lösung war, mir ein 50m-LAN-Kabel zu kaufen, dazu Kabelkanal, und das
Kabel dann halt schön an der Wand entlang Wohnzimmer-Flur zu verlegen.  Das
liegt heute noch so, teilweise noch vor den Schränken entlang, die zu dem
Zeitpunkt halt schon eingerichtet waren. Schön ist anders, aber es
funktioniert.  Nachteil ist halt, dass das Kabel unter der Wohnzimmertür
entlang verläuft, und beim Öffnen/Schließen der Tür mitgezogen wird. (Ich wohn
zur Miete. Ich werd nicht die Wand aufreißen oder große Löcher für das Kabel
reinbohren...).

## Separates VoIP?

Irgendwann dachte ich mir mal, es wäre interessant, die Telefonie separat zu
Regeln. Das Kästchen, das VoIP übernimmt, war aber mehr schlecht als recht
einzurichten (umständlich), und irgendwie gab es immer wieder Probleme, dass
Rufe nicht ein- oder ausgingen. Keine Ahnung, vielleicht ist da was mit den
Firewall-Regeln der FritzBox kollidiert, es war mir am Ende zu müßig.

## Mehr WLAN!

Das nächste Problem war, dass ich irgendwann zunehmend Probleme mit dem WLAN
der FritzBox hatte, vorwiegend Verbindungsabbrüche mit dem Smartphone.

Ich hab mir dann den Rat von Bekannten zu Herzen genommen und mit einen Access
Point der Firma Ubiquity geholt.

Das mit der separaten Controller-Software habe ich anfangs noch auf meinem
Haupt-PC laufen lassen. Wird ja eh nur zur Konfigurations-Änderung gebraucht.
Das Monitoring ist mir recht egal. Bis heute bekomme ich da Warnungen über tlw.
schlechte "WiFi-Experience". Joa, Wohnung ist halt so geformt, wie sie geformt
ist.

## Einschub: Werbeblocker

Ich glaub, einen Raspberry Pi mit PiHole hatte ich schon relativ früh laufen.
Bei einem sporadischen Stromausfall war halt nur meist das Dateisystem der
SD-Karte hinüber.  Das hat mich sehr geärgert. Aber wenn er lief, wurde Werbung
halt blockiert.

## (Virtuelles) HomeOffice

Was zuerst kam, weiß ich nicht mehr.

1) Es ging ins HomeOffice. Ich wollte den HomeOffice-PC allerdings nicht in
meinem "Privat-LAN" laufen lassen.

2) Ich hab mir einen kleinen (Mini-?)PC zugelegt, auf den ich Proxmox
geklöppelt habe. Eine der ersten Anwendungen, die ich virtualisiert habe, war
PiHole.

Mit der Kombi aus beidem, und einem Paar "Smart Switches", konnte ich das
Problem lösen. Mit VLANs hatte ich bisher nicht viel zu tun. Die Einrichtung
war daher etwas müßig. Aber mit den Switches konnte ich meinen Home-Office-PC
in ein separates Netzwerk-Segment verbannen. Gleichzeitig war es ein Problem,
dass die FritzBox nur ein Netz verwalten kann. (Na gut, zwei, wenn man das
"Gast-LAN" mitzählt).

Nach einiger Recherche bin ich dann zu OPNsense gekommen. Das wurde auch in
Proxmox geworfen, die Netzwerkinterfaces aus Proxmox eingeleitet (die
Einrichtung von VLANs in Proxmox war mit einigem Gerätsel verbunden. Die
Verbindung zur FB war ein separates VLAN), und anschließend in Proxmox.
Irgendwann lief es dann.

## Mehr WLAN!

Zu der Zeit habe ich mir dann auch einen Saugroboter zugelegt, nachdem ich von
Valetudo gehört habe. (Die "Cloud" läuft auf dem Saugroboter selbst). Obwohl
streng genommen nicht notwendig, habe ich also ein separates WLAN für "IoT"
eingerichtet.  Der Saugroboter ist momentan auch mein einziges "IoT"-Gerät,
sonst halte ich mich von dem Teufelszeug ;) fern.

Die APs von Ubiquity unterstützen das glücklicherweise. Hat sich also als gute
Wahl erwiesen.

## WPA Enterprise. Because I can.

Irgendwann dachte ich mal, "WPA Personal" mit "pre-shared key" (also
"Passwort", was üblicherweise im privaten Umfeld eingesetzt wird) ist zu
langweilig.  OPNsense bietet dankenswerterweise auch einen Radius-Server. In
dem werden, vereinfacht gesagt, die berechtigten Geräte angelegt.

Das hat eine ganze Weile gut funktioniert. Bei WPA Enterprise hat jedoch
mindestens der Access Point (bzw. der Radius-Server) ein TLS-Zertifikat.
Android schien mit extrem zickig zu sein, was selbst signierte Zertifikate
angeht. Jedes mal, wenn ich die WLAN-Konfiguration aus Android entfernt habe,
hat es das Zertifikat des Radius-Servers mit gelöscht.

Da es mir zu umständlich war, das Zertifikat jedes mal neu zu installieren, bin
ich zu Zertifikaten von Let's Encrypt gewechselt, indem ich OPNsense unter
einer Domain ins öffentliche Internet gestellt hab, damit ich mir per ACME
Zertifikate holen kann.

Irgendwann hat Let's Encrypt dann das "Root Certificate" umgestellt. Das gab
dann nochmal extreme Problem, ich bekam Meldungen, das "Zertifikat ist
abgelaufen". Gemeint war iirc das Intermediate-Zertifikat. Da ich keinen Weg
wusste, das zu lösen, bin ich wieder zurück zu WPA Personal.

## OPNsense - Unbound hat ja auch Blocklisten!

Zwischenzeitlich hab ich meinen PiHole-Container auch wieder abgeschaltet. Ich
hab gesehen, dass Unbound in OPNsense Blocklisten unterstützt.

Was mich allerdings geärgert hat, dass statische DHCP-Leases anscheinend nicht
aufgelöst werden, wenn das betreffende Gerät offline war.

## Drop the DNS?

Die Probleme gingen vor ca. einem Monat los. "Bestimmte Webseiten laden nicht
mehr. Oder arschlahm". Ich konnte mir lange nicht erklären, woran es lag.

DNS? Aber Tests mit dig auf der Kommandozeile verliefen erfolgreich.

Ich hab da viel gefrickelt, geflucht und rebootet. Im Endeffekt war es aber
ziemlich sicher ein DNS-Problem. Aber die genaue Ursache ist mir bis heute
nicht klar. Ich vermute, da wurde was gedroppt. Es scheint sich jedenfalls auf
"irgendwas mit IPv6" zu beziehen. (Oder AAAA Queries).

Bei bestimmten Seiten blieb bei einem HTTPS-Testaufruf via curl der Verkehr bei
"TLS Client Hello" stecken.

Vor ein paar Wochen hab ich erst wieder meinen PiHole-Container gestartet und
das wieder als DNS-Server eingerichtet, da Unbound auf OPNsense auch immer ewig
zum Starten brauchte, eben durch die Blocklisten. Das hat aber anscheinend auch
nur kurzzeitig geholfen.

## OpenWRT to the rescue

Da ich mit OPNsense so langsam die Nase voll habe, hab ich dann mal OpenWRT in
Proxmox installiert und OPNsense abgeschaltet. Danach waren die Probleme
verschwunden.

Die Einstellungen/Firewall habe ich bis heute aber noch nicht vollständig
migriert.

## Es geht doch nix über separate Hardware

Ich hab mir schon vor längerer Zeit mal einen Ubiquity EdgeRouter X zugelegt.
Nach einigem Herumspielen damit habe ich allerdings befunden, dass ich mit dem
User Interface nicht klarkomme. IIRC gab das Interface außerdem in bestimmten
Bereichen (Firewall?) nur IPv4 her, kein IPv6.

Letztes Wochenende habe ich mit nochmal ein Herz gefasst, OpenWRT darauf
gepackt, und das virtualisierte OpenWRT ersetzt. Grund war, dass ein iperf-Test
mittendrin immer abgebrochen ist. Ich vermute mal, die unterliegende Hardware
des ThinkCentre kam mit dem Paketansturm nicht klar.

## PiHole: D...N...S.... ist... so... langsam

Mit dem Setup dachte ich glücklich werden zu können.

Mein PiHole hat zusätzlich einen Unbound laufen, der die ganzen Queries dann
rekursiv ausführt.

Bestimmte DNS-Queries brauchten aber tlw. bis zu drei Sekunden. Das hat mich
als nächstes verrückt gemacht. Das habe ich auch nur herausgefunden, nachdem
ich auf die Idee gekommen bin, in PiHole mal was anderes als Upstream-DNS-
Server einzustellen.

Was genau die Ursache ist - werden die DNS-Pakete vielleicht gedroppt? Kommt
die OpenWRT-Firewall mit dem Connection Tracking nicht klar? Oder dauert das
eigentliche Parsen der DNS-Replies so lange? - habe ich noch nicht untersucht.

Ich bin dann glücklicherweise auf "Stubby" gestoßen. Das ist ein kleines Stück
Software, dass auf "normale" DNS-Queries lauscht, und diese dann als
DNS-over-TLS (DoT) an konfigurierte Server weiterleitet. Und diese Software
wird sogar für OpenWRT paketiert! Genial!

Also habe ich Stubby installiert, den DoT-Server des Digitalcourage e.V. als
Upstream eingerichtet, Stubby als Upstream in PiHole eingestellt, und fertig
ist die Kiste! DNS-Queries dauern jetzt evtl. minimal länger durch die
Krypto-Operationen, aber ich habe ein Setup, dass ich für zuverlässig halte.


## Endstand

- FritzBox läuft im Prinzip nur als Modem und Telefonieserver, und bespielt den
  EdgeRouter mit OpenWRT.
- EdgeRouter mit OpenWRT als "Hauptrouter" für mein Heimnetz. Bedient mein
  "privates LAN", als Router für diverse VLAN-WLANs, und soll zukünftig evtl.
  noch als Wireguard-Endpoint laufen. Dort läuft auch Stubby als DoT-"Proxy".
- Ubiquity WLAN-Access-Point. Ist im Prinzip "nur ein Access Point"
- ThinkCentre mit Proxmox. Hostet diverse VMs, unter anderem das Pi-Hole.
- Zwei "Smart" Switches, die VLAN-Tagging unterstützen, und dafür sorgen, dass
  der Verkehr zwischen Wohnzimmer und Flur läuft.  Naja - streng genommen nur
  noch einer. Den zweiten Switch im Flur hat der EdgeRouter ersetzt.

## Verbleibende Ärgerlichkeiten

Nun, ein Problem bleibt noch. Eigentlich wollte ich den Zugriff auf den
Adressbereich der FritzBox komplett blockieren, sodass keines der Netze mit der
Konfiguration herumspielen kann - mit der Ausnahme meines "privaten LAN".
Leider macht OpenWRT das nicht so einfach, man kann keine Regel nach Prinzip
"blockiere alle Source-Zonen AUSSER einen bestimmten" erstellen, und die
Ausnahme-Regel wird *hinter* die allgemeine Regel gestellt. Keine Ahnung, wie
ich das fixen muss. Ist aber relativ unwichtig.