Wandern in Schweden

am Bol­men. Es war Tun­dra und Moor und Stein­pil­ze und schön.

 

Wetterstation: Luftdruck richtig eingestellt

Die Wet­ter­sta­ti­on mißt also den Luft­druck, und sie kann nur den mes­sen, der da ist. Der ist aber nur ver­gleich­bar mit ande­ren Luft­drü­cken in der­sel­ben Höhe, das ist zum Bei­spiel beim DWD erklärt. Da mei­ne Sta­ti­on etwa 20 Meter üNN liegt, muß ich also ca. 2,5 abzie­hen vom Meß­wert, um auf den rela­ti­ven Luft­druck zu kommen.

Nichts leich­ter als das:

Und der Effekt:

Home Assistant schön(er) gemacht

Bei mir läuft Home Assi­stant in einem Docker-Con­tai­ner auf einem Raspber­ry Pi 4, schon sehr lan­ge. Anfangs als nati­ve Instal­la­ti­on, da wur­de dann aber die Update­rei bald ner­vig, des­halb Docker, da geht das Updaten (und Down­gra­den) deut­lich schmerz­frei­er — mitt­ler­wei­le küm­mert sich watch­tower dar­um, das geht alles voll­au­to­ma­tisch, sehr schick.
Dann kam irgend­wann der Wunsch auf, die Instal­la­ti­on auch aus dem Inter­net zugäng­lich zu machen. Der nächst­lie­gen­de Gedan­ke war, auf dem Rou­ter ein­fach ein Port­for­war­ding zu schal­ten: Router:TCP/443 -> Pi:TCP/443. Das hat aber min­des­tens zwei Probleme:

  • DNS-Name. Ich habe zwar die Domain sokoll.com, aber die IP des Rou­ters ändert sich zwar sel­ten, aber eben doch ab und an. Dann müß­te das DNS nach­ge­zo­gen wer­den. Unter der Vor­aus­set­zung, daß man den Wech­sel der IP über­haupt bemerkt hat.
  • TLS-Zer­ti­fi­kat für den Web­ser­ver. Natür­lich will ich nichts selbst­si­gnier­tes, Let’s Encrypt soll es schon sein. Dann geht aber die HTTP chal­len­ge nicht. DNS chal­len­ge gin­ge, mache ich ohne­hin, aber dann müß­te ich wild mit cron­jobs ham­peln und das Zer­ti­fi­kat von mei­nem Net­cup-Ser­ver holen.

Alles nicht so fein. Also muß­te eine ande­re Lösung her: der DNS-Name zeigt auf mei­nen Ser­ver bei Net­cup, dort läuft ein Apa­che als rever­se proxy:

<VirtualHost 185.207.105.125:443 [2a03:4000:1e:181::1]:443>
  Protocols h2 http/1.1
  ServerName hass.sokoll.com
  ServerAlias home.sokoll.com
  ServerAdmin webmaster@sokoll.com
  ErrorLog ${APACHE_LOG_DIR}/hass.sokoll.com-error.log
  CustomLog ${APACHE_LOG_DIR}/hass.sokoll.com-access.log combined
  SSLCertificateFile /etc/dehydrated/certs/wildcard_sokoll.com/fullchain.pem
  SSLCertificateKeyFile /etc/dehydrated/certs/wildcard_sokoll.com/privkey.pem
  ProxyRequests off
  ProxyPreserveHost On
  ProxyPass /api/websocket wss://91.66.45.77/api/websocket
  ProxyPassReverse /api/websocket wss://91.66.45.77/api/websocket
  ProxyPass / https://91.66.45.77/
  ProxyPassReverse / https://91.66.45.77/
  SSLProxyEngine on
  SSLProxyCheckPeerCN off
  SSLProxyCheckPeerExpire off
  SSLProxyCheckPeerName off
</VirtualHost>

(die IP ist schon lan­ge nicht mehr gültig)
Das heißt: Der Request kommt bei Net­cup an, und der Apa­che dort schubst ihn dann wei­ter zu mei­nem Rou­ter, dort gibt es ein Port­for­war­ding auf den Pi. Nicht son­der­lich ele­gant, funk­tio­niert aber.

