Auteur Sujet: SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible  (Lu 5536 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
SSH : Échec du serveur SSHD, au lancement du serveur, car l'interface a écouter n'est pas disponible

Au démarrage du serveur j'ai l'erreur Cannot assign requested address. :

# journalctl | grep ssh
juin 29 17:00:06 sshd[2095]: error: Bind to port 22 on 2001:abcd:abcd:abcd::5 failed: Cannot assign requested address.
juin 29 17:00:06 sshd[2095]: fatal: Cannot bind any address.
juin 29 17:00:06 systemd[1]: ssh.service: Main process exited, code=exited, status=255/n/a
juin 29 17:00:06 systemd[1]: ssh.service: Unit entered failed state.
juin 29 17:00:06 systemd[1]: ssh.service: Failed with result 'exit-code'.


Si je relance sshd quand le serveur est lancé, là c'est ok :
juin 29 17:02:08 sshd[2594]: Server listening on 2001:abcd:abcd:abcd::5 port 22.


C'est sur un serveur Ubuntu 16.04.2 équipé d'un Xeon E3-1240 v5 @3.50GHz

Voici le début du fichier /etc/ssh/sshd_config :
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
ListenAddress [2001:abcd:abcd:abcd::5]
AddressFamily inet6
Protocol 2

Le serveur est configuré pour n'écouter que en IPv6 (AddressFamily inet6) et sur une IPv6 précise (ListenAddress [2001:abcd:abcd:abcd::5]).


Voici la configuration IP:  si dans le fichier /etc/ssh/sshd_config je remplace l'IP N°4 par l'IP N°1, je n'ai aucun problème : je pense donc que les IP additionnelles ne sont pas montées immédiatement et que sshd se lance avant que son IP d'écoute soit en service.

auto enp2s0f0

# IP N°1 :
iface enp2s0f0 inet static
        address 123.123.123.234
        netmask 255.255.255.248
        gateway 123.123.123.233

iface enp2s0f0 inet6 static
        address 2001:abcd:abcd:abcd::2
        netmask 64
        gateway 2001:abcd:abcd:abcd::1
        dns-nameservers 2001:abcd:abcd:aaaa::1 2001:abcd:abcd:aaaa::2

# IP N°2 :
        up   ip addr add 123.123.123.235/29 dev $IFACE label $IFACE:0
        down ip addr del 123.123.123.235/29 dev $IFACE label $IFACE:0
        up   ip -6 addr add 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0
        down ip -6 addr del 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0

# IP N°3 :
        up   ip addr add 123.123.123.236/29 dev $IFACE label $IFACE:1
        down ip addr del 123.123.123.236/29 dev $IFACE label $IFACE:1
        up   ip -6 addr add 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0
        down ip -6 addr del 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0

# IP N°4 : Monitoring
        up   ip -6 addr add 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
        down ip -6 addr del 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
(Les IPv4 / IPv6 ont étés remplacées)

J'ai trouvé une solution de contournement : créer un fichier /etc/cron.d/network qui redémarre sshd 20 secondes après le démarrage du serveur :
# Auto restart SSH on reboot
@reboot         root   sleep 20 ; /usr/sbin/service sshd restart

Je ne trouve pas ça propre.

vous avez déjà été confronté a ce problème ?

Fredwww

  • Expert Orange
  • Abonné Orange Fibre
  • *
  • Messages: 372
D'après les logs, le service network se lance à quel moment ?

Normalement sshd devrait s’exécuter après que le service réseau soit monté.

Tu peux vérifier dans /etc/systemd/system/sshd.service.d

After=network.target auditd.service

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
J'ai bien After=network.target dans /etc/systemd/system/sshd.service.d

Le réseau se lance bien juste avant sshd, mais j'imagine que c'est uniquement l'IPv4 / IPv6 principale.

Pas de souci quand je limite sshd à l'IP principale.

Je pense que les autres IP sont montées alors que le reste du démarrage continue. On n'a pas d'info précise sur les IP montées :

juin 29 17:52:49 systemd[1]: Started ifup for enp2s0f0.
juin 29 17:52:49 ifup[1554]: /sbin/ifup: waiting for lock on /run/network/ifstate.enp2s0f0

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 078
  • Paris (75)
dans le up ?

auto enp2s0f0
....

# IP N°4 : Monitoring
        up   ip -6 addr add 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0 && /usr/sbin/service sshd start
        down ip -6 addr del 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0


vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible
« Réponse #4 le: 07 juillet 2017 à 12:11:59 »
J'ai le même souci avec Apache2 : depuis que j'ai définit dans /etc/apache2/ports.conf la liste des IP et des ports à écouter, apache refuse de démarrer car les IP secondaires ne sont pas up au moment où apache se lance.

# journalctl | grep apache2
juil. 07 11:58:49 apache2[2243]:  * Starting Apache httpd web server apache2
juil. 07 11:58:50 apache2[2243]: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address [2001:abcd:abcd:abcd::3]:80
juil. 07 11:58:50 apache2[2243]: no listening sockets available, shutting down
juil. 07 11:58:50 apache2[2243]: AH00015: Unable to open logs
juil. 07 11:58:50 apache2[2243]: Action 'start' failed.
juil. 07 11:58:50 apache2[2243]: The Apache error log may have more information.
juil. 07 11:58:50 apache2[2243]:  *
juil. 07 11:58:50 apache2[2328]:  * Stopping Apache httpd web server apache2
juil. 07 11:58:50 apache2[2328]:  *

Ne serait-il pas possible que systemd considère le réseau monté que quand les IP secondes ont été montées ?

Il faut peut être que j'écrive mon /etc/network/interfaces de manière différente ?


auto enp2s0f0

# IP N°1 :
iface enp2s0f0 inet static
        address 123.123.123.234
        netmask 255.255.255.248
        gateway 123.123.123.233

iface enp2s0f0 inet6 static
        address 2001:abcd:abcd:abcd::2
        netmask 64
        gateway 2001:abcd:abcd:abcd::1
        dns-nameservers 2001:abcd:abcd:aaaa::1 2001:abcd:abcd:aaaa::2

# IP N°2 :
        up   ip addr add 123.123.123.235/29 dev $IFACE label $IFACE:0
        down ip addr del 123.123.123.235/29 dev $IFACE label $IFACE:0
        up   ip -6 addr add 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0
        down ip -6 addr del 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0

# IP N°3 :
        up   ip addr add 123.123.123.236/29 dev $IFACE label $IFACE:1
        down ip addr del 123.123.123.236/29 dev $IFACE label $IFACE:1
        up   ip -6 addr add 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0
        down ip -6 addr del 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0

# IP N°4 : Monitoring
        up   ip -6 addr add 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
        down ip -6 addr del 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
(Les IPv4 / IPv6 ont étés remplacées)

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible
« Réponse #5 le: 07 juillet 2017 à 13:07:59 »
Je pense avoir trouvé : https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

Il suffirait de faire un systemctl enable systemd-networkd-wait-online.service


Contenu du fichier /lib/systemd/system/systemd-networkd-wait-online.service :
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Wait for Network to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
DefaultDependencies=no
Conflicts=shutdown.target
Requisite=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target

[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes

[Install]
WantedBy=network-online.target


Autre piste remplacer network.target par network-online.target
=> https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible
« Réponse #6 le: 07 juillet 2017 à 13:32:09 »
En fait, systemctl enable systemd-networkd-wait-online.service ne résout pas le pb d'IPv6 secondaire non démarré avant de lancer les autres services.

# systemctl status systemd-networkd-wait-online
● systemd-networkd-wait-online.service - Wait for Network to be Configured
   Loaded: loaded (/lib/systemd/system/systemd-networkd-wait-online.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-networkd-wait-online.service(8)

juil. 07 13:17:31 systemd[1]: Dependency failed for Wait for Network to be Configured.
juil. 07 13:17:31 systemd[1]: systemd-networkd-wait-online.service: Job systemd-networkd-wait-online.service/start failed with result 'dependency'.

Je vois d'autres personnes affectées par ce pb sur Ubuntu ou Debian : https://unix.stackexchange.com/questions/245635/systemd-networking-ipv6-networking-not-available-at-boot

Seul les IPv6 secondaires sont affecté. IPv4 ne connait pas ce pb.

cali

  • Officiel Ukrainian Resilient Data Network
  • Fédération FDN
  • *
  • Messages: 2 401
    • Ukrainian Resilient Data Network
SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible
« Réponse #7 le: 07 juillet 2017 à 14:19:46 »
Tu utilises les "up" et "down" mais tu devrais utiliser "pre-up" et "pre-down", pour être sûr que tout ça s'éxecute séquentiellement et pas à côté.

vivien

  • Administrateur
  • *
  • Messages: 47 085
    • Twitter LaFibre.info
SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible
« Réponse #8 le: 07 juillet 2017 à 14:56:54 »
Étonnant comme solution, mais cela fonctionne !

J'ai bien mes services qui démarrent.

C'est normal d'avoir "Dependency failed" ?
juil. 07 13:17:31 systemd[1]: Dependency failed for Wait for Network to be Configured.
juil. 07 13:17:31 systemd[1]: systemd-networkd-wait-online.service: Job systemd-networkd-wait-online.service/start failed with result 'dependency'.



voici mon /etc/network/interfaces :

auto enp2s0f0

# IP N°1 :
iface enp2s0f0 inet static
        address 123.123.123.234
        netmask 255.255.255.248
        gateway 123.123.123.233

iface enp2s0f0 inet6 static
        address 2001:abcd:abcd:abcd::2
        netmask 64
        gateway 2001:abcd:abcd:abcd::1
        dns-nameservers 2001:abcd:abcd:aaaa::1 2001:abcd:abcd:aaaa::2

# IP N°2 :
        pre-up ip addr add 123.123.123.235/29 dev $IFACE label $IFACE:0
        down   ip addr del 123.123.123.235/29 dev $IFACE label $IFACE:0
        pre-up ip -6 addr add 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0
        down   ip -6 addr del 2001:abcd:abcd:abcd::3/64 dev $IFACE preferred_lft 0

# IP N°3 :
        pre-up ip addr add 123.123.123.236/29 dev $IFACE label $IFACE:1
        down   ip addr del 123.123.123.236/29 dev $IFACE label $IFACE:1
        pre-up ip -6 addr add 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0
        down   ip -6 addr del 2001:abcd:abcd:abcd::4/64 dev $IFACE preferred_lft 0

# IP N°4 : Monitoring
        pre-up ip -6 addr add 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
        down   ip -6 addr del 2001:abcd:abcd:abcd::5/64 dev $IFACE preferred_lft 0
(Les IPv4 / IPv6 ont étés remplacées)

cali

  • Officiel Ukrainian Resilient Data Network
  • Fédération FDN
  • *
  • Messages: 2 401
    • Ukrainian Resilient Data Network
SSH : Échec du serveur SSHD, car l'interface a écouter n'est pas disponible
« Réponse #9 le: 07 juillet 2017 à 15:00:46 »
C'est normal d'avoir "Dependency failed" ?
juil. 07 13:17:31 systemd[1]: Dependency failed for Wait for Network to be Configured.
juil. 07 13:17:31 systemd[1]: systemd-networkd-wait-online.service: Job systemd-networkd-wait-online.service/start failed with result 'dependency'.



Ouais, c'est à cause de ce que t'as fait avant.