IPv6 Konfiguration bei OVH VPS Instanzen

Manchmal ist er schwer für einfache Dinge eine saubere technische Lösung zu finden. Gutes Beispiel ist die IPv6 Konfiguration für eine VPS Instanz bei der Firma OVH. Nach meiner Erfahrung ist die Netzwerkkonfiguration, gerade bei Cloud-Angeboten, je nach Hosting Anbieter etwas komplizierter. Das Angebot von OVH basiert aber auf OpenStack und die Basis-Konfiguration innerhalb der VM erfolgt via cloud-init. D.h. egal ob Amazon AWS, Microsoft Azure oder eben OVH, unter Linux kommt immer cloud-init zum Einsatz. Aber im Fall von VPS-Instanzen bei OVH werden wohl zumindest für IPv6 keine Metadaten bereitgestellt.

Dies lässt sich auf der Kommandozeile über entsprechende HTTP-Requests testen:

[root@vps593928 ~]# curl http://169.254.169.254/2009-04-04/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
placement/
public-hostname
public-ipv4
public-keys/
reservation-id

Via DHCP ist es offenbar ebenfalls nicht möglich die IPv6-Einstellungen dynamisch zu beziehen. Bei IPv4 funktioniert dies, bei IPv6 aber wohl nicht. Nun könnte man die Netzwerk-Konfiguration via cloud-init abschalten und die entsprechenden Konfigurationsdateien manuell pflegen. Ich wollte aber möglichst nah an der Standard-Installation bleiben, deshalb liefere ich die fehlenden IPv6-Daten in der cloud-init Konfiguration nach.

Beim Hostnamen hatte ich ähnliche Schwierigkeiten. Die Web-GUI von OVH erlaubt zwar den Namen der VPS Instanz zu ändern, die cloud-init zur Verfügung gestellten Metadaten enthalten aber immer noch den ursprünglichen Instanz-Namen von OVH. Für den Hostnamen habe ich noch keine saubere Lösung gefunden. Hier hilft nur den Hostnamen einmalig auf den gewünschten Wert zu setzen und danach die dynamische Änderung des Hostname in cloud-init zu deaktivieren.

[root@vps593928 ~]# hostnamectl set-hostname s20.e1.fm-berger.de

Die cloud-init Konfiguration für IPv6 und Hostname erfolgt dann über neue Datei /etc/cloud/cloud.cfg.d/99-custom-networking.cfg mit folgendem Inhalt:

network:
  version: 1
  config:
  - type: physical
    name: eth0
    mac_address: fa:16:3e:07:47:dd
    subnets:
      - type: dhcp
      - type: static
        address: 2001:41d0:701:1100::ab3/128
        gateway: 2001:41d0:701:1100::1

preserve_hostname: true

Nach einem Reboot der VPS Instanz sollte die IPv6-Konfiguration richtig gesetzt sein und der Hostname dürfte nicht mehr ändern.

DSGVO - Unsere Datenschutzerklärung

Nicht nur beim Firmenlauf in Augsburg gab es einen Endspurt, auch beim Thema Datenschutz hatten wir mit der DSGVO eine digitale Variante.

Datenschutz und IT-Sicherheit sind für uns keine einmalige Angelegenheit, sie waren bereits vor der DSGVO wichtig und bleiben es weiterhin. Neu ist nun unsere eigene Datenschutzerklärung. Weitere Verbesserungen und Änderungen in diesem Bereich sind gerade in Abklärung. Ebenfalls neu ist, dass wir zukünftig auf das direkte Einbetten von externen Inhalten (z.B. YouTube-Videos) verzichten werden. Damit möchten wir die Abwägung zwischen Datenschutz und Komfort/Trend/Style zum Ausdruck bringen.

Wir wünschen unseren Kunden einen guten DSGVO-Start und hoffen, dass neben mehr Bürokratie und Juristendeutsch auch mehr praktischer Datenschutz und IT-Sicherheit umgesetzt werden.

Mit Virtualbox auf einer Zeitreise in die Zukunft

Um ein paar technische Details für das Backup-Konzept eines Kunden klären zu können, war es heute sehr hilfreich, eine VM in Virtualbox mit der Zeit in die Zukunft zu versetzen. Dazu waren folgende Schritte notwendig.

Zeitsynchronisation zwischen Host und virtueller Maschine deaktivieren:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "rhel701" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

Als nächstes muss der Zeitoffset zwischen gewünschter Zeit in der Zukunft und jetzt in Millisekunden via Powershell berechnet werden:

PS C:\Users\frank> ([datetime]"06/26/2017" - [datetime]::Now)


