Skip to content

Wichtig Netzwerkbefehle

Linux
  • Wenn man Server aufsetzt und Domainnamen zuweisen muss, kommt man immer wieder in Verlegenheit verschiedene Netzwerkeigenschaften zu testen. Das hier sollte jeder von Euch kennen.

    ping 8.8.8.8
    ping www.google.com
    

    Gibt uns so was zurück

    frank@frank-MS-7C37:~$ ping 8.8.8.8
    PING 8.8.8.8 (8.8.8.8) 56(84) Bytes Daten.
    64 Bytes von 8.8.8.8: icmp_seq=1 ttl=113 Zeit=19.1 ms
    64 Bytes von 8.8.8.8: icmp_seq=2 ttl=113 Zeit=18.7 ms
    64 Bytes von 8.8.8.8: icmp_seq=3 ttl=113 Zeit=16.9 ms
    ^C
    --- 8.8.8.8 ping statistics ---
    3 Pakete übertragen, 3 empfangen, 0% Paketverlust, Zeit 2002ms
    rtt min/avg/max/mdev = 16.936/18.249/19.122/0.945 ms
    

    Nun wissen wir, das an der angegebenen IP ein Server antwortet. Das selbe mit IPv6

    frank@frank-MS-7C37:~$ ping 2001:4860:4860::8888
    PING 2001:4860:4860::8888(2001:4860:4860::8888) 56 Datenbytes
    64 Bytes von 2001:4860:4860::8888: icmp_seq=1 ttl=114 Zeit=20.1 ms
    64 Bytes von 2001:4860:4860::8888: icmp_seq=2 ttl=114 Zeit=18.7 ms
    64 Bytes von 2001:4860:4860::8888: icmp_seq=3 ttl=114 Zeit=15.9 ms
    ^C
    --- 2001:4860:4860::8888 ping statistics ---
    3 Pakete übertragen, 3 empfangen, 0% Paketverlust, Zeit 2002ms
    rtt min/avg/max/mdev = 15.872/18.207/20.063/1.744 ms
    

    Jetzt kommt es vor, das man den Domainnamen umgestellt hat, die Änderung im Internet aber etwas dauert. Wenn man schauen will, auf welchen Server der Domainname verweist, macht man folgendes.

    frank@frank-MS-7C37:~$ dig forum.frank-mankel.org
    
    ; <<>> DiG 9.16.1-Ubuntu <<>> forum.frank-mankel.org
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37120
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 65494
    ;; QUESTION SECTION:
    ;forum.frank-mankel.org.		IN	A
    
    ;; ANSWER SECTION:
    forum.frank-mankel.org.	208	IN	A	136.243.29.254
    
    ;; Query time: 0 msec
    ;; SERVER: 127.0.0.53#53(127.0.0.53)
    ;; WHEN: Fr Sep 24 19:57:18 CEST 2021
    ;; MSG SIZE  rcvd: 67
    

    Wichtig ist das hier

        ;; ANSWER SECTION:
        forum.frank-mankel.org.	208	IN	A	136.243.29.254
    

    Das zeigt uns, auf welchen Server der Domainname verweist. Nun mal mit IPv6

    frank@frank-MS-7C37:~$ dig forum.frank-mankel.org AAAA
    
    ; <<>> DiG 9.16.1-Ubuntu <<>> forum.frank-mankel.org AAAA
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29154
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 65494
    ;; QUESTION SECTION:
    ;forum.frank-mankel.org.		IN	AAAA
    
    ;; ANSWER SECTION:
    forum.frank-mankel.org.	600	IN	AAAA	2a01:4f8:160:5339::254
    
    ;; Query time: 40 msec
    ;; SERVER: 127.0.0.53#53(127.0.0.53)
    ;; WHEN: Fr Sep 24 20:01:06 CEST 2021
    ;; MSG SIZE  rcvd: 79
    

    Jetzt hat man manchmal eigene DNS-Server aufgesetzt und muss das kontrollieren, das geht so. Hier am Beispiel Google.

    frank@frank-MS-7C37:~$ dig @8.8.8.8 forum.frank-mankel.org
    
    ; <<>> DiG 9.16.1-Ubuntu <<>> @8.8.8.8 forum.frank-mankel.org
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 459
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;forum.frank-mankel.org.		IN	A
    
    ;; ANSWER SECTION:
    forum.frank-mankel.org.	600	IN	A	136.243.29.254
    
    ;; Query time: 24 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Fr Sep 24 20:03:17 CEST 2021
    ;; MSG SIZE  rcvd: 67
    

    Wichtig ist hier folgendes

    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    

    zeigt uns, das die Anfrage von diesem Server beantwortet wurde. Alle anderen, siehe oben, wurden von diesem Server beantwortet.

    ;; SERVER: 127.0.0.53#53(127.0.0.53)
    

    Was war noch wichtig, beim Erstellen meiner Server auf dem Proxmox 🤔 Ports sind noch ein wichtiges Thema. Dazu kann man nmap benutzen. Das scannt die angegebene Adresse nach offene Ports ab.

    root@webserver1-php:~# nmap 136.243.29.254
    Starting Nmap 7.80 ( https://nmap.org ) at 2021-09-24 20:15 CEST
    Nmap scan report for static.254.29.243.136.clients.your-server.de (136.243.29.254)
    Host is up (0.00018s latency).
    Not shown: 996 filtered ports
    PORT     STATE SERVICE
    22/tcp   open  ssh
    80/tcp   open  http
    443/tcp  open  https
    4567/tcp open  tram
    
    Nmap done: 1 IP address (1 host up) scanned in 5.15 seconds
    

    Ok, 4567 muss nicht auf sein. Direkt mal ändern, in meinen Firewall Einstellungen, war der Zugriff auf den Port erlaubt(?). Vermutlich vom Testen, irgendwann mal übergeblieben. Die beiden Zeilen gelöscht und iptables neu geladen. (editiert am 25.9.21)

            $IP4TABLES -A INPUT -p tcp --dport 4567 -j ACCEPT
            $IP6TABLES -A INPUT -p tcp --dport 4567 -j ACCEPT
    

    Danach Kontrolle.

    root@webserver1-php:~# nmap 136.243.29.254
    Starting Nmap 7.80 ( https://nmap.org ) at 2021-09-24 20:24 CEST
    Nmap scan report for static.254.29.243.136.clients.your-server.de (136.243.29.254)
    Host is up (0.00021s latency).
    Not shown: 997 filtered ports
    PORT    STATE SERVICE
    22/tcp  open  ssh
    80/tcp  open  http
    443/tcp open  https
    
    Nmap done: 1 IP address (1 host up) scanned in 5.14 seconds
    

    Jetzt ist schön 😊

    Wie kann man denn einen Dienst testen? Dazu kann man telnet benutzen.

    root@webserver1-php:~# telnet 136.243.29.254 80
    Trying 136.243.29.254...
    Connected to 136.243.29.254.
    Escape character is '^]'.
    

    Das hier zeigt uns einen Verbindungsversuch auf Port 80 (http), dieser Versuch war erfolgreich. Ein erfolgloser Versuch, sieht so aus.

    root@webserver1-php:~# telnet 136.243.29.254 4567
    Trying 136.243.29.254...
    telnet: Unable to connect to remote host: Connection refused
    

    Das kann nun mehrere Ursachen haben

    • iptables blockt den Port
    • der Dienst ist gar nicht gestartet, oder mit Fehler ausgestiegen usw.

    Zum Schluss noch einen traceroute. Ein traceroute zeigt uns den Weg zum Server.

    root@webserver1-php:~# traceroute 8.8.8.8
    traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
     1  static.xxx.xx.243.136.clients.your-server.de (136.243.xx.xxx)  0.053 ms  0.031 ms  0.023 ms
     2  static.129.9.9.5.clients.your-server.de (5.9.9.129)  0.352 ms  0.390 ms  0.376 ms
     3  * * *
     4  core1.fra.hetzner.com (213.239.229.77)  4.821 ms core1.fra.hetzner.com (213.239.203.153)  17.872 ms core1.fra.hetzner.com (213.239.229.77)  12.502 ms
     5  google.peering.cz (91.213.211.170)  15.142 ms  11.622 ms  11.583 ms
     6  108.170.245.49 (108.170.245.49)  11.473 ms 108.170.245.33 (108.170.245.33)  11.683 ms 108.170.245.49 (108.170.245.49)  14.364 ms
     7  108.170.238.161 (108.170.238.161)  12.702 ms 108.170.238.157 (108.170.238.157)  11.587 ms  11.609 ms
     8  dns.google (8.8.8.8)  11.513 ms  14.383 ms  11.528 ms
    

  • Linux security update [DSA 5658-1]

    Linux
    1
    0 Stimmen
    1 Beiträge
    166 Aufrufe
    Niemand hat geantwortet
  • MongoDB - Erste Erfahrungen

    Linux
    2
    0 Stimmen
    2 Beiträge
    54 Aufrufe
    FrankMF

    So frisch von der MongoDB Front und wieder viel gelernt, weil beim Üben macht man Fehler 🙂

    Oben war ja mongodump & mongorestore von der KI empfohlen. Hier das wie ich es gemacht habe.

    mongodump frank@redis-stack:~$ mongodump -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio -o mongodump/ 2024-04-06T09:29:25.174+0200 writing portfolio.stockList to mongodump/portfolio/stockList.bson 2024-04-06T09:29:25.175+0200 writing portfolio.users to mongodump/portfolio/users.bson 2024-04-06T09:29:25.175+0200 done dumping portfolio.stockList (8 documents) 2024-04-06T09:29:25.176+0200 writing portfolio.total_sum to mongodump/portfolio/total_sum.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.total_sum (1 document) 2024-04-06T09:29:25.177+0200 writing portfolio.old_total_sum to mongodump/portfolio/old_total_sum.bson 2024-04-06T09:29:25.177+0200 writing portfolio.stocks to mongodump/portfolio/stocks.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.users (4 documents) 2024-04-06T09:29:25.178+0200 writing portfolio.settings to mongodump/portfolio/settings.bson 2024-04-06T09:29:25.178+0200 done dumping portfolio.settings (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.old_total_sum (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.stocks (34 documents) mongorestore mongorestore -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio mongodump/meineDatenbank/

    Hier wird die Datensicherung mongodump/meineDatenbank/ in die neue Datenbank portfolio transferiert.

    Grund für das Ganze? Mich hatte der Datenbank Name meineDatenbank gestört.

    Benutzerrechte

    Jetzt der Teil wo man schnell was falsch machen kann 🙂 Ich hatte also die neue Datenbank, konnte sie aber nicht lesen. Fehlten halt die Rechte. Ich hatte dann so was hier gemacht.

    db.updateUser("frank", { roles: [ { role: "readWrite", db: "meineDatenbank" }, { role: "readWrite", db: "portfolio" }]})

    Ging auch prima, kam ein ok zurück. Nun das Problem, ich hatte beim Einrichten, den User frank als admin benutzt. Durch den oben abgesetzten Befehl (frank ist ja admin), wurden die neuen Rechte gesetzt und die Rechte als Admin entzogen!! Das war jetzt nicht wirklich das was ich gebrauchen konnte. LOL

    Ich hatte jetzt keine Kontrolle mehr über die DB. Das war aber nicht so wirklich kompliziert, das wieder zu ändern. Die Authentication temporär abstellen. Also /etc/mongod.conf editieren und

    #security: security.authorization: enabled

    eben mal auskommentieren. Den Daemon neustarten und anmelden an der DB.

    mongosh --host 192.168.3.9

    Danach neuen User anlegen

    db.createUser({ user: "<name>", pwd: "<password>", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })

    mongod.conf wieder ändern und neustarten. Danach hat man wieder eine DB mit Authentifizierung und einen neuen Admin. Ich bin diesmal, man lernt ja, anders vorgegangen. Es gibt nun einen Admin für die DB und einen User zum Benutzen der Datenbanken! So wie man es auch auf einem produktiven System auch machen würde. Wenn ich jetzt mal was an den Benutzerrechten des Users ändere, kann mir das mit dem Admin nicht mehr passieren. Hoffe ich 🙂

  • Manjaro - KDE Plasma 6

    Linux
    1
    0 Stimmen
    1 Beiträge
    161 Aufrufe
    Niemand hat geantwortet
  • Debian Bookworm 12.5 released

    Linux
    3
    0 Stimmen
    3 Beiträge
    97 Aufrufe
    FrankMF

    Und hier taucht es dann auf -> https://www.debian.org/News/2024/20240210

  • Flatpak - Signal

    Linux
    1
    0 Stimmen
    1 Beiträge
    66 Aufrufe
    Niemand hat geantwortet
  • Firefox 122 als .deb Paket

    Linux
    1
    0 Stimmen
    1 Beiträge
    103 Aufrufe
    Niemand hat geantwortet
  • KDE Plasma 6 - RC1

    Linux
    3
    0 Stimmen
    3 Beiträge
    94 Aufrufe
    FrankMF

    Heute die letzte Unstable Edition von KDE Neon installiert. Es gab folgende Version.

    neon-unstable-20240201-2132.iso

    Meldet sich bei mir immer noch nur als DEV Version und nicht als RC2 🤔 Wenn einer einen Tipp für mich hat....

    Der Installer soll mich ja nicht mehr interessieren, aber mir ist aufgefallen, das er jetzt den Standort hinbekommt.

    Ansonsten läuft es soweit rund. Habt ihr schon mal einen Firefox ohne Addblocker benutzt? Grausam! Kann mir gar nicht vorstellen, so was in meinem Leben nochmal zu benutzen.

  • ZFS - Wichtige Befehle

    Linux
    2
    0 Stimmen
    2 Beiträge
    386 Aufrufe
    FrankMF

    Unter dem Beitrag sammel ich mal ein paar Beispiele, für mich zum Nachlesen 🙂

    Den Anfang macht die

    ZFS-Replication

    Ich hatte Am Anfang ein wenig Verständnisprobleme, bis es klar war, das diese Replication von Pool zu Pool funktioniert. Also brauchen wir zwei vorhandene ZFS-Pools.

    root@pbs:/mnt/datastore/datapool/test# zfs list NAME USED AVAIL REFER MOUNTPOINT Backup_Home 222G 677G 222G /mnt/datastore/Backup_Home datapool 2.36G 1.75T 2.36G /mnt/datastore/datapool

    Wir erzeugen ein Dataset im datapool

    zfs create datapool/docs -o mountpoint=/docs

    Wir erzeugen eine Datei mit Inhalt

    echo "version 1" > /docs/data.txt

    Wir erzeugen einen Snapshot

    zfs snapshot datapool/docs@today

    Kontrolle

    root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 0B - 96K -

    Wir replizieren den vorhandenen Snapshot zum ZFS-Pool Backup_Home und speichern ihn da im Dataset test.

    zfs send datapool/docs@today | zfs receive Backup_Home/test

    Nun befinden sich die Daten in dem anderen ZFS-Pool

    root@pbs:/mnt/datastore/datapool/test# ls /mnt/datastore/Backup_Home/test/ data.txt

    Und was mich am meisten interessiert, ist wie man das zu einem anderen Server schickt 😉

    zfs send datapool/docs@today | ssh otherserver zfs receive backuppool/backup

    Den Test reiche ich dann später nach.

    Quelle: https://www.howtoforge.com/tutorial/how-to-use-snapshots-clones-and-replication-in-zfs-on-linux/

    ZFS inkrementelle Replication

    Als, nur die geänderten Daten senden!

    Wir erzeugen ein paar Dateien

    root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data1.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data2.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data3.txt root@pbs:/mnt/datastore/datapool/test# echo "data" > /docs/data4.txt

    Neuer Snapshot

    zfs snapshot datapool/docs@17:02

    Liste der Snapshots

    root@pbs:/mnt/datastore/datapool/test# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT datapool/docs@today 56K - 96K - datapool/docs@17:02 0B - 112K -

    Wir senden dieinkrementelle Replication

    zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K cannot receive incremental stream: destination Backup_Home/test has been modified since most recent snapshot

    Dazu schreibt die Anleitung, die ich unten verlinkt habe, das die Daten verändert wurden. Warum, verstehe ich aktuell noch nicht. Mit -F im send Befehl erzwingt man einen Rollback zum letzten Snapshot.

    zfs send -vi datapool/docs@today datapool/docs@17:02 | zfs receive -F Backup_Home/test send from datapool/docs@today to datapool/docs@17:02 estimated size is 38.6K total estimated size is 38.6K

    Und Kontrolle

    ls /mnt/datastore/Backup_Home/test/ data1.txt data2.txt data3.txt data4.txt data.txt

    Quelle: https://klarasystems.com/articles/introduction-to-zfs-replication/