Skip to content

georf.de

Open-Source, Rostock und mehr

Menu
  • Ägypten
  • Marokko
  • Datenschutzerklärung
  • Impressum
Menu

Drosselung von Transmission bei aktiver LAN-Nutzung

Posted on 14. März 2019 by georf

Dieser Artikel gehört zur Serie Linux-Router mit vielen Funktionen selber einrichten.

Ich nutze auf meinem Zotac den BitTorrent-Client Transmission. Nun möchte man natürlich während des Nutzen des Internets nicht durch aktive Torrents gestört werden. Aber immer auf die Webseite zu gehen und die Drosselung durch Klicken zu aktivieren, ist natürlich nicht praktikabel. Eine generelle Drosselung würde die Bandbreite in der Nacht und am Arbeitstag ungenutzt lassen.

Ziel war es also anhand der aktiven LAN-Geräte zu entscheiden, ob die Drosselung aktiviert werden soll. Dafür brauche ich eine Liste von wichtigen MAC-Adressen, bei denen die Drosselung aktiviert werden soll. Dazu zählen derzeit der Fernseher, mein und Annes Laptop. Smartphones, andere Laptops und Playstation brauchen nicht die volle Datennutzung.

#!/bin/bash

LEASE_HOSTS=$(cat /var/lib/misc/dnsmasq.leases | awk '{print $3}')
HOSTS=$(nmap -sP -n -oG - $LEASE_HOSTS | grep "Up" | awk '{print $2}')

for host in ${HOSTS}; do
  /usr/sbin/arp -an | grep "(${host})" | awk '{print $4}'
done

Zeile 3 speichert alle IPs, die derzeit vom DHCP-Server zugewiesen wurden. Zeile 4 man dann mittels nmap einen Ping-Scan nur auf diese Hosts, was bedeutend schneller ist, als an alle IPs des Netzwerks zu Pingen. In der Variable HOSTS werden dann nur die Zeilen gespeichert, die Antworten, also online sind. Nun wird über die Einträge iteriert und über die ARP-Tabelle die zugehörige MAC-Adresse gesucht. Dieses Skript zeigt uns also alle MAC-Adressen, die derzeit auf einen Ping im Netzwerk reagieren.

Nun muss nur noch entschieden werden, ob es sich bei den Online-MACs um wichtige MACs handelt, bei denen man die Drosselung aktivieren sollte. Dafür habe ich mir ein kleines PHP-Projekt aufgesetzt, welches mittels PHP-FPM und Nginx eine Webseite anzeigt.

Webseite mit allen Einstellmöglichkeiten

Die Webseite teilt sich in 4 Bereiche:

  1. Alle derzeitigen MACs die im Netzwerk online sind
  2. Derzeit nicht in die Konfiguration übernommene MACs
  3. Vorhandene Einträge und ihr derzeitiger Status
  4. Zustand der Drosselung (hier kann die Automatik überschrieben werden)
  5. Konfiguration der MACs. Die Spalten:
    1. Drosselung aktivieren
    2. MAC
    3. Kommentar

Die PHP-Dateien kann man im zugehörigen Github-Repository sehen.

Nun führe ich mittels Cronjob die Datei cronjob.php alle 5 Minuten aus. Sie ruft intern das oben gezeigte Shellscript auf und prüft ob eine wichtige MAC dabei ist. Danach sendet sie mittels transmission-remote Befehle an den Transmission-Client. Der Cronjob und die PHP-FPM-Daemon laufen bei mir unter einem unprivilegierten Benutzer.

Eine Beispielkonfiguration für Nginx könnte wie folgt aussehen:

server {
  # Nur SSL erlauben
  listen 443;
  ssl on;
  server_name drosselung.georf.de;
  ssl_certificate /etc/letsencrypt/live/zotac.georf.de/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/zotac.georf.de/privkey.pem;

  # Aufrufe mit Passwort schützen
  auth_basic "Wohnung";
  auth_basic_user_file /etc/nginx/htpasswd_wohnung;

  # Root festlegen
  root /opt/throttling;
  index status.php;

  # Letsencrypt braucht kein Passwort
  location /.well-known/acme-challenge/ {
    root /tmp/certbot/;
    auth_basic off;
  }
  # PHP an FPM weiterleiten
  location ~ \.php$ {
    fastcgi_param   SCRIPT_NAME      $uri;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass    unix:/var/run/php-fpm-www.sock;
    fastcgi_intercept_errors on;
  }
  location / {
    try_files $uri $uri/ =404;
  }
}

1 thought on “Drosselung von Transmission bei aktiver LAN-Nutzung”

  1. Pingback: Linux-Router mit vielen Funktionen selber einrichten – georf.de

Schreibe einen Kommentar Antworten abbrechen

Du musst angemeldet sein, um einen Kommentar abzugeben.

Neueste Beiträge

  • Kärcher-Staubsauger-Reparatur
  • Hoftor – Steuerung mit Energiesparfunktion
  • Dualstack-Webserver hinter privater IPv4-Adresse
  • Hoftor mit WLAN und MQTT aufrüsten
  • LED-Stoppuhr für Wettkämpfe

Kategorien

  • Allgemein (37)
  • Deutsch (6)
  • IT (73)
    • BKampfBot (7)
    • Datenschutz (5)
    • Elektronik (6)
    • Informatik (18)
    • Linux (26)
    • Programmierung (31)
    • Webseite (25)
  • Reparatur (1)
  • Rezepte (18)
  • Rostock (21)

Schlagwörter

anonym Arduino Backup Bash Basteln BKampfBot C++ Codierung Datenbank Debian Dokumentation Drucker E-Mail Erbsen Fahrradweg Feuerwehrsport Git Github HttpClient Javascript JSON Kirschen Kuchen LEDs Linux Löten MySQL Nginx PHP Python Quark Quellcode Regex RegHex Reis Samba Scanner Server Sinnlos Trac Transmission Ubuntu Weihnachten Zotac ß
©2023 georf.de | Built using WordPress and Responsive Blogily theme by Superb