Days              : 11
Hours             : 6
Minutes           : 6
Seconds           : 6
Milliseconds      : 746
Ticks             : 9723667466261
TotalDays         : 11,2542447526169
TotalHours        : 270,101874062806
TotalMinutes      : 16206,1124437683
TotalSeconds      : 972366,7466261
TotalMilliseconds : 972366746,6261

Dieser Zeitoffset wird dann für die VM gesetzt:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm "rhel701" --biossystemtimeoffset 972366746

In die Gegenwart zurück geht es via:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" setextradata "rhel701" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm "rhel701" --biossystemtimeoffset 0

Oracle RAC 12c R2 – Teil 3 – Shared Storage Konfiguration

Neben den VMs für die beiden RAC-Knoten benötigen wir noch eine Shared Storage Konfiguration. Sobald die VMs ausgeschaltet sind, können in Virtualbox unter Windows sechs 10 GB Disks angelegt werden:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename C:\vm\shared\asmdisk01.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename C:\vm\shared\asmdisk02.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename C:\vm\shared\asmdisk03.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename C:\vm\shared\asmdisk04.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename C:\vm\shared\asmdisk05.vdi --size 10240 --format VDI --variant Fixed
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" createhd --filename C:\vm\shared\asmdisk06.vdi --size 10240 --format VDI --variant Fixed

Anbindung der Disks an die VMs:

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-1" --storagectl "SATA" --port 1 --device 0 --type hdd --medium C:\vm\shared\asmdisk01.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-2" --storagectl "SATA" --port 1 --device 0 --type hdd --medium C:\vm\shared\asmdisk01.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-1" --storagectl "SATA" --port 2 --device 0 --type hdd --medium C:\vm\shared\asmdisk02.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-2" --storagectl "SATA" --port 2 --device 0 --type hdd --medium C:\vm\shared\asmdisk02.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-1" --storagectl "SATA" --port 3 --device 0 --type hdd --medium C:\vm\shared\asmdisk03.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-2" --storagectl "SATA" --port 3 --device 0 --type hdd --medium C:\vm\shared\asmdisk03.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-1" --storagectl "SATA" --port 4 --device 0 --type hdd --medium C:\vm\shared\asmdisk04.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-2" --storagectl "SATA" --port 4 --device 0 --type hdd --medium C:\vm\shared\asmdisk04.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-1" --storagectl "SATA" --port 5 --device 0 --type hdd --medium C:\vm\shared\asmdisk05.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-2" --storagectl "SATA" --port 5 --device 0 --type hdd --medium C:\vm\shared\asmdisk05.vdi --mtype shareable

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-1" --storagectl "SATA" --port 6 --device 0 --type hdd --medium C:\vm\shared\asmdisk06.vdi --mtype shareable
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" storageattach "ol73o122-2" --storagectl "SATA" --port 6 --device 0 --type hdd --medium C:\vm\shared\asmdisk06.vdi --mtype shareable

Nach dem Start der Cluster-Knoten, müssten nun die neuen Disks via fdisk sichtbar sein:

[root@ol73o122-1 ~]# fdisk -l

Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000e44b6

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sde: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/ol-root: 37.7 GB, 37706792960 bytes, 73646080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/ol-swap: 4160 MB, 4160749568 bytes, 8126464 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Um die Disks für den ASM Filer Driver zu labeln entpacken wir die Grid Infrastructure Software im Grid Home als OS-User grid:

[grid@ol73o122-1 ~]$ cd /opt/oracle/grid
[grid@ol73o122-1 grid]$ unzip -q /media/sf_transfer/linux_12201/linuxx64_12201_grid_home.zip

Das Labeln erfolgt wieder als root:

[root@ol73o122-1 dev]# export ORACLE_HOME=/opt/oracle/grid
[root@ol73o122-1 dev]# export ORACLE_BASE=/tmp
[root@ol73o122-1 dev]# /opt/oracle/grid/bin/asmcmd afd_label DATA1 /dev/sdb --init
[root@ol73o122-1 dev]# /opt/oracle/grid/bin/asmcmd afd_label DATA2 /dev/sdc --init
[root@ol73o122-1 dev]# /opt/oracle/grid/bin/asmcmd afd_label DATA3 /dev/sdd --init
[root@ol73o122-1 dev]# /opt/oracle/grid/bin/asmcmd afd_label DATA4 /dev/sde --init
[root@ol73o122-1 dev]# /opt/oracle/grid/bin/asmcmd afd_label DATA5 /dev/sdf --init
[root@ol73o122-1 dev]# /opt/oracle/grid/bin/asmcmd afd_label DATA6 /dev/sdg --init