Blog background

Verwenden einer IPv6-Adresse oder eines Subnetzes mit Hetzner Cloud Servern zum Hosting einer Website

Diese leicht verständliche Anleitung beschreibt, wie man eine Website auf der Hetzner Cloud mit Debian oder Ubuntu Linux unter Verwendung einer IPv6-Adresse hostet. Sie enthält Beispiele für sowohl den nginx- als auch den apache2-Webserver. Außerdem wird erklärt, wie man DNS-Einträge erstellt und wie man ein SSL-Zertifikat mit Let's Encrypt generiert.

Dieser Blogpost wurde von einer Maschine aus dem Englischen übersetzt. Die Originalversion finden Sie hier: Using an IPv6 Address or Subnet with a Hetzner Cloud Servers to Host a Website

Bitte kontaktieren Sie uns , wenn etwas nicht klar beschrieben ist, nicht funktioniert, inkorrekt erscheint oder wenn Sie Unterstützung benötigen.

Inhaltsverzeichnis

Einleitung

Bevor Sie mit IPv6 beginnen, sollten Sie überprüfen, ob Ihr Internet-Dienstanbieter (ISP) IPv6 unterstützt. Sie können dies ganz einfach tun, indem Sie ipv6.google.com aufrufen. Dies ist die Google-Suchseite, aber über IPv6 statt IPv4. Wenn dies bei Ihnen funktioniert, können Sie den Artikel weiterlesen. Falls nicht, beschweren Sie sich bei Ihrem ISP über die Einrichtung von IPv6 oder beginnen Sie, ein VPN wie mullvad.net zu verwenden, das Ihnen den Zugriff auf IPv6 ermöglicht.

Zum Zeitpunkt dieses Artikels (April 2024) unterstützt etwa die Hälfte des Internets IPv6 , wobei Frankreich und Deutschland die beste Abdeckung mit etwa 75% haben, die USA haben nur etwa 45% .

Für das Hosting öffentlicher Websites sind dies keine besonders glänzenden Zahlen, aber für das Hosting von Websites hinter Content Delivery Networks (CDN) wie cloudflare ist dies irrelevant, da Cloudflare IPv6 unterstützt und auf Ihren Backend-Webserver über seine IPv6-Adresse zugreifen kann.

Bei Blunix weisen wir auch gerne ausschließlich IPv6-Adressen Servern zu, die nicht öffentlich zugänglich sein sollen, sondern nur über ein internes Firmen-VPN. Für diese firmenintern genutzten Server verwenden wir eine (kostenlose) IPv6-Adresse für administrative Zwecke, wobei alle WebUIs und andere Dienste nur über das firmeninterne VPN zugänglich sind.

Einen Hetzner Cloud Server mit einer IPv6-Adresse erstellen

Erstellen Sie einen neuen Server und stellen Sie sicher, dass IPv6 aktiviert ist. Sie können wählen, nur eine IPv6-Adresse für Ihren Server zu verwenden, um etwas Geld zu sparen. Für diesen Blog-Beitrag haben wir uns entschieden, dem Server keine IPv4-Adresse zuzuweisen. So gut wie alle modernen Computer und Mobilgeräte verstehen inzwischen IPv6, sodass Sie eigentlich keine IPv4-Adresse mehr benötigen.

Einen Hetzner-Server mit einer IPv6-Adresse oder einem Subnetz erstellen

Nach der Erstellung des Cloud- oder physischen Servers zeigt Ihnen die Hetzner Cloud WebUI das IPv6-Subnetz an, das dem Server zugewiesen wurde. Zum Zeitpunkt dieses Artikels wird jedem Server ein /64-Subnetz zugewiesen. Fun Fact: Ein /64-IPv6-Subnetz enthält 18,45 Trillionen, oder 18.446.744.073.709.551.616, oder 18,45 * 10^18 nutzbare IPv6-Adressen. Das sollte ausreichen, um ein paar Websites zu hosten. Weitere Informationen finden Sie in der RIPE-Net-Dokumentation zum Verständnis von IP-Adressierung und CIDR-Charts .

Das IPv6-Subnetz des neuen Hetzner-Servers anzeigen

Über SSH mit dem Hetzner Cloud Server via IPv6-Adresse verbinden

