Wert aus sysctl.conf wird bei Systemstart ignoriert

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
petrolman
Beiträge: 65
Registriert: 20.05.2010 14:54:22

Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von petrolman » 17.07.2024 11:13:02

Hallo,
für einen Loadbalancer mit IPVS musste ich folgende Einstellungen vornehmen.

Code: Alles auswählen

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/vs/conntrack
Damit es persistent ist, habe ich es auch in sysctl.conf eingetragen.

Code: Alles auswählen

cat /etc/sysctl.d/ipvs.conf
net.ipv4.ip_forward=1
net.ipv4.vs.conntrack=1
Aber nach einem Systemstart (Debian 12.5) steht in /proc/sys/net/ipv4/vs/conntrack wieder eine 0. Warum?

Edit: Wegen der neuen Kernelversion (6.1.0-23-amd64) mit Sicherheitsfixes musste ich den Server neu starten und der Wert war wieder 0

KP97
Beiträge: 3799
Registriert: 01.02.2013 15:07:36

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von KP97 » 17.07.2024 13:23:08

Läuft denn der Service systemd-sysctl.conf? Und schau auch in die Man für den Service und für sysctl.d.

Benutzeravatar
petrolman
Beiträge: 65
Registriert: 20.05.2010 14:54:22

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von petrolman » 17.07.2024 13:39:17

Ach da steht's:

Code: Alles auswählen

systemctl status systemd-sysctl
● systemd-sysctl.service - Apply Kernel Variables
     Loaded: loaded (/lib/systemd/system/systemd-sysctl.service; static)
     Active: active (exited) since Wed 2024-07-17 12:07:01 CEST; 1h 25min ago
...

Jul 17 12:07:01 lb-nc1 systemd-sysctl[228]: Couldn't write '1' to 'net/ipv4/vs/conntrack', ignoring: No such file or directory
Deshalb wieder manuell geändert

Code: Alles auswählen

cat /proc/sys/net/ipv4/vs/conntrack
1

Benutzeravatar
MSfree
Beiträge: 11903
Registriert: 25.09.2007 19:59:30

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von MSfree » 17.07.2024 14:22:01

KP97 hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 13:23:08
Läuft denn der Service systemd-sysctl.conf? Und schau auch in die Man für den Service und für sysctl.d.
systemd-sysctl.service ist meines Wissens nach einer normalen Installation immer aktiv.

Außerdem ist das kein laufender Dienst. Der Servicetyp in systemd-sysctl.service ist oneshot. Der wird also beim Booten einmal ausgeführt, um die von außen setzbaren Kernelparameter einzustellen.

petrolman hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 11:13:02

Code: Alles auswählen

echo "1" > /proc/sys/net/ipv4/vs/conntrack
Das Verzeichnis /proc/sys/net/ipv4/vs existiert auf meinen Rechnern nicht. Das ist ein Zeichen dafür, daß zum Zeitpunkt der Ausführung von des systemd-sysctl.service das Verzeichnis ebenfalls (noch) nicht existiert.

Ich vermute, daß das Verzeichnis erst angelegt ist, wenn die iptables/nfttables Conntrack-Module geladen sind. iptables lädt die nötigen Contrack-Kernelmodule bei Bedarf, wenn man Regeln erstellt, die das Connection-Tracking benötigen.

mat6937
Beiträge: 3491
Registriert: 09.12.2014 10:44:00

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von mat6937 » 17.07.2024 16:03:55

petrolman hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 11:13:02

Damit es persistent ist, habe ich es auch in sysctl.conf eingetragen.

Code: Alles auswählen

cat /etc/sysctl.d/ipvs.conf
net.ipv4.ip_forward=1
net.ipv4.vs.conntrack=1
Aber nach einem Systemstart (Debian 12.5) steht in /proc/sys/net/ipv4/vs/conntrack wieder eine 0.
Versuch mal mit einem cronjob in der systemweiten /etc/crontab (oder in der root-crontab) an der richtigen Stelle (oder mit einer timer-unit):

Code: Alles auswählen

@reboot	root	/usr/bin/sleep 25 && /usr/sbin/sysctl -q -p /etc/sysctl.d/ipvs.conf > /dev/null 2>&1
Debian 12.10 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.2 mit Xfce

Benutzeravatar
petrolman
Beiträge: 65
Registriert: 20.05.2010 14:54:22

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von petrolman » 17.07.2024 16:10:07

Ja, das ist noch so eine Sache mit der Persistenz. Das habe ich nicht vollständig eingerichtet, deshalb muss ich noch einmal nachfragen.

Für die einfachen Firewall-Regeln nutze ich ufw. Und Regeln, die damit erstellt wurden, werden auch beim Systemstart geladen. Nun musste ich aber für den Balancer doch eine SNAT-Regel in der Tabelle nat mit iptables einfügen, die allerdings so nicht persistent ist.

Ist bei Verwendung von ufw daher trotzdem noch erforderlich, das Paket iptables-persistent zu installieren? Also, das kommt dann mit ufw nicht in Konflikt? Ich weiß nämlich nicht, ob man die Regel auch mit ufw hinbekommt.

