SSLH au démarrage de la machine

Salut a tous,
Pour ceux qui ne connaissent pas SSLH est un proxy permettant de séparer le traffic SSL & SSH. Donc sur un serveur en frontal sur le port 443 on trouve SSLH qui permet de se connect en HTTPS sur le serveur Web ou au serveur SSH. Pourquoi ? He bien pour passer au travers des proxy au taff qui bloque le port 22 mais pas le 443 …

Bon, mon problème est le suivant :
Dans la config de SSLH on lui precise les adresse IP et port d’ecoute + ceux de SSH et HTTPS (en général 127.0.0.1:22 et 443). Lors du démarrage de ma Debian j’ai un joli message d’erreur.

bind: Cannot assign requested address

Que fait BIND ici alors que je ne l’ai pas installé :open_mouth:
Après avoir fait de multiple essai j’en ai déduis que se lance “trop vite”, je m’explique.
En spécifiant une adresse du type pour l’IP et le port d’ecoute du prog
192.168.0.XX:443 = Erreur
0.0.0.0:443 = Ok, mais du coup c’est le serveur HTTPS qui ne peut pas se lancer

J’ai essayer de “descendre” SSLH dans l’ordre de démmarage en le mettant en dernier (S20) mais rien n’y fait :013
En desespoire de cause j’ai mis un SLEEP 5; dans le script de lancement pour le faire “attendre”, et là plus de problème …
Mais bon je ne trouve pas cela très “propre”. Si certains on une meilleur idée …

Pour info la machine problématique est un Guruplug avec une Debian Testing en 2.6.32-5 armv5tel.

Pourquoi ne pas mettre S99 carrémment ?
Qu’y-a-t-il dans les tags LSB (les premières lignes qui sont commentées) du script de démarrage (« Requires-Start » notamment) ?

Je l’ai mis en S20 car je n’ai aucun script qui dépasse S19. D’ailleur en utilisant la commande

update-rc.d sslh remove update-rc.d sslh start 20 2 3 4 5 . stop 02 0 1 6 .
Il me remettait le script en S02 :017 j’ai pas compris pourquoi alors je rennomais a la main les fichiers dans les différents rcX.d

Pour ce qui est des tag LSB j’ai ça

21 ### BEGIN INIT INFO 22 # Provides: sslh 23 # Required-Start: $network $local_fs 24 # Required-Stop: 25 # Should-Start: $named 26 # Should-Stop: 27 # Default-Start: 2 3 4 5 28 # Default-Stop: 0 1 6 29 # Short-Description: ssl/ssh multiplexer 30 # Description: sslh lets one accept both HTTPS and SSH connections on the 31 # same port. It makes it possible to connect to an SSH server 32 # on port 443 (e.g. from inside a corporate firewall) while 33 # still serving HTTPS on that port. 34 ### END INIT INFO

Sinon le script est installé avec le package et configuré en S02.

3 # Copyright (c) 2008 Guillaume Delacour <gui@iroqwa.org> 4 # basd on lsb skeleton init script by <jfs@debian.org>

Si tu veut je peut te mettre le script en entier mais il fait 268 lignes.

[quote=“Mimoza”]D’ailleur en utilisant la commande
ode:
update-rc.d sslh remove
update-rc.d sslh start 20 2 3 4 5 . stop 02 0 1 6 .

Il me remettait le script en S02 :017 j’ai pas compris pourquoi alors je rennomais a la main les fichiers dans les différents rcX.d[/quote]
Pour enlever le lien alors que le script est présent, il faut utiliser l’option -f (force) :

update-rc.d sslh -f remove

Celà dit, ça ne résoud pas ton problème…

« bind » veut dire « lier » en anglais. Et c’est souvent utiliser pour dire à quelle(s) adresse(s) ecoute un service. Je ne connais pas sslh, mais faudrait regarder de ce côté là… Dans la logique, je pense qu’il faudrait configurer apache pour qu’il écoute sur 127.0.0.1:443, pour permettre à sslh d’écouter sur 0.0.0.0:443.

Merci pour le “-f” je vais essayer cela.

Pour ce qui est de mettre SSLH sur 0.0.0.0:443 je l’ai déjà testé et cela fonctionne parfaite ment … sauf que c’est le HTTPS qui ne se met pas en place. Logique vue que l’adresse 0.0.0.0:443 comprend aussi l’adresse 127.0.0.1:443. Ou alors tu veut dire qu’il faut d’abord que je mette en place le HTTPS en 127 puis SSLH en 0 ?
Je vais essayer ça pour voir …

Bon petite précision pour le update-rc.d.
Je viens de regarder le script update-rc.d et en fait il regarde les tags LSB pour configurer automatiquement le script.
Je m’explique, dans l’entête de mon script de lancement de SSLH j’ai

Du coup le script va faire en sort que ce service soit lancé APRES les service cités. Comme je n’en n’avais aucun des deux il est normal qu’il me place le script en S02.
J’ai modifier la ligne en rajoutant une dépendance

Et cette fois il me place bien le script en S14, après portmap qui est en S14.
Bon j’ai résolue la partie subsidiaire de ma question.

PS : ce qui m’a mit sur la piste est le message

Qui apparaissait a chaque lancement de update-rc.d au lieu de

Adding system startup for /etc/init.d/XXX... /etc/rc0.d/K20XXX -> ../init.d/XXX /etc/rc1.d/K20XXX -> ../init.d/XXX /etc/rc6.d/K20XXX -> ../init.d/XXX /etc/rc2.d/S20XXX -> ../init.d/XXX /etc/rc3.d/S20XXX -> ../init.d/XXX /etc/rc4.d/S20XXX -> ../init.d/XXX /etc/rc5.d/S20XXX -> ../init.d/XXX

Bon j’ai finalement trouvé une solution “convenable”
J’ai rajouté dans les tags LSB sshd & nginx

# Should-Start:      $named sshd nginx

Et relancé une petit

update-rc.d sslh defaults

Du coup plus de problème, il se lance presque en dernier et j’ai pu enlever le

SLEEP 5;

Voilà problème résolu :041