Wenn Ihr Subnetz 2a01:4f8:1c1c:dd6::/64 ist, können Sie sich über SSH mit dem Hetzner Cloud Server verbinden, indem Sie am Ende eine 1 hinzufügen:

ssh root@2a01:4f8:1c1c:dd6::1
The authenticity of host '2a01:4f8:1c1c:dd6::1 (2a01:4f8:1c1c:dd6::1)' can't be established.
ED25519 key fingerprint is SHA256:WBp/Jd5omTEuFOKI6tRfV5AwtBd9y+iS0de1cRr88B8.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '2a01:4f8:1c1c:dd6::1' (ED25519) to the list of known hosts.
Linux ipv6-blogpost 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@ipv6-blogpost:~# 

Zusätzliche IPv6-Adressen zuweisen

Lassen Sie uns die Netzwerkschnittstelle so konfigurieren, dass sie auf mehr als einer IPv6-Adresse erreichbar ist.

Temporäres Zuweisen von IPv6-Adressen zum Testen

Um schnell eine neue IPv6-Adresse zu Ihrem Server hinzuzufügen, verwenden Sie den folgenden Befehl:

ip address add 2a01:4f8:1c1c:dd6::3 dev eth0

Um zu überprüfen, ob dies funktioniert, führen Sie den folgenden Befehl von Ihrer Workstation aus:

ping6 2a01:4f8:1c1c:dd6::3

Sie können jede Adresse zwischen dem Minimal- und Maximalwert im zugewiesenen Subnetz wählen. Denken Sie daran, dass IPv6-Adressen in hexadezimalen Werten geschrieben werden: “0-9” und “a-f”.

Niedrigste mögliche Adresse: 2a01:4f8:1c1c:dd6:0000:0000:0000:0000
Höchste mögliche Adresse: 2a01:4f8:1c1c:dd6:ffff:ffff:ffff:ffff

Weitere Beispiele:

ip address add 2a01:4f8:1c1c:dd6:0000:0000:0000:1000 dev eth0
ip address add 2a01:4f8:1c1c:dd6:0000:0000:0815:0000 dev eth0
ip address add 2a01:4f8:1c1c:dd6:af9c:1c59:91a5:1d63 dev eth0

Wenn Sie nur ip address add verwenden, geht die Konfiguration nach dem nächsten Neustart verloren. Siehe den nächsten Abschnitt, wie Sie diese Konfigurationen neustart-sicher machen.

Den Server temporär für alle IPs im Subnetz erreichbar machen

Sie können den Server auch so konfigurieren, dass er auf jede IP-Adresse im gesamten /64-Subnetz lauscht:

ip route add local 2a01:4f8:1c1c:dd6::/64 dev eth0

Dauerhaftes Zuweisen einzelner IPv6-Adressen (Neustart-sicher)

Die IPv6-Adresse, unter der Ihr Server nach seiner Erstellung erreichbar war, ist in /etc/network/interfaces.d/50-cloud-init konfiguriert:

cat /etc/network/interfaces.d/50-cloud-init
# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

# control-alias eth0
iface eth0 inet6 static
    address 2a01:4f8:1c1c:dd6::1/64
    dns-nameservers 2a01:4ff:ff00::add:1 2a01:4ff:ff00::add:2
    gateway fe80::1

Kopieren Sie den relevanten Abschnitt und erstellen Sie eine neue Datei /etc/network/interfaces.d/99-custom. Fügen Sie für jede IPv6-Adresse, unter der der Server erreichbar sein soll, einen Konfigurationsblock wie diesen hinzu. Beachten Sie, dass wenn Sie ein ganzes Subnetz konfigurieren, der Server nicht für alle IPs im Subnetz erreichbar sein wird - der obige Block macht den Server nur unter 2a01:4f8:1c1c:dd6::1 erreichbar, nicht unter jeder IP in 2a01:4f8:1c1c:dd6::1/64! Weitere Informationen finden Sie in diesem serverfault.com-Thread .

Denken Sie daran, dass die normalisierte Version von 2a01:4f8:1c1c:dd6::1 2A01:04F8:1C1C:0DD6:0000:0000:0000:0001 ist, und dass die Angabe eines /128-Subnetzes in IPv6 wie die Angabe eines /32-Subnetzes in IPv4 ist - es bezieht sich auf eine einzelne IP-Adresse.

