Linux (SuSE/Debian/RedHat) 802.1q VLAN-Interfaces erstellen und IP-Adressen vergeben

Dies ist mal wieder eine dieser „schnellen Notizen“, weil ich das jetzt ständig neu nachschlagen musste. 802.1q VLANs unter Linux werden in der Regel an ein bestehendes (physisches) Interface gebunden und stehen dann als Unterinterface mit einem Punkt (bzw. in „ip addr“ mit einem @-Zeichen) getrennt zur Verfügung.

Ein neues VLAN Interface unter Linux erstellen

Das Interface eth1 ist das physische Interface und eth1.3 wird das zugehörige VLAN-Interface (VLAN ID 3):


ip addr add 192.168.100.23/24 dev eth1
ip link set dev eth1 up
ip link add dev eth1.3 link eth1 type vlan id 3

Das Interface eth1.3 hat so noch keine IP-Adresse.

Ein VLAN Interface unter Linux konfigurieren

Das Interface eth1.3 wird mit einer IP-Adresse konfiguriert:


ip addr add  172.16.3.1/24 dev eth1.3
ip link set dev eth1.3 up

Der Netzwerverkehr für 172.16.3.0/24 passiert dann nun auf eth1.3, wird also direkt mit der VLAN ID=3 getaggt. Die Route für das Linklokale Netzwerk wird, wie bei Physischen Interfaces auch,  automatisch hinzugefügt.

Ein VLAN Interface unter Linux entfernen

Wenn man es nicht mehr braucht, kann es auch wieder gelöscht werden:


ip link set dev eth1.3 down
ip link delete eth1.3 type vlan

JPEG-Bilder nach EXIF Aufnahmedatum umbenennen (Windows/Linux)

Problem

Wir haben vermutlich alle mittlerweile eine Menge Bilder auf unseren Smarphones. So ich natürlich auch. Von Zeit zu Zeit sichere ich diese dann auf meine Backup-Maschine (und sychonisiere diese in verschiedene Clouds). Allerdings hatte ich neulich ein paar Probleme, als ich die Fotos und Videos sortieren wollte.

Die Bilder-Dateinamen sind ja meistens nur Dateizähler wie DSC0001, DSC0002, DSC0003. Die löbliche Ausnahme ist hier Windows Phone, das amerikansiche Datumsangaben einschliesslich (!) Uhrzeit verwendet. In einigigen Android’s kann man das auch einstellen, in anderen nicht.

Wenn man nun Bilder vom internen Speicher verschiebt, werden alle Dateidaten („Änderungsdatum“) der Bilder auf den Tag geändert, an dem die Dateien verschoben wurden. Das ist superunpraktisch beim selektieren, for allem wenn man das automatisieren möchte. Das passiert leider auch beim internen verschieben, also zum Beispiel vom internen Speicher auf eine SD-Karte.

Lösung

Zum Glück gibt es Jhead, das „Kommandozeilengesteuerte Programm zum Manipulieren der Nicht-Bild-Teile von Exif–JPEG-Dateien“.

Für Windows, Linux und Mac OS X gibt es eine vorkompilierte ausführbare Datei, die von der Kommandozeile aus starte. Ein GUI gibt es (und braucht es) nicht. Jhead zeigt, ohne Parameterm, so ungefähr alle EXIF-Daten an:

C:\Foo\JHead>jhead.exe C:\tmp\DSC* 
File name    : C:\tmp\DSC_F40261.JPG 
File size    : 3156739 bytes 
File date    : 2017:03:24 11:52:50
Camera make  : MegatronINC
Camera model : D4303 
Date/Time    : 2014:01:13 12:17:55 
Resolution   : 3840 x 2160
...

Und man kann damit diese Daten ganz wundervoll und schnell umbenennen:

C:\Foo\JHead>jhead.exe -n%m-%d-%Y-%f D:\tmp\DSC* 
D:\tmp\DSC_F0261.JPG --> D:\tmp\02-13-2016-DSC_0261.jpg 
D:\tmp\DSC_F0162.JPG --> D:\tmp\02-13-2016-DSC_0262.jpg

Ganz brauchbar fand ich diese Optionen (schnellübersicht, NICHT vollständig!)
%d Day of month as decimal number (01 – 31)
%H Hour in 24-hour format (00 – 23)
%j Day of year as decimal number (001 – 366)
%m Month as decimal number (01 – 12)
%M Minute as decimal number (00 – 59)
%S Second as decimal number (00 – 59)
%y Year without century, as decimal number (00 – 99)
%Y Year with century, as decimal number

Zum Beispiel:
C:\Foo> jhead -n%Y%m%d-%H%M%S *.jpg

… erzeugt Dateien mit der Benennung „YYYYMMDD-HHMMSS“.

