Ich habe es mit einem bekannten Problem in RHEL 7 zu tun, bei dem Dienste, die eine zu bindende Adresse angeben, nicht korrekt gestartet werden. Ich habe eine Reihe ähnlicher Berichte gefunden, viele sagen, dass sie mit Updates für systemd behoben wurden, aber ich bin immer noch mit diesem Problem konfrontiert. Dies betrifft alle Dienste auf meiner Box (sshd, sshd, vsftpd, nginx), die nicht nur an 0.0.0.0 gebunden sind.
Ich habe alle möglichen vermeintlichen Problemumgehungen gefunden, aber keine davon funktioniert konsequent für mich. Am Beispiel von sshd sieht die Konfiguration folgendermaßen aus:
Port 22
ListenAddress 192.168.242.225
...
Folgendes habe ich alleine und in Kombinationen versucht:
Von https://bugzilla.redhat.com/show_bug.cgi?id=1352214#c4 (Ich habe es auch sys-subsystem-net-devices-eth1.device
anstelle von versucht, network-online.target
aber ich vermute, dass dies nicht auf die Adressierung wartet.)
mkdir /etc/systemd/system/sshd.service.d
tee /etc/systemd/system/sshd.service.d/wait.conf << 'EOF'
[Unit]
After=network-online.target
EOF
Von https://bugzilla.redhat.com/show_bug.cgi?id=1352214#c11
mkdir /etc/systemd/system/sshd.service.d
tee /etc/systemd/system/sshd.service.d/wait.conf << 'EOF'
[Unit]
Wants=network-online.target
After=network-online.target
EOF
Von https://bugzilla.redhat.com/show_bug.cgi?id=1438749#c0
systemctl add-wants multi-user.target network.target
Von irgendwo
mkdir /etc/systemd/system/sshd.service.requires
ln -s /usr/lib/systemd/system/network-online.target /etc/systemd/system/sshd.service.requires/
Egal was ich versuche, ich erhalte normalerweise "Fehler: Bindung an Port 22 auf 192.168.242.125 fehlgeschlagen: Angeforderte Adresse kann nicht zugewiesen werden". Manchmal fängt alles perfekt an, was meiner Meinung nach auf ein Timing-Problem zurückzuführen ist.
Wenn Sie Scientific Linux (RHEL) 7.5 ausführen und der Netzwerkmanager aktiviert ist, ist die gesamte IP-Adressierung statisch. Wenn es weitere Details gibt, die helfen könnten, lassen Sie es mich bitte wissen. Hier ist die Ausgabe von journalctl
nach einem fehlgeschlagenen Start mit After=network-online.target
in der sshd-Einheitendatei. Relevante Dinge beginnen um Zeile 1700. Ich hoffe, jemand ist auf dieses Problem gestoßen und hat es erfolgreich gelöst!
systemctl enable NetworkManager-wait-online.service
war "Symlink von /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service zu /usr/lib/systemd/system/NetworkManager-wait-online.service erstellt."NetworkManager-wait-online.service
Teil der wichtigste war, habe ich ihn zuerst gebracht. Ich habe auch Ihren Vorschlagsystemctl enable
zur Aktivierung aufgenommen. Lassen Sie mich wissen, wenn Sie der Meinung sind, dass die Antwort noch verbessert werden kann. Prost!Es ist möglicherweise besser, Systemdienste nicht so zu konfigurieren, dass sie bestimmte IP-Adressen abhören und bei Bedarf den Zugriff auf diese über die Host-Firewall steuern.
Wenn Sie wirklich in der Lage sein müssen, sich an bestimmte IP-Adressen zu binden, bevor diese auf einer Netzwerkschnittstelle konfiguriert werden, können Sie das Timing-Problem umgehen, indem Sie sysctl
net.ipv4.ip_nonlocal_bind
für IPv4 und sysctlnet.ipv6.ip_nonlocal_bind
für IPv6 festlegen . Dienste können dann an IP-Adressen gebunden werden, die auf keiner Netzwerkschnittstelle konfiguriert sind. Auf sie kann jedoch erst zugegriffen werden, wenn diese IP-Adressen auf einer Schnittstelle konfiguriert sind.quelle
/admin
Verzeichnis. Ich möchte jedoch nicht, dass eine Web-App als Sternchenbenutzer auf einer öffentlichen IP-Adresse ausgeführt wird! Ich benötige also einen völlig separaten vhost, eine php-fpm-Instanz usw. Der Administrator läuft auf der privaten IP, auf die wir über VPN zugreifen, das Benutzerportal läuft auf der öffentlichen IP.