cat /etc/network/interfaces.d/99-custom

# app1.blunix.com
iface eth0 inet6 static
    address 2a01:4f8:1c1c:dd6:ffff:ffff:ffff:fff0/128
    dns-nameservers 2a01:4ff:ff00::add:1 2a01:4ff:ff00::add:2
    gateway fe80::1

# app2.blunix.com
iface eth0 inet6 static
    address 2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef/128
    dns-nameservers 2a01:4ff:ff00::add:1 2a01:4ff:ff00::add:2
    gateway fe80::1

Um Änderungen an Konfigurationsdateien unter /etc/network/interfaces.d/ anzuwenden, führen Sie den folgenden Befehl aus. Dies startet das Netzwerk Ihres Servers neu und der Server ist für etwa zwei bis drei Sekunden nicht erreichbar. In dieser Zeit hängt Ihre SSH-Sitzung, was normal ist.

systemctl restart networking

Dauerhaftes Zuweisen eines ganzen IPv6-Subnetzes (Neustart-sicher)

Um eine neustart-sichere Konfiguration zu erstellen, die den Server unter allen IPs im Subnetz erreichbar macht, fügen Sie einfach die Routen-Befehle am Ende hinzu:

cat /etc/network/interfaces.d/99-custom

# Erreichbar für alle IPs im /64
iface eth0 inet6 static
    address 2a01:4f8:1c1c:dd6::1/64
    dns-nameservers 2a01:4ff:ff00::add:1 2a01:4ff:ff00::add:2
    gateway fe80::1
    # Einrichtung, um auf jede Adresse im Subnetz zu antworten
    post-up ip -6 route add local 2a01:4f8:1c1c:dd6::1/64 dev eth0
    pre-down ip -6 route del local 2a01:4f8:1c1c:dd6::1/64 dev eth0

IPv6 DNS AAAA-Einträge in der Hetzner DNS-Verwaltungs-WebUI einrichten

Für jede IPv6-Adresse, die Sie für das Hosting einer Website oder eines anderen Dienstes verwenden möchten, konfigurieren Sie einen DNS-Eintrag vom Typ AAAA. In der Hetzner DNS-Verwaltungs-WebUI kann dies folgendermaßen geschehen:

IPv6-Typ-AAAA-DNS-Einträge in der Hetzner DNS-Verwaltungs-WebUI erstellen

Um zu überprüfen, ob Sie den DNS-Eintrag korrekt eingerichtet haben, können Sie einfach die neue Domain anpingen. Stellen Sie sicher, dass Sie ping6 anstelle von ping verwenden:

ping6 -c 3 ipv6-blogpost.blunix.com
PING ipv6-blogpost.blunix.com(ipv6-blogpost.blunix.com (2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef)) 56 data bytes
64 bytes from ipv6-blogpost.blunix.com (2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef): icmp_seq=1 ttl=52 time=106 ms
64 bytes from ipv6-blogpost.blunix.com (2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef): icmp_seq=2 ttl=52 time=206 ms
64 bytes from ipv6-blogpost.blunix.com (2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef): icmp_seq=3 ttl=52 time=125 ms

IPv6-Einträge in /etc/hosts einrichten

Sie können auch /etc/hosts-Einträge für IPv6-Adressen auf genau die gleiche Weise einrichten, wie Sie IPv4-Einträge einrichten würden:

cat << EOF | sudo tee -a /etc/hosts
2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef ipv6-blogpost.blunix.com

Ein Let’s Encrypt-Zertifikat für eine IPv6 / AAAA-Domain generieren

Es gibt nichts Besonderes bei der Generierung von Let’s Encrypt-Zertifikaten für IPv6-Domains. Im folgenden Beispiel stimmen wir automatisch den Nutzungsbedingungen zu (--agree-tos), starten einen eigenständigen Webserver (--standalone) und verweigern die Angabe einer E-Mail-Adresse, was nur bedeutet, dass wir nicht per E-Mail zwei Wochen vor Ablauf der Domain benachrichtigt werden (--register-unsafely-without-email).