Windows Zertifikat (PFX Format) in das PEM/CER/KEY Format (z.B. für Apache) konvertieren

Dies ist wieder mal so eine Notiz an mich selbst, damit ich nicht vergessen wie man PKCS#12-Dateien („.pfx“) in das Zertifikat (CER/PEM) und den private Key (KEY) zerlegt und konvertiert.

Apache braucht sowohl Privatekey als auch Zertifikat einzeln und beherrscht leider das PFX-Format nicht, das beides beinhaltet.

Daher muss diese Konvertierung sein.

openssl pkcs12 -in quelle.pfx -clcerts -nokeys -out ziel.cer
openssl pkcs12 -in quelle.pfx -nocerts -nodes  -out ziel.key
# rm -rf quelle.pfx

Das PEM „Format“ ist dasselbe wie ein CER (beides der private Key im DER-Format), wie man die Datei nennen möchte bleibt einem selbst überlassen.

Danach kann man die Schlüssel sofort in der Apache Site-Config verwenden:

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /etc/apache2/ssl/ziel.cer
 SSLCertificateKeyFile /etc/apache2/ssl/ziel.key
 ...
</VirtualHost>

Postfix: ausgehende E-Mail via TLS pro Domain erzwingen

Problem

Es gibt eine (Management-)Richtlinie, die vorschreibt mit einem bestimmten Partner ausschliesslich über (TLS) verschlüsselte Verbindungen zu kommunizieren. Der ausgehende Mailserver ist ein Postfix (z.B. ein Smarthost). TLS mit den entsprechenden Zertifikaten ist hier schon korrekt eingerichtet. Es sollen nur sichere TLS-Verbindungen zu bestimmten Domain erzwungen werden.

Lösung

Standardmäßig verschlüsselt Postfix ausgehende E-Mails nicht. Sofern die Zertifikate richtig konfiguriert sind (Stichwort smtpd_tls_cert_file) lässt sich die ausgehende Verschlüsselung IMMER erzwingen:

Zum erzwingen von TLS In der Datei /etc/postfix/main.cf eintragen:

smtp_tls_security_level = encrypt

Viele Mail-Server akzeptieren aber auch heute noch keine TLS-Verbindungen. E-Mails an solche Mailserver werden daher nicht versendet. Als sinnvolle Alternativebietet sich daher an:

 smtp_tls_security_level = may

Bei dieser Einstellung wird die TLS-Verschlüsselung nur verwendet, wenn der Empfängerserver ebefalls TLS-Verbindungen akzeptiert. Verschlüsselt geht hier von iunverschlüsselt.

Nur für bestimmte Domains erzwingen

Es soll TLS für alle E-Mails erzwungen sein, die an *@denic.de gesendet werden. Der MX von denic.de zeigt auf mx1.denic.de und mx2.denic.de.

    • Mapping-Datei erstellen, z.B. „/etc/postfix/tls_policy“ mit diesem Inhalt:
      denic.de       encrypt
    • Mapping übernehmen
      [email protected]:/etc/postfix# postmap /etc/postfix/tls_policy
    • Tabelle in der main.cf in der TLS-Policy referenzieren
      # TLS erzwingen
      smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
    • Postfix reloaden
      [email protected]:/etc/postfix# /etc/init.d/postfix reload

Im Log lässt sich der Erfolg direkt danach prüfen, indem man nach dem Servernamen (oder der Adresse) und „STARTTLS“ grept:

postfix/smtp[61070]: > mx1.denic.de[2a02:568:102:211::1:1]:25: STARTTLS

Debian 9.0 Stretch feste IP-Adresse konfigurieren

Weil ich schon wieder einen Schritt vergessen hatte, hier die schnelle Checkliste um einem Debian eine fest IP-Adresse zu vergeben.

nano /etc/network/interfaces

Die Datei sollte (statisch) so aussehen:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens192
# iface ens192 inet <- Das wäre DHCP
iface ens192 inet static
   address 192.168.0.44
   netmask 255.255.0.0
   gateway 192.168.1.50

Dann das Netzwerk neu starten, das Interface aktualisieren und die aktive Konfiguration anzeigen:

service networking restart
ifup ens192    <-- Name des Interfaces aus der interfaces, z.B. eth0
ip addr

Debian 9 (Stretch) Startzeit-Auswahl (Timeout) von Grub verändern

Problem

Ab und zu ist die Standardzeit der Grup-Menüauswahl beim starten von Debian nicht passend. Entweder die voreingestellten fünf Sekunden sind zu lang, oder deutlich zu kurz.

Lösung

  1. Als root die Datei /etc/default/grub bearbeiten
  2. Änderungen an eintrag „GRUB_TIMEOUT“ durchführen
  3. Mit update-grub die geänderte Konfigurationsdatei übernehmen