Code: Alles auswählen

iptables -t nat -A POSTROUTING -m ipvs --vaddr <virtuelle ip>/32 --vport 443 -j SNAT --to-source <virtuelle ip>
aptitude install iptables-persistent
iptables-save > /etc/iptables/rules.v4
Und beim Start würden dann auch die Regeln aus /etc/iptables/rules.v4 geladen werden, so dass dann auch das Verzeichnis net/ipv4/vs/conntrack zur richtigen Zeit existiert?

Benutzeravatar
heisenberg
Beiträge: 4240
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von heisenberg » 17.07.2024 16:12:43

petrolman hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 16:10:07
Ist bei Verwendung von ufw daher trotzdem noch erforderlich, das Paket iptables-persistent zu installieren?
Also, das kommt dann mit ufw nicht in Konflikt?
ufw definiert die Regeln in seinen eigenen Konfigurationsdateien. iptables-persistent netfilter-persistent würde das einfach überschreiben. Das schreit nach Problemen.

mat6937
Beiträge: 3491
Registriert: 09.12.2014 10:44:00

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von mat6937 » 17.07.2024 16:22:17

heisenberg hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 16:12:43
netfilter-persistent würde das einfach überschreiben.
Das ist von der Art und Weise abhängig, wie netfilter-persistent konfiguriert ist. Bei mir überschreibt netfilter-persistent die iptables-/nftables-Regeln die von systemd-networkd gesetzt werden, nicht.

@TE: Wenn Du dich mit ufw auskennst, kannst Du alle erforerlichen iptables-Regeln, auch mit ufw setzen.
Debian 12.10 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.2 mit Xfce

Benutzeravatar
petrolman
Beiträge: 65
Registriert: 20.05.2010 14:54:22

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von petrolman » 17.07.2024 20:06:18

mat6937 hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 16:22:17
@TE: Wenn Du dich mit ufw auskennst, kannst Du alle erforerlichen iptables-Regeln, auch mit ufw setzen.
Ich kann die Syntax in ufw übernehmen? Also, das was ich in /etc/sysctl.d/ipvs.conf gespeichert habe, stattdessen in /etc/ufw/sysctl.conf aktivieren?

/etc/ufw/sysctl.conf

Code: Alles auswählen

net/ipv4/ip_forward=1
net/ipv4/vs/conntrack=1
Und die SNAT-Regel in /etc/ufw/before.rules nach dem commit von *filter einfügen?

iptables -t nat -A POSTROUTING -m ipvs --vaddr <virtuelle ip>/32 --vport 443 -j SNAT --to-source <virtuelle ip>

/etc/ufw/before.rules

Code: Alles auswählen

...
COMMIT

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -m ipvs --vaddr <virtuelle ip>/32 --vport 443 -j SNAT --to-source <virtuelle ip>
COMMIT

Und abschließend noch in /etc/default/ufw die forward policy auf accept stellen?

/etc/default/ufw

Code: Alles auswählen

DEFAULT_FORWARD_POLICY="ACCEPT"

Das müsste es dann gewesen sein, oder? Würde ich morgen testen, habe heute keine Lust mehr :-)

Edit: commit nach COMMIT korrigiert
Zuletzt geändert von petrolman am 19.07.2024 12:50:34, insgesamt 1-mal geändert.

Benutzeravatar
GregorS
Beiträge: 3352
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von GregorS » 17.07.2024 20:31:36

petrolman hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 20:06:18
mat6937 hat geschrieben: ↑ zum Beitrag ↑
17.07.2024 16:22:17
@TE: Wenn Du dich mit ufw auskennst, kannst Du alle erforerlichen iptables-Regeln, auch mit ufw setzen.
Ich kann die Syntax in ufw übernehmen? Also, das was ich in /etc/sysctl.d/ipvs.conf gespeichert habe, stattdessen in /etc/ufw/sysctl.conf aktivieren?
Nein, das ist nicht, was mat6937 schreibt. Die Regeln kannst Du auch mit ufw setzen – das sagt nichts über die Syntax aus.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi und sog. Maker)

Benutzeravatar
petrolman
Beiträge: 65
Registriert: 20.05.2010 14:54:22

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von petrolman » 19.07.2024 12:52:08

Mit der oben genannten Konfiguration sind die Einstellungen nun über UFW persistent.

KP97
Beiträge: 3799
Registriert: 01.02.2013 15:07:36

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von KP97 » 19.07.2024 15:15:09

Das ist ja schön, aber wäre abschließend ein Dank an die Helfer nicht abgebracht, oder ist das uncool?
Hat was mit Höflichkeit zu tun, aber das fällt mir in letzter Zeit immer häufiger auf...

Benutzeravatar
petrolman
Beiträge: 65
Registriert: 20.05.2010 14:54:22

Re: Wert aus sysctl.conf wird bei Systemstart ignoriert

Beitrag von petrolman » 19.07.2024 20:13:50

Liegt vielleicht daran, dass in moderneren Foren Herzchen bei einzelnen Beiträgen vergeben werden können und damit das Schreiben von Danke verlernt wird :hail:

Antworten