certbot certonly --agree-tos --standalone --register-unsafely-without-email --domain ipv6-blogpost.blunix.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for ipv6-blogpost.blunix.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/ipv6-blogpost.blunix.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/ipv6-blogpost.blunix.com/privkey.pem
This certificate expires on 2024-07-23.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Den Nginx-Webserver für das Lauschen auf IPv6-Adressen konfigurieren

Der folgende Beispiel-Nginx-vHost ist so konfiguriert, dass er SSL für alle 18,45 Trillionen IPv6-Adressen bereitstellt. Beachten Sie, dass wir für jede IP AAAA-DNS-Einträge erstellen und sie in /etc/network/interfaces.d/ wie oben beschrieben konfigurieren müssen, damit die IP funktioniert.

Die folgende SSL-Konfiguration ist nur ein Beispiel - um eine ordnungsgemäße Konfiguration zu erstellen, schauen Sie sich den Mozilla SSL-Konfigurationsgenerator für Webserver an. Die folgenden Befehle lassen Sie Ihre Nginx- und OpenSSL-Version ermitteln:

nginx -v
nginx version: nginx/1.22.1

openssl version
OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)

Hier ist die Nginx-vHost-Konfiguration für das Hosting einer Website mit einer IPv6-Adresse auf der Hetzner Cloud. Beachten Sie die zwei Listen-Direktiven, eine für localhost (127.0.0.1) und eine für eine oder alle möglichen IPv6-Adressen:

server {
    server_name ipv6-blogpost.blunix.com;
    listen 127.0.0.1:80;
    listen [::]:80;
    return 301 https://ipv6-blogpost.blunix.com$request_uri;
}

server {
    server_name ipv6-blogpost.blunix.com;

    listen 127.0.0.1:443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;
    location / {
        try_files $uri $uri/ =404;
    }

    ssl_certificate /etc/letsencrypt/live/ipv6-blogpost.blunix.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ipv6-blogpost.blunix.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    # intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
    ssl_prefer_server_ciphers off;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;
}

Nginx für das Lauschen auf einer einzelnen IPv6-Adresse konfigurieren

Um Nginx so zu konfigurieren, dass er nur auf einer bestimmten IPv6-Adresse lauscht, geben Sie einfach die Adresse in eckigen Klammern an:

listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef]:80;
listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef]:443 ssl http2;

Nginx für das Lauschen auf mehreren IPv6-Adressen konfigurieren

Bei Verwendung öffentlicher IP-Adressen gibt es hierfür keinen guten Anwendungsfall. Normalerweise sollten Sie nur eine öffentliche IP pro Website verwenden. Bei Verwendung einer öffentlichen sowie einer internen (privaten) IP kann dies jedoch sinnvoll sein.

Damit Nginx einen vHost auf mehreren IP-Adressen verfügbar macht, können Sie einfach mehrere Listen-Direktiven angeben, um einen Nginx-vHost auf mehreren IPv6-Adressen verfügbar zu machen:

listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef]:80;
listen [2a01:4f8:1c1c:dd6:0000:0000:0000:1234]:80;
listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef]:443 ssl http2;
listen [2a01:4f8:1c1c:dd6:0000:0000:0000:1234]:443 ssl http2;

Nginx für das Lauschen auf einem IPv6-Subnetz konfigurieren

Nginx bietet keine Option, auf ein ganzes Subnetz zu lauschen, weder IPv4 noch IPv6. Sie können Nginx so konfigurieren, dass er auf allen eingehenden IPv6-Verkehr lauscht:

listen [::]:443 ssl http2;

Und dann einfach Ihre Firewall verwenden, um nur die Adressen durchzulassen, die Sie zulassen möchten.

Den Apache2-Webserver für das Lauschen auf IPv6-Adressen konfigurieren

Der folgende Beispiel-Apache2-vHost ist so konfiguriert, dass er SSL für alle 18,45 Trillionen IPv6-Adressen bereitstellt. Beachten Sie, dass wir für jede IP AAAA-DNS-Einträge erstellen und sie in /etc/network/interfaces.d/ wie oben beschrieben konfigurieren müssen, damit die IP funktioniert.