Nun änder­te sich kürz­lich die IP wie­der, und ich muß­te die Web­ser­ver-Kon­fi­gu­ra­ti­on ändern, hat­te mich ver­tippt, ging nicht, Feh­ler suchen und fin­den und behe­ben, bis zum nächs­ten IP-Wech­sel, das ist doch alles Mist.
Auf dem Ser­ver läuft ein #Wire­guard, das ver­sorgt ein Tele­fon und einen Lap­top mit #Piho­le, das könn­te doch auch den Pi bedie­nen? Wenn dann der Pi den Tun­nel auf­baut, hät­te ich immer die­sel­ben IPs und könn­te mir das gan­ze Geham­pel mit Port­for­war­ding auf dem Rou­ter sparen.
Wire­guard ist sim­pel. Auf dem Server:

~$ ssh -l root big wg
interface: wg0
  public key: RzZAu5Js3c8/5yQBPlhKg2b0jkOlxHT6vLreiC1BCgo=
  private key: (hidden)
  listening port: 51820

peer: yS2cSLvEovdsLLT8ne/lixoiU87o821TgBkzrVHRFS4=
  endpoint: 91.66.61.253:35710
  allowed ips: 192.168.3.6/32
  latest handshake: 1 minute, 21 seconds ago
  transfer: 16.10 MiB received, 1.83 MiB sent

peer: RF22N9Kb6AO0N+jqZvSIdPxtZj3CxgasdgwuW6ktGys=
  endpoint: 91.66.61.253:58623
  allowed ips: 192.168.3.5/32
  latest handshake: 1 minute, 45 seconds ago
  transfer: 50.42 MiB received, 715.71 MiB sent

peer: OAbhrovugDdR8he1UIzy67Szh798C4lxWelSwrd3Z3o=
  endpoint: 91.66.61.253:1024
  allowed ips: 192.168.3.4/32
  latest handshake: 1 minute, 49 seconds ago
  transfer: 19.73 MiB received, 77.50 MiB sent
~$

Auf dem Pi:

~$ ssh -l root r4 wg
interface: wg0
  public key: yS2cSLvEovdsLLT8ne/lixoiU87o821TgBkzrVHRFS4=
  private key: (hidden)
  listening port: 35710

peer: RzZAu5Js3c8/5yQBPlhKg2b0jkOlxHT6vLreiC1BCgo=
  endpoint: 185.207.105.125:51820
  allowed ips: 192.168.3.1/32
  latest handshake: 15 seconds ago
  transfer: 1.03 MiB received, 8.97 MiB sent
  persistent keepalive: every 25 seconds
~$

In der Apa­che-Kon­fi­gu­ra­ti­on oben noch die VPN-Adres­se des Pi ein­tra­gen und Apa­che reloaden.
Fertsch. Funk­tio­niert traumhaft.
Gut. Ein Pro­blem hat­te ich: Der Tun­nel wird von innen auf­ge­baut, solan­ge da kei­ne Pake­te lau­fen, ist der Tun­nel unten, und das gan­ze schö­ne Kon­strukt funk­tio­niert nicht. Man könn­te einen Dau­er-ping im Hin­ter­grund lau­fen las­sen, aber das wäre nun wirk­lich uncool. Und dann ent­deck­te ich eben persistent keepalive, was das Pro­blem ele­gant löst.

Wire­guard rockt da house!

Q: Warum? A: Weil es geht!

