NetworkManager: Detection of Captive Portals on Debian Jessie/Stretch (self-hosted)

NetworkManager provides connectivity checking to test for captive portals since GNOME 3.14. This performs recurring checks on a configurable URL. In case this does not deliver the expected response, NetworkManager knows we are very probably behind a captive portal and opens the corresponding login page.

This connectivity checking is an optional feature and not enabled by default in Debian Jessie or Squeeze. To enable this we can simple add a configuration file in /etc/NetworkManager/conf.d containing three settings:

[connectivity]
uri=http://network-test.debian.org/nm
response=NetworkManager is online
interval=300

This will check http://network-test.debian.org/nm every 300 seconds and expects to find the string “NetworkManager is online” in the HTML response.

For privacy reasons you might not want to test a public URL though. We could however simply host the URL to be checked ourselves. The NetworkManager documentation gives a few more details about the three settings. We mainly need to set the URI to a web site that either returns the header “X-NetworkManager-Status” with a value of “online” or returns the string specified using “response” in its body.

Given a running Apache web server with mod_headers enabled we can simply define a vhost like this:

<VirtualHost *:80>
  ServerName connectivity-check.example.net

  ## Vhost docroot
  DocumentRoot "/var/www/empty"

  ## Directories, there should at least be a declaration for /var/www/empty

  <Directory "/var/www/empty">
    Header Set X-NetworkManager-Status "online"
    AllowOverride None
    Require all granted
  </Directory>

  ## Logging
  ErrorLog "/var/log/apache2/connectivity-check.example.net_error.log"
  ServerSignature Off
  CustomLog "/var/log/apache2/connectivity-check.example.net_access.log" combined
</VirtualHost>

and configure NetworkManager using the following in /etc/NetworkManager/conf.d/10-connectivity.conf:

[connectivity]
uri=http://connectivity-check.example.net
interval=300

Sources:

  • Enabling captive portal detection in GNOME 3.14 on Debian Jessie by L Guruprasad
  • NetworkManager.conf documentation
  • Planet Göttingen mit neuer Domain

    Planet Göttingen ist nicht mehr nur unter http://planet.vorlons.info/goettingen/ zu finden, sondern nun auch unter http://www.planet-goe.de/ und zu guter letzt natürlich verschlüsselt unter https://www.planet-goe.de/

    Leider sind die meisten Blogs nicht korrekt per https zu erreichen, so dass auch beim Aufruf per https noch eine Menge von dort eingebundene Elemente unverschlüsselt übertragen werden.

    P.S.: Erster Post nach fünf Jahren, nicht dass das zur Gewohnheit wird…

     

    Downtime (Blog, Planet Göttingen etc.)

    Aufgrund von Wartungsarbeiten an der diesem Server zu Grunde liegenden XEN Dom0, wird es morgen (13.10.) ab ca. 17.30 Uhr zu einem längeren Ausfall der hier gehosteten Dienste kommen

    Apache mod_rewrite: Hostnamen umschreiben

    Kurzfassung… da ich mir das nie merken kann…

    Problem:

    Virtualhost ist über verschiedene Hostnamen erreichbar, langfristig soll aber nur noch einer Verwendung finden.

    Lösung:

    Umschreiben des Hostnamen mittels mod_rewrite, so dass alles von www.alterhost.name/$irgendwas umgeschrieben wird auf www.neuerhost.name/$irgendwas

    Also in die entsprechende Virtualhost-Umgebung der Apache-Konfiguration folgendes eingefügt:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\.neuerhost\.name$ [NC]
    RewriteRule ^/(.*) http://www.neuerhost.name/$1 [R=permanent]

    Das [R=permanent] sorgt hierbei für eine permanente Umleitung mit Code 301.

    Katzenjammer…

    Today I stumbled upon an interesting band from Norway: Katzenjammer (MySpace, last.fm). They got an refreshing mix of genres combined with great vocals and quite some instruments. Besides that they are currently on tour and selling their debut album (Le Pop)… Definately worth to check out…