Die folgende SSL-Konfiguration ist nur ein Beispiel - um eine ordnungsgemäße Konfiguration zu erstellen, schauen Sie sich den Mozilla SSL-Konfigurationsgenerator für Webserver an. Die folgenden Befehle lassen Sie Ihre Apache2- und OpenSSL-Version ermitteln:

apache2 -v
Server version: Apache/2.4.59 (Debian)
Server built:   2024-04-05T12:02:26

openssl version
OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)

Aktivieren Sie zuerst die Apache2-SSL- und Headers-Module:

a2enmod ssl headers

Hier ist die Apache2-vHost-Konfiguration für das Hosting einer Website mit einer IPv6-Adresse auf der Hetzner Cloud. Beachten Sie die zwei Listen-Direktiven, eine für localhost (127.0.0.1) und eine für eine oder alle möglichen IPv6-Adressen:

<VirtualHost [::]:80>
    ServerName ipv6-blogpost.blunix.com
    DocumentRoot /var/www/html
    Redirect permanent / https://ipv6-blogpost.blunix.com
</VirtualHost>

<VirtualHost [::]:443>
    ServerName ipv6-blogpost.blunix.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/ipv6-blogpost.blunix.com/fullchain.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/ipv6-blogpost.blunix.com/privkey.pem
    Protocols h2 http/1.1
    Header always set Strict-Transport-Security "max-age=63072000"
    SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
    SSLHonorCipherOrder     off
    SSLSessionTickets       off

</VirtualHost>

Apache2 für das Lauschen auf einer einzelnen IPv6-Adresse konfigurieren

Um Apache2 so zu konfigurieren, dass er nur auf einer bestimmten IPv6-Adresse lauscht, geben Sie einfach die Adresse in eckigen Klammern an:

listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef]:80;
listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:cdef]:443 ssl http2;

Apache2 für das Lauschen auf einer einzelnen IPv6-Adresse konfigurieren

Während Sie mehrere IPv4- oder IPv6-Adressen in /etc/apache2/ports.conf wie folgt angeben können:

Listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:0000]:443
Listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:1111]:443
Listen [2a01:4f8:1c1c:dd6:1234:5678:90ab:2222]:443

Aber Sie sind immer noch auf eine einzelne IP in jeder VirtualHost-Konfiguration beschränkt:

<VirtualHost [2a01:4f8:1c1c:dd6:1234:5678:90ab:0815]:443>

Die Sie so einstellen können, dass sie auf alle möglichen IPs lauscht:

<VirtualHost [::]:443>

Von dort aus müssen Sie die ServerName-Direktive verwenden, um die eingehenden Anfragen zu sortieren:

ServerName ipv6-blogpost.blunix.com

Apache2 für das Lauschen auf einem IPv6-Subnetz konfigurieren

Apache2 bietet keine Option, auf ein ganzes Subnetz zu lauschen, weder IPv4 noch IPv6. Sie können Apache2 so konfigurieren, dass er auf allen eingehenden IPv6-Verkehr lauscht:

listen [::]:443 ssl http2;

Und dann einfach Ihre Firewall verwenden, um nur die Adressen durchzulassen, die Sie zulassen möchten.

Überprüfen, ob die Website erreichbar ist

Ihre Website sollte jetzt konfiguriert und über ihre IPv6-Adresse(n) erreichbar sein. Zeit zu überprüfen, ob sie korrekt funktioniert.

Die Website mit einem Browser überprüfen

Geben Sie einfach die URL in Ihren Browser ein:

Die Apache2-Standardseite, die mit einer IPv6-Adresse gehostet wird, mit einem Browser ansehen

Die Website mit Curl testen

Sie können auch curl verwenden, um zu überprüfen, ob die Website online ist:

curl -6 --head --location http://ipv6-blogpost.blunix.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.22.1
Date: Wed, 24 Apr 2024 11:03:53 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Location: https://ipv6-blogpost.blunix.com/

HTTP/2 200 
server: nginx/1.22.1
date: Wed, 24 Apr 2024 11:03:54 GMT
content-type: text/html
content-length: 615
last-modified: Wed, 24 Apr 2024 09:20:47 GMT
etag: "6628ceef-267"
strict-transport-security: max-age=63072000
accept-ranges: bytes