Posts mit dem Label HTTP werden angezeigt. Alle Posts anzeigen
Posts mit dem Label HTTP werden angezeigt. Alle Posts anzeigen

Freitag, 17. Mai 2024

DNS - HTTPS Resource Record verwenden (Backup Server, Port-Signalisierung)

In meinem letzten Beitrag zum Thema DNS habe ich gezeigt, wie man die Eigene Domain auf eine andere IP mit Hilfe von Bind umleiten kann. Mit Hilfe des Domain Name System (DNS) wird die Namensauflösung im Internet durchgeführt. Diese Einträge werden als Resource Records (RR) bezeichnet. Die A- und die AAAA-Records sind zum Beispiel die Einträge für IPv4-/IPv6-Adressen der Server. Der DNS-Record „HTTPS“ kann als weiteres Steuerelement verwendet werden.


Der HTTPS-Record ist eine Variante des SVCB-Records und wurde speziell für die Verwendung mit dem HTTPS-Protokoll entwickelt. Um eine HTTPS-Verbindung aufzubauen, muss ein Client in der Regel zuerst eine HTTP-Verbindung aufbauen, dies erzeugt Latenz. Der DNS-Eintrag vom Typ HTTPS kann diese Latenz zu verringern.

Aufbau des HTTPS Resource Records

example.com. 300 IN HTTPS 10 backup01.example.com. alpn="h3,h2" port=8443

  • example.com. => Name - Domainname der Website
  • 300 => TTL - Time to Live: maximale Caching-Zeit
  • IN => Klasse Internet (konstanter Wert)
  • HTTPS => Typ des Resource Records
  • 10 => SvcPriority - Priorität des Eintrags (kleiner Wert = höhere Priorität)
  • backup01.example.com. => TargetName - Hostname des Webservers. Der Wert „.“ bedeutet, dass der Hostname dem Domainnamen der Website entspricht
  • alpn="h3,h2" port=8443 => SvcParams - Liste von definierten Parametern nach dem Schema „key=value“.

Quelle: https://de.wikipedia.org/wiki/HTTPS_Resource_Record

Die Abfrage des HTTPS-Record ist mit den Tools dig oder kdig möglich. Nicht aber mit nslookup!
dig google.com https

Installation mit Hilfe von sudo pacman -S dnsutils

Beispiele für die Nutzung des HTTPS-Record

Backup Server
example.com. 300 IN HTTPS 10 backup01.example.com.
example.com. 300 IN HTTPS 20 backup02.example.net.
example.com. 300 IN HTTPS 30 backup03.example.de.


Port-Signalisierung
app1.example.de IN HTTPS 1 . port=8443
Hier wird die Applikation nicht über den üblichen Port 443 ausgeliefert. Die Eingabe vom Port https://app1.example.de:8443/login in der URL kann entfallen.

Beispiel Abfragen von Records mit Hilfe von nslookup

Nslookup gefolgt vom Domänennamen zeigt den „A-Record“ (IP-Adresse) der Domain an.

(deck@steamdeck ~)$ nslookup shemel.de
Server:         127.0.0.53
Address:        127.0.0.53#53


Non-authoritative answer:
Name:   shemel.de
Address: 178.254.0.77



Abfrage des NS-Eintrags einer Domain
Der NS-Eintrag zeigt alle Nameserver einer Domain an.

(deck@steamdeck ~)$ nslookup -type=ns shemel.de
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
shemel.de       nameserver = ns01.1blu.de.
shemel.de       nameserver = ns02.1blu.de.



Abfrage des MX-Eintrags
Der MX-Eintrag (Mail-Exchange-Server) einer Domain. Siehe auch Mailserver - Zugriff auf TCP Port 25 (smtp) mit telnet testen.

(deck@steamdeck ~)$ nslookup -type=mx microsoft.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
microsoft.com   mail exchanger = 10 microsoft-com.mail.protection.outlook.com


Dienstag, 7. November 2023

Internet - Verbindungszeitlimit für HTTP-Anfragen (connection timeout during http request)

Es gibt viele Formen von Zeitüberschreitungen bei HTTP-Anfragen. Diese sind das Verbindungszeitlimit, das Anforderungszeitlimit oder das Time to Live Zeitlimit. In diesem Beitrag werde ich diese drei Formen näher beschreiben und Möglichkeiten aufzeigen, um diese "timeouts" per Browsereinstellungen hinauszuzögern.


Verbindungszeitlimit (connection timeout)

Zeitraum, innerhalb dessen eine Verbindung zwischen einem Client und einem Server hergestellt werden muss.

Beispiel: Man navigiert mit dem Browser (Client) zu einer Website (Server). Der Browser beginnt nun auf die Antwortnachricht von diesem Server zu warten. Diese Antwort trifft beim Client aber nie ein (z. B. weil der Server offline ist). Nach 250 Sekunden (Firefox), gibt der Browser das Warten auf (connection timeout).

Die Einstellung kann mit Hilfe von about:config angepasst werden:

  • network.http.connection-retry-timeout

Anforderungszeitüberschreitung (request timeout)

Zeitraum, in dem der Server nicht bereit war, zu lange auf die Antwort vom Client zu warten. Wurde die Verbindung zwischen Server und Client hergestellt, muss der Client den Server regelmäßig darüber informieren das die Verbindung noch besteht. Geschieht dies nicht, trennt der Server diese Verbindung. Siehe auch https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408.

Die Einstellung kann mi Hilfe von about:config angepasst werden:

  • network.http.pipelining.read-timeout

 

Time to Live (time to live)

Beschreibt den angegebenen Wert eines Paket, wie lange das Paket in einem Netzwerk am Leben bleiben kann. In einem Netzwerk durchläuft ein Paket verschiedene Router, die sich auf dem Weg  zwischen dem Ursprung des Pakets und seinem Ziel befinden. Jedes Mal, wenn der Router das Paket erneut sendet, verringert er auch seinen TTL-Wert um 1. Wenn dieser Wert auf 0 fällt, sendet der Router das Paket nicht erneut, sondern verwirft es einfach, da das Paket nicht mehr leben soll. Hiermit soll eine Datenüberflutung des Netzwerks verhindert werden, da jedes Paket nur für eine begrenzte „Zeit“ darin verbleiben kann.

Die Einstellung kann mi Hilfe von about:config angepasst werden:

  • network.http.keep-alive.timeout