• RFKill toggle und Gateway weg

    From Christoph Brinkhaus@21:1/5 to All on Wed Dec 28 19:30:01 2022
    Hallo Debian Freunde,

    ich verwende Debian Bullseye. Der Rechner bekommt seine
    Netzwerkkonfiguration über DHCP. Dabei ist die IP Adresse im Router über
    die MAC fixiert. Ausserdem ist in /etc/dhcp/dhclient.conf der
    Nameserver auf 127.0.0.1 fixiert, weil ich unbound als DNS Cache
    verwendet. Alles andere ist "normal".

    Nun kann ich bei dem Laptop mittels F8 das WLAN ein- und ausschalten.
    xev identifiziert F8 als XF86WLAN. Ein Druck auf F8 scheint /usr/lib/systemd/systemd-rfkill aufzurufen.

    Nun zum Problem. Wenn ich ausversehen F8 zwei mal kurz hintereinander
    drücke, dann verschwindet das Gateway. Mit netstat -rn sieht das folgendermassen aus:

    Alles ok
    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags MSS Fenster irtt Iface 0.0.0.0 192.168.0.32 0.0.0.0 UG 0 0 0 wlp4s0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp4s0

    F8 mehrfach gedrückt:
    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags MSS Fenster irtt Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp4s0

    route add default gw 192.168.0.32 dev wlp4s0 bringt alles wieder zum Originalzustand.

    Das passiert auch ohne X.

    Workaround:
    Ich beobachte in 2s Abstand netstat -rn und starte route add ... Damit
    läuft das Netzwerk ohne manuelle Eingriffe. Das mache ich unter
    awesome mit etwas Lua.

    Frage:
    Kann ich sowas auch mit systemd "Magie" erzielen?
    Oder gibt es irgendwo einen Timeout? In der dhcclient.conf habe ich versuchsweise den Router fest spezifizier. Das hat aber nicht
    geholfen. Ausserdem sollte das auch mit DHCP funktionieren und auch
    auf der Konsole unabhängig von X oder einem Windowmanager.

    Hat jemand eine Idee oder einen Hinweis, wo ich mich schlau lesen
    könnte?

    Viele Grüße,
    Christoph
    --
    Ist die Katze gesund
    schmeckt sie dem Hund.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Uwe Herrmuth@21:1/5 to Christoph Brinkhaus on Thu Dec 29 12:10:01 2022
    Hallo Christoph,

    Christoph Brinkhaus schrieb am 28.12.2022 um 19:26:
    Ein Druck auf F8 scheint
    /usr/lib/systemd/systemd-rfkill aufzurufen.

    Nun zum Problem. Wenn ich ausversehen F8 zwei mal kurz hintereinander drücke, dann verschwindet das Gateway. Mit netstat -rn sieht das folgendermassen aus:

    Alles ok
    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags MSS Fenster
    irtt Iface 0.0.0.0 192.168.0.32 0.0.0.0 UG 0
    0 0 wlp4s0 192.168.0.0 0.0.0.0 255.255.255.0 U
    0 0 0 wlp4s0

    F8 mehrfach gedrückt:
    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags MSS Fenster
    irtt Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0
    0 0 wlp4s0

    und das Gateway kommt auch nie wieder?

    Workaround:
    Ich beobachte in 2s Abstand netstat -rn und starte route add ... Damit
    läuft das Netzwerk ohne manuelle Eingriffe. Das mache ich unter
    awesome mit etwas Lua.

    Frage:
    Kann ich sowas auch mit systemd "Magie" erzielen?
    Oder gibt es irgendwo einen Timeout? In der dhcclient.conf habe ich versuchsweise den Router fest spezifizier. Das hat aber nicht
    geholfen. Ausserdem sollte das auch mit DHCP funktionieren und auch
    auf der Konsole unabhängig von X oder einem Windowmanager.

    Hat jemand eine Idee oder einen Hinweis, wo ich mich schlau lesen
    könnte?

    Als Einstieg vielleicht
    <https://wiki.ubuntuusers.de/systemd/Service_Units/> und weiterführende
    Links.

    Prinzipieller Aufbau der Unit:

    [Unit]
    Description=MeinShellScript
    After=network.target

    [Service]
    ExecStart=/root/meinshellscript
    User=root

    [Install]
    WantedBy=multi-user.target

    Das After=network.target wirst Du brauchen, da ja das Netzwerk erst mal prinzipiell stehen muss.

    Aber eigentlich ist das wirklich nur ein Würgeround.


    Viele Grüße
    Uwe

    --
    Debian GNU/Linux 11 (bullseye) Kernel 5.10.158-2 Xfce 4.16

    Sag NEIN zu globalen Spionageprogrammen!
    <https://prism-break.org/#de>

    -----BEGIN PGP SIGNATURE-----

    iF0EARECAB0WIQQiMsmb9vInNuk2/AV4wKCi29IgZwUCY61zkwAKCRB4wKCi29Ig Z1X8AJ0Y3xc3gdVMMo76ViwXrcm09YUOTgCgyd+R/A716Dv0B0XjQgVWFsQSppk=
    =uouX
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christoph Brinkhaus@21:1/5 to All on Thu Dec 29 13:30:01 2022
    Am Thu, Dec 29, 2022 at 01:11:02PM +0100 schrieb Marc Haber:

    Hallo Marc,

    On Wed, 28 Dec 2022 19:26:49 +0100, Christoph Brinkhaus <c.brinkhaus@t-online.de> wrote:
    Nun kann ich bei dem Laptop mittels F8 das WLAN ein- und ausschalten.
    xev identifiziert F8 als XF86WLAN. Ein Druck auf F8 scheint >/usr/lib/systemd/systemd-rfkill aufzurufen.

    Nun zum Problem. Wenn ich ausversehen F8 zwei mal kurz hintereinander >drücke, dann verschwindet das Gateway.

    Vermutlich ist das "alte" Netz noch nicht zuende abgerissen wenn die Anweisung zum Aufbau des "neuen" Netzes kommt. Kann man die
    Systemd-Units nicht locken dass sie immer nur einmal laufen?

    Eine gute Idee, da werde ich mal "forschen".

    Viele Grüße,
    Christoph
    --
    Ist die Katze gesund
    schmeckt sie dem Hund.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Haber@21:1/5 to c.brinkhaus@t-online.de on Thu Dec 29 13:20:01 2022
    On Wed, 28 Dec 2022 19:26:49 +0100, Christoph Brinkhaus <c.brinkhaus@t-online.de> wrote:
    Nun kann ich bei dem Laptop mittels F8 das WLAN ein- und ausschalten.
    xev identifiziert F8 als XF86WLAN. Ein Druck auf F8 scheint >/usr/lib/systemd/systemd-rfkill aufzurufen.

    Nun zum Problem. Wenn ich ausversehen F8 zwei mal kurz hintereinander >drücke, dann verschwindet das Gateway.

    Vermutlich ist das "alte" Netz noch nicht zuende abgerissen wenn die
    Anweisung zum Aufbau des "neuen" Netzes kommt. Kann man die
    Systemd-Units nicht locken dass sie immer nur einmal laufen?

    Grüße
    Marc
    --
    -------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " |
    Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christoph Brinkhaus@21:1/5 to All on Thu Dec 29 13:40:01 2022
    Am Thu, Dec 29, 2022 at 12:01:39PM +0100 schrieb Uwe Herrmuth:

    Hallo Uwe,

    Hallo Christoph,

    Christoph Brinkhaus schrieb am 28.12.2022 um 19:26:
    Ein Druck auf F8 scheint
    /usr/lib/systemd/systemd-rfkill aufzurufen.

    Nun zum Problem. Wenn ich ausversehen F8 zwei mal kurz hintereinander drücke, dann verschwindet das Gateway. Mit netstat -rn sieht das folgendermassen aus:

    Alles ok
    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags MSS Fenster
    irtt Iface 0.0.0.0 192.168.0.32 0.0.0.0 UG 0
    0 0 wlp4s0 192.168.0.0 0.0.0.0 255.255.255.0 U
    0 0 0 wlp4s0

    F8 mehrfach gedrückt:
    Kernel-IP-Routentabelle
    Ziel Router Genmask Flags MSS Fenster
    irtt Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0
    0 0 wlp4s0

    und das Gateway kommt auch nie wieder?

    Das Gateway kommt nie wieder, zumindest nicht innerhalb von mehreren
    Minutes.

    Workaround:
    Ich beobachte in 2s Abstand netstat -rn und starte route add ... Damit läuft das Netzwerk ohne manuelle Eingriffe. Das mache ich unter
    awesome mit etwas Lua.

    Frage:
    Kann ich sowas auch mit systemd "Magie" erzielen?
    Oder gibt es irgendwo einen Timeout? In der dhcclient.conf habe ich versuchsweise den Router fest spezifizier. Das hat aber nicht
    geholfen. Ausserdem sollte das auch mit DHCP funktionieren und auch
    auf der Konsole unabhängig von X oder einem Windowmanager.

    Hat jemand eine Idee oder einen Hinweis, wo ich mich schlau lesen
    könnte?

    Als Einstieg vielleicht
    <https://wiki.ubuntuusers.de/systemd/Service_Units/> und weiterführende Links.

    Prinzipieller Aufbau der Unit:

    [Unit]
    Description=MeinShellScript
    After=network.target

    [Service]
    ExecStart=/root/meinshellscript
    User=root

    [Install]
    WantedBy=multi-user.target

    Das After=network.target wirst Du brauchen, da ja das Netzwerk erst mal prinzipiell stehen muss.

    Aber eigentlich ist das wirklich nur ein Würgeround.

    Sowas habe ich für fetchmail auch schon gebastelt. Damit kann ich
    fetchmail als unpriviligierten User starten.

    Ich habe zwar angegeben, dass fetchmail nach dem DNS cache unbound
    starten soll. Das tut er auch, allerdings holt sich unbound noch Daten
    und ist fertig nachdem fetchmal schon versucht hat, Mail abzuholen.
    Daher frage ich im fetchmal script ab, ob ich den Namen der Mailbox
    abfragen kann. Erst dann startet fetchmail als user fetchmail.

    Das ist auch ein Würgaround, hält aber die Logs sauber von zwangsweise fehlgeschlagenen fetchmail Versuchen.

    Kann ich eigentlich irgendwie einen neuen Service starten *nachdem*
    eine Abhängigkeit wie unbound fertig ist?

    Viele Grüße,
    Christoph
    --
    Ist die Katze gesund
    schmeckt sie dem Hund.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christoph Brinkhaus@21:1/5 to All on Fri Dec 30 14:00:01 2022
    Am Wed, Dec 28, 2022 at 07:26:49PM +0100 schrieb Christoph Brinkhaus:

    Hallo Uwe, hallo Marc,

    Nun kann ich bei dem Laptop mittels F8 das WLAN ein- und ausschalten.
    xev identifiziert F8 als XF86WLAN. Ein Druck auf F8 scheint /usr/lib/systemd/systemd-rfkill aufzurufen.

    Problem: Die default route wird nicht wieder hergestellt.
    Was nicht gereicht hat:
    - Netzwerk ohne DHCP statisch konfiguriert.
    - AVAHI Netzwerk Daemon deaktiviert.
    - Das gateway_watchdog Skript (unten) in /etc/network
    oder /etc/wpa_supplicant einzubauen. Die Skripts werden
    wohl nur beim Systemstart gelesen oder aufgerufen.

    Was - erstmal funktioniert:
    - Das gateway_watchdog Skript aufzurufen

    #!/bin/sh
    #
    # Falls 192.168.0.0 schon existiert, die default Route
    # aber nicht, dann richte die default Route ein.

    logger "Run /usr/local/bin/gateway.sh"

    if [ -n "$(netstat -r|grep '192.168.0.0')" ] && [ -z "$(netstat -r|grep 'default')" ]
    then
    logger "Add default route"
    route add default gw 192.168.0.32 dev wlp4s0
    fi

    - Das Skript in systemd-rfkill.service einzubinden.

    [Service]
    ExecStart=/lib/systemd/systemd-rfkill ExecStopPost=/usr/local/bin/gateway_watchdog.sh
    NoNewPrivileges=yes
    StateDirectory=systemd/rfkill
    TimeoutSec=30s
    Type=notify

    Mal sehen, wie sich das bewährt.
    Vielen Dank für die Hinweise!

    Achja, zum 1x Starten eines Services mit systemd gibt es "OneShot",
    jedenfalls wenn ich mich richtig erinnere.
    Und in einem wpa_supplicant Skript gibt es einen Watchdog, der
    Timeouts usw abfangen soll. Ansonsten kann wpa_supplicant wohl
    in einer Endlosschleife hängen bleiben.

    Viele Grüße,
    Christoph
    --
    Ist die Katze gesund
    schmeckt sie dem Hund.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)