Ich habe bei AWS (Nord Vir­gi­nia) eine VM in der kleins­ten (kos­ten­lo­sen) Ausführung.
Auf der läuft ein Wire­guard, mein Tele­fon ist prak­tisch stän­dig ein­ge­loggt. Funk­tio­niert. Wo ich frü­her bei etwa Spie­gel Online Wer­bung hat­te, wel­che die bes­ten Rechts­an­wäl­te in Greifs­wald sei­en, sehe ich nun Wer­bung, wo in Ashburn VA SUVs fast ver­schenkt werden 🙂
Da ich ja krank geschrie­ben bin und also Zeit habe, habe ich mir ein mei­nem Heim­netz mal ein Pi-Hole instal­liert. Das funk­tio­niert erstaun­lich effek­tiv, damit hat­te ich nicht gerech­net. Sicher, ein Wer­be­blo­cker im Brow­ser funk­tio­niert noch erfolg­rei­cher, aber bei Mobil­ge­rä­ten ist das meist nicht mög­lich, und sobald es zu gene­ri­schen Apps kommt, ist es ganz vor­bei. Und da scheint Pi-Hole einen her­vor­ra­gen­den Job zu machen.
Aller­dings: Wenn ich im VPN bin, nützt das nichts. Ich könn­te zwar den Pi-Hole im LAN als DNS-Ser­ver ein­tra­gen, aber wenn ich mobil unter­wegs bin, ist der ja nicht mehr erreichbar.
Aber: anders als es der Name ver­mu­ten läßt, kann man Pi-Hole nicht nur auf einem Raspber­ry Pi instal­lie­ren, son­dern prak­tisch über­all, wo ein dns­masq lau­fen könn­te. Also auch auf mei­ner Ama­zon-VM, das ist ein Debi­an. In Wire­guard auf dem Tele­fon wird das wg0 des VPN-Ser­vers als DNS-Ser­ver eingetragen:


Scheint sofort zu funktionieren 🙂

 

Hüb­sche Spie­le­rei mit Nutzeffekt.

 

#wire­guard #pi-hole #piho­le

EdgeOS, IPv6 and hwnat

For the archive

IPv6 rou­ting sucks on the ER‑X, tes­ted with iperf3 from a LAN station:

