Mermaid Support für das Blog

Erstellt: 16.04.2022 Bearbeitet: 29.09.2024

Mermaid ist eine Javascript basiertes diagram und Chart Lib, bei der man mit einfachen text bausteinen, Diagramme Schreiben kann.

Beispiele

    ​~~~mermaid
    graph TB
        A --> B
        B --> C
    ​~~~
graph TB A --> B B --> C
    ​~~~mermaid
    erDiagram
            CUSTOMER }|..|{ DELIVERY-ADDRESS : has
            CUSTOMER ||--o{ ORDER : places
            CUSTOMER ||--o{ INVOICE : "liable for"
            DELIVERY-ADDRESS ||--o{ ORDER : receives
            INVOICE ||--|{ ORDER : covers
            ORDER ||--|{ ORDER-ITEM : includes
            PRODUCT-CATEGORY ||--|{ PRODUCT : contains
            PRODUCT ||--o{ ORDER-ITEM : "ordered in"
    ​~~~
erDiagram CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER ||--o{ ORDER : places CUSTOMER ||--o{ INVOICE : "liable for" DELIVERY-ADDRESS ||--o{ ORDER : receives INVOICE ||--|{ ORDER : covers ORDER ||--|{ ORDER-ITEM : includes PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT ||--o{ ORDER-ITEM : "ordered in"
    ~~~mermaid
    stateDiagram-v2
        [*] --> Still
        Still --> [*]
        Still --> Moving
        Moving --> Still
        Moving --> Crash
        Crash --> [*]
    ​~~~
stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]
    ~~~mermaid
    gitGraph
    commit
    commit
    branch two
    commit
    checkout main
    commit
    branch three
    checkout three
    commit
    commit
    checkout main
    commit
    commit
    branch one
    checkout one
    commit
    checkout two
    commit
    checkout main
    merge two
    checkout one
    merge two
    merge three
    commit
    commit
    checkout main
    merge one
    ​~~~
gitGraph commit commit branch two commit checkout main commit branch three checkout three commit commit checkout main commit commit branch one checkout one commit checkout two commit checkout main merge two checkout one merge two merge three commit commit checkout main merge one
    ~~~mermaid
    sequenceDiagram
            title: FancySequenceDiagramaccDescription Test a description
            participant Alice
            participant Bob
            participant John as John<br />Second Line
            rect rgb(20, 20, 100)
            rect rgb(0, 5, 200)
            Alice ->> Bob: Hello Bob, how are you?
            Bob-->>John: How about you John?
            end
            Bob--x Alice: I am good thanks!
            Bob-x John: I am good thanks!
            Note right of John: John thinks a long<br />long time, so long<br />that the text does<br />not fit on a row.
            Bob-->Alice: Checking with John...
            Note over John:wrap: John looks like he's still thinking, so Bob prods him a bit.
            Bob-x John: Hey John - we're still waiting to know<br />how you're doing
            Note over John:nowrap: John's trying hard not to break his train of thought.
            Bob-x John:wrap: John! Are you still debating about how you're doing? How long does it take??
            Note over John: After a few more moments, John<br />finally snaps out of it.
            end
            alt either this
            Alice->>+John: Yes
            John-->>-Alice: OK
            else or this
            Alice->>John: No
            else or this will happen
            Alice->John: Maybe
            end
            par this happens in parallel
            Alice -->> Bob: Parallel message 1
            and
            Alice -->> John: Parallel message 2
            end
    ​~~~
sequenceDiagram title: FancySequenceDiagramaccDescription Test a description participant Alice participant Bob participant John as John
Second Line rect rgb(20, 20, 100) rect rgb(0, 5, 200) Alice ->> Bob: Hello Bob, how are you? Bob-->>John: How about you John? end Bob--x Alice: I am good thanks! Bob-x John: I am good thanks! Note right of John: John thinks a long
long time, so long
that the text does
not fit on a row. Bob-->Alice: Checking with John... Note over John:wrap: John looks like he's still thinking, so Bob prods him a bit. Bob-x John: Hey John - we're still waiting to know
how you're doing Note over John:nowrap: John's trying hard not to break his train of thought. Bob-x John:wrap: John! Are you still debating about how you're doing? How long does it take?? Note over John: After a few more moments, John
finally snaps out of it. end alt either this Alice->>+John: Yes John-->>-Alice: OK else or this Alice->>John: No else or this will happen Alice->John: Maybe end par this happens in parallel Alice -->> Bob: Parallel message 1 and Alice -->> John: Parallel message 2 end

Oder in einfacher

    ~~~mermaid
        sequenceDiagram
            Alice->>+John: Hello John, how are you?
            Alice->>+John: John, can you hear me?
            John-->>-Alice: Hi Alice, I can hear you!
            John-->>-Alice: I feel great!
    ​~~~
sequenceDiagram Alice->>+John: Hello John, how are you? Alice->>+John: John, can you hear me? John-->>-Alice: Hi Alice, I can hear you! John-->>-Alice: I feel great!
    ~~~mermaid
    pie
    "Dogs" : 42.96
    "Cats" : 50.05
    "Rats" : 10.01
    ​~~~
pie "Dogs" : 42.96 "Cats" : 50.05 "Rats" : 10.01

Eine Verabschiedung von 2 netten Kollegen, mit Grillen in Waren

Erstellt: 14.04.2022 Bearbeitet: 29.09.2024
Lecker Fischbrötchen am Hafen, wo die Bettler auch nicht lang auf sich warten lassen haben und uns ein ständischen gaben.

Das war ein Super Wochenende und eine schöne Verabschiedung von Menschen, die ich sehr schätze und die von Kollegen zu Freunden wurden.

Netzwerk Spielerein

Erstellt: 05.04.2022 Bearbeitet: 29.09.2024

Check UDP connection mit netcat und tcpdump

Auf dem Zielhost kann man z.b. mit tcpdump gucken ob Packete rein kommten.

    tcpdump -n port 10011 -vv

und von einem anderen Host kamm man diesen port z.b. mit netcat anpingen.

    nc -vz -u 192.168.100.100 10011
graph RL A[nc] -->|UDP ping| B(tcpdump port 10011)

Benutzte netcat als Sender und Empfänger über UDP

Mit -l kann man netcat auch lauschen lassen (Receiver)

    nc -luk 192.168.100.100 20000

und mit -uv einen connect herstellen von einem anderen cleint und etwas zum Host senden (Sender).

    nc -uv  192.168.100.100 20000
    hello host!<ENTER>

Das sollte auf dem Empfänger ein hello host! augeben

graph LR A[Sender] -->|UDP package| B(Receiver)

SPF Record erstellen und prüfen

Erstellt: 28.03.2022 Bearbeitet: 29.09.2024

SPF (Sender Policy Framework) ist ein recht einfaches verfahren, um missbrauch der eigenen E-Mails ein wenig zu schützen. Mit dem SPF Domain Rekord gibt man an, aus welschen Netz, E-Mails der eigenen Domain versendet werden dürfen.

SPF Record abfragen

Der einfachste weg ist wohl mit host oder dig einen einfache DNS abfrage zu machen, das geht z.b. mit

    host -t TXT gmx.de|grep -i spf
    dig heise.de TXT|grep -i spf
    dig gmx.de TXT|grep -i spf
    dig gmx.net TXT|grep -i spf
    nslookup -q=TXT gmx.net|grep -i spf

Bedeutung der felder

Feld Bedeutung
v Version des Records, v=spf1 z.B.
ip4 IPv4 Adresse oder Adress-rang, z.B. ip4:1.2.3.0/24
ip6 IPv6 Adresse oder Adress-rang, z.B. ip6:2a02:2e0:3fe:1001::/64
a ein A- oder AAAA-Record der befragten (oder explizit angegebenen) Domäne die IP-Adresse des Senders enthält
mx ein MX-Record der befragten (oder explizit angegebenen) Domäne die IP-Adresse des Senders enthält
-all Alle anderen hier nicht aufgeführten Sender sind nicht autorisiert und sollen abgewiesen werden.
~all Softfail, nicht autorisierte Sender, der Empfänger soll diesen Fehlschlag aber großzügig behandeln.
?all Neutral, die Direktive definiert Sender, über deren Legitimität nichts ausgesagt werden soll; der Sender muss so behandelt werden, als wenn kein Qualifikator angegeben wäre.
include eine zusätzliche SPF-Anfrage zur im Include-Statement angegebenen Domain die IP-Adresse des Senders enthält z.B. include:_spfdiv.heise.de
redirect Der SPF-Record einer anderen Domain soll eingeholt und ausgewertet werden z.B. redirect=gmx.net

Beispiel

Aus den Test Abfragen sollte sich der restliche Aufbau von selber erklären.

Im Grunde ist es immer „Version, Regelwerk der eigenen Infrastruktur, Rest mit all“

Beispiel: v=spf1 mx:mx.domain.com a:domain.com ip4:1.2.3.0/24 ~all

Wikipedia Sender Policy Framework

IONOS Was ist ein SPF-Record

Wie Testet man die MTU Größe

Erstellt: 26.03.2022 Bearbeitet: 29.09.2024

Wie oft hat man das Problem, das man in einem Netzwerk, unerklärliche Netzwerk Abbrüche hat. Oft ist der Grund einfach eine falsche MTU Größe, die dazu führt, dass zwar Kommunikation möglich ist aber man bei größeren datenabhängigen auf einmal nichts mehr geht.

Grundlagen

Die MTU (Maximum Transmission Unit) Größe, definiert die Effektiv nutzbare Daten und ist mit jeder zusätzlichen Netzwerkschicht bzw. unterschiedlichen Protokollen anders. Dazu gehören z.b. IPv4 vs. IPv6, UDP vs. TCP oder Ethernet vs. Internet oder VPN. Mit jedem zusätzlichen Feature kommen ein paar Bytes zu Header dazu der die nutzbare Daten-gösse verringert. In einem Lokalen Netz hat man meist eine MTU von 1500 und Richtung Internet so um die 1472.

Eine zu kleine Größe führt dazu, das die Daten in zu viele Pakete aufgesplittet werden, man so mehr Header Daten senden muss und so einen schlechteren Durchsatz hat. Wohingegen zu große Blöcke zu Netzwerkproblemen führen.

Testen

Mit Ping kann man die MTU werte testen. Ping benutzt ICMP als Protokoll was eine Header Größe von 28 Bytes hat mit IPv4 (IPv4=20 bytes + ICMP=8 bytes = 28).

    ping -D -c 2 -s 1472 8.8.8.8

sollte sowas wie das ergeben

    PING 8.8.8.8 (8.8.8.8): 1472 data bytes
    36 bytes from x.1x.1xx.1xx: frag needed and DF set (MTU 1492)
    Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
     4  5  00 05dc 0000   0 0000  3e  01 646f 192.1xx.1x.2xx  8.8.8.8

Jetzt Sagte uns Ping, das Packet müste Fragmentiert werden.

Wenn man die Blockgröße viel zu groß hat sieht es dann so aus.

    ping -D -c 2 -s 1473 8.8.8.8

    PING 8.8.8.8 (8.8.8.8): 1473 data bytes
    ping: sendto: Message too long
    ping: sendto: Message too long

Also Testen wir es nochmal mit den vorgeschlagenen 1492. 1492-28 = 1464

    ping -D -c 2 -s 1464 8.8.8.8

    PING 8.8.8.8 (8.8.8.8): 1464 data bytes
    76 bytes from 8.8.8.8: icmp_seq=0 ttl=115 time=19.860 ms

Das heißt also, wir können eine MTU von 1492 verwenden in dieser Verbindung.

Windows

Unter Windows sind die Argumente ein wenig anders aber es geht dort genau so.

    # windows powershell
    ping -f -n 2 -l 1464 8.8.8.8

    Ping wird ausgeführt für 8.8.8.8 mit 1464 Bytes Daten:
    Antwort von 8.8.8.8: Bytes=68 (gesendet 1464) Zeit=19ms TTL=115

Visual packet size calculator

How to Calculate MTU for Tunnels

 1  2  3  4  5  6  7  
Chronologische Sortierung