pi@r4:~ $ iperf3 -6 -c iperf.par2.as49434.net -p 9231
Connecting to host iperf.par2.as49434.net, port 9231
[ 5] local 2001:470:6d:c40:828b:eb2f:26f:523e port 49342 connected to 2a0f:9240:1018::2 port 9231
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 172 KBytes 1.41 Mbits/sec 1 1.38 KBytes
[ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 1 1.38 KBytes
[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 1 1.38 KBytes
[ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec 0 1.38 KBytes
[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 1 1.38 KBytes
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 0 1.38 KBytes
[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 0 1.38 KBytes
[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 0 1.38 KBytes
[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 1 1.38 KBytes
[ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 0 1.38 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 172 KBytes 141 Kbits/sec 5 sender
[ 5] 0.00-10.07 sec 39.9 KBytes 32.4 Kbits/sec receiver

iperf Done.
pi@r4:~ $

From the rou­ter itself:

ubnt@sokoll-router:~$ iperf3 -6 -c iperf.par2.as49434.net -p 9231
Connecting to host iperf.par2.as49434.net, port 9231
[ 5] local 2001:470:6c:c40::2 port 46362 connected to 2a0f:9240:1018::2 port 9231
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 3.81 MBytes 31.9 Mbits/sec 0 382 KBytes
[ 5] 1.00-2.00 sec 6.11 MBytes 51.3 Mbits/sec 42 421 KBytes
[ 5] 2.00-3.00 sec 5.25 MBytes 44.0 Mbits/sec 5 333 KBytes
[ 5] 3.00-4.00 sec 4.76 MBytes 39.9 Mbits/sec 0 364 KBytes
[ 5] 4.00-5.00 sec 5.31 MBytes 44.5 Mbits/sec 0 385 KBytes
[ 5] 5.00-6.00 sec 4.32 MBytes 36.3 Mbits/sec 0 395 KBytes
[ 5] 6.00-7.00 sec 4.57 MBytes 38.3 Mbits/sec 2 292 KBytes
[ 5] 7.00-8.00 sec 3.83 MBytes 32.1 Mbits/sec 0 316 KBytes
[ 5] 8.00-9.00 sec 3.77 MBytes 31.6 Mbits/sec 3 239 KBytes
[ 5] 9.00-10.00 sec 2.90 MBytes 24.4 Mbits/sec 3 182 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 44.6 MBytes 37.4 Mbits/sec 55 sender
[ 5] 0.00-10.14 sec 43.5 MBytes 36.0 Mbits/sec receiver

iperf Done.
ubnt@sokoll-router:~$

That comes clo­se to my regu­lar upload bandwidth.

Now if I dis­able off­loading for NAT:

ubnt@sokoll-router:~$ configure
[edit]
ubnt@sokoll-router# set system offload hwnat disable
[edit]
ubnt@sokoll-router# commit
[edit]
ubnt@sokoll-router#

results in

pi@r4:~ $ iperf3 -6 -c iperf.par2.as49434.net -p 9231
Connecting to host iperf.par2.as49434.net, port 9231
[ 5] local 2001:470:6d:c40:828b:eb2f:26f:523e port 37006 connected to 2a0f:9240:1018::2 port 9231
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 4.26 MBytes 35.7 Mbits/sec 0 443 KBytes
[ 5] 1.00-2.00 sec 5.81 MBytes 48.7 Mbits/sec 40 433 KBytes
[ 5] 2.00-3.00 sec 5.56 MBytes 46.6 Mbits/sec 0 491 KBytes
[ 5] 3.00-4.00 sec 6.05 MBytes 50.8 Mbits/sec 40 368 KBytes
[ 5] 4.00-5.00 sec 4.08 MBytes 34.2 Mbits/sec 36 286 KBytes
[ 5] 5.00-6.00 sec 3.71 MBytes 31.1 Mbits/sec 0 311 KBytes
[ 5] 6.00-7.00 sec 4.94 MBytes 41.5 Mbits/sec 0 324 KBytes
[ 5] 7.00-8.00 sec 4.39 MBytes 36.8 Mbits/sec 0 330 KBytes
[ 5] 8.00-9.00 sec 4.32 MBytes 36.3 Mbits/sec 0 330 KBytes
[ 5] 9.00-10.00 sec 4.32 MBytes 36.3 Mbits/sec 0 330 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 47.4 MBytes 39.8 Mbits/sec 116 sender
[ 5] 0.00-10.06 sec 46.4 MBytes 38.7 Mbits/sec receiver

iperf Done.
pi@r4:~ $

It’s magic!

I’ll moni­tor the CPU load and see whe­ther dis­ab­ling hwnat impacts the router’s performance.

CEO Fraud

Every now and then, an email arri­ves at my com­pa­ny mailserver.

From: surname_big_boss lastname_big_boss <attacker@example.com>
To: surname_victim lastname_victim <victim@mycompany.com>

It is always the same: the atta­cker asks for the victim’s mobi­le num­ber or Whats­app num­ber, — and in the end, they will trick the vic­tim into trans­fer­ring money to the atta­cker. See https://en.wikipedia.org/wiki/Email_spoofing#Business_email
And unfor­tu­n­a­te­ly, I had user in the past who replied 🙁

Of cour­se, you can­not block the attacker’s email address, becau­se it chan­ges with every new attack.
But what if we block ever­ything with the dis­play name “surname_big_boss lastname_big_boss” and an email domain that is NOT one of ours? With post­fix and regu­lar expres­si­ons, that is qui­te easy:

~# grep ^header_checks /etc/postfix/main.cf
header_checks = pcre:/etc/postfix/header_checks_map
~#

Sil­ly naming, I know. It is not a map. But names are not important 😉

And now in /etc/postfix/header_checks_map

/^From: +surname_big_boss +lastname_big_boss +<.+@(?!mycompany\.(de|com)).*>$/i REJECT Go away phisher

Don’t for­get to rel­oad post­fix after you made the change.

Of cour­se, this works not so good if your boss is “Peter Smith”… Mine has a more uni­que name.

Die Tagesschau sagt etwas, ohne etwas zu sagen

und sehr vie­le ande­re Medi­en auch, aber blei­ben wir bei der Tages­schau als Leit­me­di­um: Es wird berich­tet, Selen­skyj habe ein Inter­view gege­ben, die­ses sei aber in Ruß­land zen­siert. Bei der Tages­schau aller­dings auch, jeden­falls gibt es kei­nen Link. Oder meint man etwa, als Tages­schau kei­ne Bele­ge mehr lie­fern zu müs­sen? Dann soll­te man sich nicht wun­dern, als Lügen­pres­se beschimpft zu werden.

Seri­ös ist das nicht jeden­falls. Deshalb:

Link auf Medu­za: https://meduza.io/feature/2022/03/27/eto-ne-prosto-voyna-vse-gorazdo-huzhe
Link auf You­tube: https://www.youtube.com/watch?v=mQRTKvoLAEM

Stefan Heym, 5 Tage im Juni

Heym schreibt über den 17. Juni 1953 in Ber­lin, er hat es erlebt. Er schreibt also als unbe­tei­lig­ter Augenzeuge.
Die Erzäh­lung beginnt am 13. und endet am 17. Juni, sie spielt im VEB Mer­kur, einem fik­ti­ven Betrieb in Ber­lin. Held ist der Gewerk­schafts­chef Mar­tin Wit­te, (natür­lich) ein SED-Genosse.
Die Arbeits­nor­men sind gera­de staat­li­cher­seits rabi­at erhöht wor­den, Wit­te ist Gewerk­schaf­ter genug, für die Arbei­ter ein­zu­tre­ten und die Erhö­hung abzu­leh­nen — bis hin zum Minis­ter geht er. Das bringt ihn natür­lich in Kon­flikt mit sei­ner Par­tei, auch die Sta­si ist involviert.
Tat­säch­lich (es ist nicht Wit­tes Ver­dienst) wird die Norm­er­hö­hung zurück­ge­nom­men, doch es ist zu spät. Die Bewe­gung ist eine dif­fus poli­ti­sche gewor­den, immer wie­der geht es um den Gegen­satz “wir hier unten” und “die da oben” Es ist 1953, also 20 Jah­re nach 1933, vie­le Arbei­ter erin­nern sich noch an die Arbeits­kämp­fe bis zurück zum Kai­ser. Doch jetzt ist es ja eine Arbei­ter­re­pu­blik, angeb­lich — wie kann man als Arbei­ter gegen deren Füh­rung strei­ken? Denn es geht nicht um Auf­stand, son­dern um Streik, bis hin zum Gene­ral­streik. Eine Füh­rung gibt es übri­gens nicht, hat es wohl auch in der Rea­li­tät nicht gegeben.
Der Roman hat eini­ge Sei­ten­li­ni­en: Eine Lie­bes­ge­schich­te, die Rol­le des RIAS, die sowje­ti­sche Ver­wal­tung, die wei­ter sieht als die SED-Kader, die Rol­le der West-SPD. Min­des­tens zwei Erschos­se­ne gibt es auch.

Was mir das Lesen schwer gemacht hat: Die Spra­che. Die Spra­che aller betei­lig­ten ist sta­li­nis­tisch: Auf wel­cher Sei­te stehst Du, wir oder sie, sowas eben. Das mag damals so gewe­sen, heu­te liest sich das wie aus dem Mit­tel­al­ter. Teil­wei­se meint man, ein Brecht­sches Lehr­stück zu lesen:

Dabei bedach­te sie

in bezug auf Gadebusch:

daß du mir bei der Hit­ze nicht ver­gißt abends zu spren­gen hat er gesagt ich will nicht daß mir der Rasen ver­brennt bloß weil ich mit muß auf den ver­damm­ten Ausflug

Ich fin­de das Buch schlecht geschrie­ben, und inhalt­lich fin­de ich die Form dem Gegen­stand nicht angemessen.
Gro­ße Wor­te eines klei­nen Blog­gers gegen­über Heym, das ist mir bewußt. Aber wer einen Zugang zu Heym sucht, dem wür­de ich ande­res emp­feh­len, den König David Bericht etwa.

Inter­es­sant aber ist der Roman auf jeden Fall wegen sei­ner Ver­öf­fent­li­chungs­ge­schich­te (er durf­te in der DDR erst 1989 erscheinen)

Lese­emp­feh­lung? Nein, es sei denn, man ist sehr spe­zi­ell interessiert

#aus­ge­le­sen

Jurek Becker, Jakob der Lügner

Was für ein Buch!

Die­ses gehört zum Beein­dru­ckends­ten, was ich in letz­ter Zeit gele­sen habe.

Die Geschich­te spielt in einem namen­lo­sen jüdi­schen Ghet­to irgend­wo in Ost­eu­ro­pa. Es gibt einen eben­so namen­lo­sen Erzäh­ler, der die Geschich­te von Jakob Heym erzählt, einem schein­bar etwas älte­rem Juden, frü­her hat ihm eine Wirt­schaft gehört: win­ters Kar­tof­fel­puf­fer, som­mers Eis.
Das Ghet­to ist sozu­sa­gen schon immer da gewe­sen, nur manch­mal erin­nern sich die Men­schen, wie es vor dem Ghet­to und vor dem Krieg war. Die jüdi­schen Män­ner arbei­ten am Bahn­hof, ver­la­den Güter. Manch­mal kommt ein Zug mit Vieh­wa­gen vor­bei, in ihnen Men­schen. Jeder weiß, wel­chem Schick­sal die­se Men­schen entgegenfahren.
Eines Tages schnappt Jakob in einer deut­schen Ver­wal­tungs­stel­le einen Fet­zen aus einem Radio auf: Kämp­fe bei (den Namen des Ortes habe ich ver­ges­sen). Der Ort ist nicht ganz dicht, aber doch so dicht, daß man ihn kennt, die Kämp­fe zwi­schen den Deut­schen und der Sowjet­ar­mee wer­den Jakob also bewußt.
Und so beginnt die Geschich­te: Jakob erzählt sei­nem bes­ten Freund von den Kämp­fen, aber nicht etwa, daß er das im Radio auf einer deut­schen Wachstu­be auf­ge­schnappt hat, da ist noch nie ein Jude lebend wie­der raus­ge­kom­men, des­we­gen wür­de nie­mand ihm das glau­ben. Aber er möch­te, daß die Kämp­fe bekannt wer­den, damit die Men­schen Mut fas­sen. Und so lügt er, er hät­te sel­ber ein Radio und es eben mit die­sem Radio gehört. Selbst­ver­ständ­lich wür­de es den sofor­ti­gen Tod bedeu­ten, wenn die Deut­schen ein Radio fän­den oder auch nur den Ver­dacht bekä­men, Jakob wür­de ein Radio besitzen.
Die Nach­richt von den Kämp­fen spricht sich schnell im Ghet­to her­um, die Leu­te begin­nen Mut zu schöp­fen — und ver­lan­gen nach mehr guten Nach­rich­ten, denn Jakob säße mit sei­nem Radio ja an der Nachrichtenquelle.
Aber Jakob hat eben kein Radio und so erfin­det er immer wie­der neue hoff­nun­ger­we­cken­de Nach­rich­ten. Der­weil geht das Leben im Ghet­to wei­ter. Men­schen wer­den erschos­sen, brin­gen sich um, ein auf­ge­weck­tes klei­nes Mäd­chen, des­sen Eltern abge­holt wur­den, wird versteckt.
Jakob fällt es immer schwe­rer, neue Nach­rich­ten zu erfin­den, und em Ende gibt es zwei Enden, aus denen wir Leser wäh­len können.
Bei­de sind nicht schön.

Eine sehr trau­ri­ge, poe­ti­sche und manch­mal auch lus­ti­ge Geschich­te, zau­ber­haft geschrie­ben. Unwei­ger­lich kom­men beim Lesen Gemäl­de von Chagall in den Kopf, die sind eben­so bunt, phan­tas­tisch, absurd.

Der Wiki­pe­dia-Arti­kel zum Buch hat noch eini­ge Hintergrundinformationen

Lese­be­fehl!

#aus­ge­le­sen