[RESOLU] client pour no-ip >>howto !

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

[RESOLU] client pour no-ip >>howto !

Messagepar lurey » 05 Mars 2007 10:25

Bonjour,
après avoir passé mon SME en serveur et passerelle (c'est un autre sujet), je dois mettre en place de quoi rediriger dessus mes adresses de sites pour lesquels j'utilise un groupe de redirection chez no-ip. J'ai téléchargé le client fourni par no-ip assez simple à installer et bien documenté (C'est là); il y a une notice traduite en Français dont voici deux extraits qui me laissent cependant indécis, peut-être quelqu'un a-t-il déjà installé ce client, ou simplement saura les comprendre mieux que moi:
Si vous êtes derrière un pare-feu, vous devrez autoriser le port 8245 (TCP) dans les deux sens.
Faut-il considérer que SME est derrière son propre pare-feu, et si oui, qu'il faudrait, dans la page "configuration du renvoi de port", ajouter une règle genre:
Protocole TCP
Port(s) source 8245
Adresse IP de l'hôte de destination [IP Lan de mon SME] ? ou 127.0.0.1 [boucle locale] ?
Port(s) de destination 8245
Si vous désirez qu'il démarre automatiquement à l'amorçage de la machine, placez le script suivant dans votre répertoire de démarrage. (/etc/init.d/
rcX.d ou /sbin/init.d/rcX.d ou ???)

#######################################################
#! /bin/sh
# . /etc/rc.d/init.d/functions # décommentez/modifiez vers killproc
case "$1" in
start)
echo "Démarrage de noip2."
/usr/local/bin/noip2
;;
stop)
echo -n "Arrêt de noip2."
killproc -TERM /usr/local/bin/noip2
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#######################################################

Où le 'X' de rcX.d est la valeur obtenue en exécutant la commande:
grep initdefault /etc/inittab | awk -F: '{print $2}'

là, je patauge...
mon X doit être 7. Dans /etc/rc.d il y a un répertoire rc7.d contenant divers fichiers de script nommés Sxxnnnnn , par exemple
S98mldonkey
S99local
S99mysql.init

Est-ce la bonne manip, et le bon endroit, si j'enregistre là un fichier Sxxnoip contenant le script fourni ?
Question subsidiaire, quelle valeur donner à xx sachant qu'actuellement, 99 est le dernier, mais que tous les nombres de 1 à 99 ne sont pas utilisés, et que certains le sont deux fois... en fait, si quelqu'un m'explique le théorique derrière cette manœuvre, ça serait l'idéal, je le ferais... :oops: plus intelligemment ! Merci...
Dernière édition par lurey le 12 Mars 2007 21:18, édité 2 fois au total.
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

Re: client pour no-ip (adresse dynamique)

Messagepar jibe » 05 Mars 2007 19:27

Salut,

lurey a écrit:Faut-il considérer que SME est derrière son propre pare-feu

Normalement, non...

lurey a écrit:Est-ce la bonne manip, et le bon endroit, si j'enregistre là un fichier Sxxnoip contenant le script fourni ?
Question subsidiaire, quelle valeur donner à xx sachant qu'actuellement, 99 est le dernier, mais que tous les nombres de 1 à 99 ne sont pas utilisés, et que certains le sont deux fois... en fait, si quelqu'un m'explique le théorique derrière cette manœuvre, ça serait l'idéal, je le ferais... :oops: plus intelligemment ! Merci...

Oui, leur histoire de rc7.d est pour le moins bizarre ! Je pense qu'il manque une partie du texte ou un truc dans le genre...

Donc, tu as bien raisonné : il faut bien nommer ton script Sxxnoip. Pour déterminer la valeur de xx, c'est assez simple : il faut t'intercaler après que les services nécessaires aient été lancés, et avant que ceux qui ont besoin de ton script le soient. Donc, dans ton cas, je dirais quelque part entre le moment où ta carte ethernet côté Internet est activée et avant le lancement de la connexion PPPoE, de sorte que le client noip soit opérationnel lors de cette connexion, puisse détecter la nouvelle IP et mettre à jour le DNS chez noip.

Mais je n'ai pas vraiment compris : est-ce noip qui te met à jour ton DNS dynamique actuellement ? Si ce n'est pas le cas, commence par le faire fonctionner en le lançant à la main : tu auras le temps de mettre en place le script de lancement plus tard, lorsque tout sera au point ;-)
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar lurey » 06 Mars 2007 00:09

bonsoir,
suite de mes investigations...
Dans /etc/rc.d/rc7.d , tous les fichiers apparaissent dans WinSCP comme des "raccourcis" (excusez du terme windowsien....) vers des scripts enregistrés dans /etc/rc.d/init.d . Lorsqu'on ouvre l'un de ces fichiers -qui font tous 32 octets- est écrit en tête:
(...)
#----------------------------------------------------------------------
# e-smith-service: meta-init script which runs the underlying service
# based on the name of the service script invoked.
# For example S85sshd would run init.d/sshd
#----------------------------------------------------------------------

Alors je me demande si je dois faire pareil - auquel cas, comment génère-t-on ces "raccourcis" ?
ou puis-je, plus simplement, faire un "vrai" fichier dans le répertoire rc7.d ...?

Jibe, le client de noip2 doit envoyer mon adresse chaque fois qu'elle change au serveur de no-ip qui sait ainsi où renvoyer les requêtes http://monadresse-chez-no-ip (xxx.myftp.org est aussi chez no-ip). J'ai cru comprendre que toutes les minutes, le client vérifie mon adresse par rapport à la dernière qu'il a enregistrée, et doit communiquer avec le serveur DNS de no-ip lorsque la comparaison est fausse.
J'avais hier soir ouvert le port TCP 9245 vers 192.168.1.1 (IP de SME) que d'ailleurs l'interface m'a traduit automatiquement en "localhost" . D'après ce que tu me dis, ce doit être inutile ? je prendrai le temps de tester après avoir supprimé cette ouverture...
au passage: reprendre d'IPCop le principe de la page concernant les dns dynamiques, ainsi que celle de la gestion du firewall, ça serait sympa, et resterait dans la philosophie de simplicité de SME, non? :wink:
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

Messagepar Gaston » 06 Mars 2007 00:53

Bonsoir,
les mécanismes de démarrage de services sont de plusieurs type selon que tu travailles sous des systèmes d'origine BSD (/etc/rc) ou ATT (inittab).

Ceux ci ont évolués au cours du temps avec entre autre les gestion de service (pour les dépendances) , cela continue à évoluer d'ailleurs, (SMF :? avec solaris10)
Sous linux, plus particulièrment SME, on s'est tourné vers un mélange de deux monde : les RCiste et les SRViste.

En gros, pour le RC, tu choisis (en fonction des dépendances que tu connais) ce qui doit se passer pour chacun des run level possibles.

Par exemple si tu veux qu'un service/programme démarre en run level 3, il faudra que tu ais une entrée correspondante dans le /etc/rc3.d, nommée S321 , et comme tu fais les choses proprement tu auras très certainement également une entrée K123 , qui se chargera d'arrêter le service/programme à l'extinction (en sens inverse), le "killproc par exemple ;).

Les services seront démarrés dans l'ordre numérique des chiffres qui suivent le S et arrété dans l'ordre numérique qui suit le K (c'est pour ça que la numérotation diffère)

Pour ce qui te concerne, considérant que le run level par défaut d'un SME est le 7, que c'est le dernier runlevel pour lequel quelquechose sera démarré, il t'es conseillé de créer une entrée dans le /etc/rc7.d

Cela se fait, pratiquement, en ajoutant un script dans l'arborescence /etc/rc.d/init.d et en créant un lien symbolique depuis le /etc/rc7.d vers ce script.
Mais bon c'est un peu compliqué juste pour un service utilisateur qui dépends de beaucoup de services systèmes qu'il ne connait pas forcément.
Il a donc été créé un endroit pour notifier le démarrage de ces petits services complémentaires : /etc/rc.local.

Tu as donc le choix :
Code: Tout sélectionner
# cp /le/chemin/ton_fichier_no_ip /etc/rc.d/init.d/no_ip
# chmod 750 /etc/rc.d/init.d/no_ip
# ln -s /etc/rc.d/init.d/no_ip /etc/rc7.d/S991no_ip
#ln -s /etc/rc.d/init.d/no_ip /etc/rc7.d/K199no_ip

ou alors
Code: Tout sélectionner
# cat >> /etc/rc.local <<EOT
nohup /le/chemin/ton_fichier_no_ip $1
EOT

espérant ne pas avoir été trop confusant :oops:

G.
[edit]ajout d'un paramètre manquant sur la ligne de démarrage du script no_ip[/edit]
Dernière édition par Gaston le 07 Mars 2007 17:58, édité 1 fois au total.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar lurey » 06 Mars 2007 13:00

ouah, je me sens devenir un peu plus intelligent, avec ces explications... merci !
J'avais déjà croisé cette notion de lien symbolique, mais ça ne me revenait plus...
Alors, mes questions suivantes concerneront le "killproc"
1) dans mon rc7.d il n'y a que des Sxxnnn et pas de Kxxnnn ?
Dans les rcx.d de niveau moindre, il y a des Kxxnnn , y compris certains correspondant à des Sxxnnn présents dans rc7.d, me semble-t-il (de mémoire, car là je suis au boulot, je n'ai plus tout ça sous les yeux...)
2) comment faut-il comprendre la ligne
# . /etc/rc.d/init.d/functions # décommentez/modifiez vers killproc
Est-ce à dire que, si le script comporte cette ligne non commentée
. /etc/rc.d/init.d/functions
- cela permet-il à un dispositif global "killproc" de prendre en compte pour killer proprement noip ? (rendant inutile un fichier Kxxnoip)?
- ou au contraire, ça permet
#ln -s /etc/rc.d/init.d/no_ip /etc/rc7.d/K199no_ip

- ou sinon.... ?
Excuser mes néologismes, et merci de votre patience à m'expliquer ce qui vous apparait peut-être comme le b-a ba sous linux...
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

Messagepar Gaston » 07 Mars 2007 02:30

Bonsoir,
lurey a écrit:1) dans mon rc7.d il n'y a que des Sxxnnn et pas de Kxxnnn ?
Dans les rcx.d de niveau moindre, il y a des Kxxnnn , y compris certains correspondant à des Sxxnnn présents dans rc7.d, me semble-t-il (de mémoire, car là je suis au boulot, je n'ai plus tout ça sous les yeux...)

c'est normal :P souvent il est peut être plus intéressant (voire nécessaire) d'arrêter les services dans le niveau adjacent par exemple on démarre en rc3 et on arrête en rc2 (voir en rc1). Comme ça on est sur qu'un init x (avec x inférieur au niveau de run level actuel) arrêtera bien les services qui ne doivent plus tourner.
2) comment faut-il comprendre la ligne
# . /etc/rc.d/init.d/functions # décommentez/modifiez vers killproc
Est-ce à dire que, si le script comporte cette ligne non commentée . /etc/rc.d/init.d/functions cela permet-il à un dispositif global "killproc" de prendre en compte pour killer proprement noip ?

A priori (j'ai pas d'accès sous la main pour vérifier) tu as dans le fichier nommé une palanquée de fonctions dont la "killproc" , il devrait suffire de vérifier qu'elle n'est pas commentée pour qu'il se passe réellement quelque chose lors de l'éxécution.
(rendant inutile un fichier Kxxnoip)?

pas du tout :x les fichiers Kxx seront activés lors du prochain passage par ce runlevel en mode descendant
Cette action correspont en fait au lancement du script /etc/rc.d/init.d/no_ip avec l'argument "stop".
Tu rentres alors dans la branhce correspondante du "case" dans laquelle on appelle la fonction "killproc"

G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar lurey » 07 Mars 2007 09:41

Merci, Gaston.
J'ai effectivement repéré (enfin, à peu près...) ce que devait être le fichier /etc/rc.d/init.d/functions, après avoir repéré que les autres scripts comportent cette même ligne...
Je comprends ainsi comment Sxxnnn et Kxxnnn peuvent être un lien vers le même script.
Je crois que j'ai tout, maintenant, pour faire en comprenant pourquoi !
Je confirme, par ailleurs, que comme le laissait entendre jibe, aucune ouverture de port n'est nécessaire sur SME pour que le client noip2 assure sa fonction.
Ca sent la question résolue !
serveur SME 7.1.2 (Celeron 2GHz, Ram 256Mo) - Bewan Ethernet ST
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

Messagepar lurey » 08 Mars 2007 23:14

bonsoir,
Dernier élément: après documentation (vive google dont certains disent avoir fait leur ami !) et observations des scripts (ou liens vers les scripts) dans les différents répertoires rcX.d de mon serveur, j'ai cru comprendre que :
- si je mets Kxxnoip avec Sxxnoip dans le même répertoire, correspondant au runlevel 7, ça va arrêter (kill) noip (qui n'est pas encore lancé!) avant de le lancer(Start).
- les runlevel 6 et 0 seraient respectivement pour le reboot et pour l'arrêt; c'est donc là qu'il m'a semblé utile de placer des liens Kxxnoip , dans rc6.d et rc0.d
N'ayant plus de moniteur sur mon SME, je n'ai pas pu voir le message démontrant un arrêt "propre" du client noip, en tout cas le démarrage au reboot est bon.
Voilà, merci de m'avoir appris des choses... et poussé à en chercher d'autres !
Je vais pouvoir marquer [RESOLU] avec satisfaction :D
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

trouver un tuto no-ip.com ?

Messagepar webcarle » 12 Mars 2007 19:03

Bonjour,
Serait-il possible d'avoir un tuto complet sur l'installation et la configuration necessaire pour utiliser no-ip.com sur la SME 7 ?

Merci d'avance ;-)
webcarle
Premier-Maître
Premier-Maître
 
Messages: 53
Inscrit le: 24 Fév 2006 16:40
Localisation: Savoie

Messagepar lurey » 12 Mars 2007 21:07

J'avais hésité à faire un résumé au moment d'inscrire "résolu", pui, la flemme aidant, je m'étais dit que finalement tout était là pour qui chercherait...
Bon , tant pis, je vais tâcher d'être clair comme un "howto" ! :wink:
  1. télécharger le client de no-ip sur le site de no-ip
  2. transférer l'archive sur SME. Pour exemple, je l'ai placé, à l'aide de WinSCP, dans le répertoire /root.
  3. en ligne de commande, loggé en root, (par ex. avec putty) décompresser l'archive:
    Code: Tout sélectionner
    # tar xvzf noip-duc-linux.tar.gz
  4. lire la notice bien faite, en français, /root/noip-2.1.4/README.FIRST.FRANCAIS dont ce qui suit n'est qu'un extrait :
    COMMENT COMPILER UN EXECUTABLE POUR VOTRE SYSTEME

    La commande
    make
    va produire l'exécutable du client noip2 qui fonctionnera sur votre système.

    Si vous ne disposez pas de 'make' et que vous avez une machine Linux-i686 avec Libc6, il existe un exécutable pour les systèmes i686 appelé noip2-Linux dans le répertoire binaries. Copiez le dans le répertoire de construction.
    'cp binaries/noip2-Linux noip2' (*)

    La commande
    make install
    (qui doit être exécutée en tant que root) installera les différents éléments aux endroits appropriés. Elle vous posera des questions et créera un fichier de données de configuration.
    Se placer dans le répertoire /root/noip-2.1.4 pour lancer les commandes make ...
    (*) sous WinSCP, on peut glisser/déplacer le fichier présent dans le répertoire"binaries", mais bien veiller à renommer en noip2
  5. Votre serveur doit être connecté à internet au moment de l'installation: on vous demandera votre identifiant (l'adresse mail donnée lors de l'inscription à no-ip) et votre mot de passe; l'install va alors toute seule chercher chez no-ip le domaine ou le groupe que vous avez enregistré, et paramètre votre client pour.
  6. Une fois l'install faite, créer en /etc/rc.d/init.d/no-ip le script suivant: (***)
    Code: Tout sélectionner
    #######################################################
    #! /bin/sh
    . /etc/rc.d/init.d/functions
    case "$1" in
    start)
    echo "Démarrage de noip2."
    /usr/local/bin/noip2
    ;;
    stop)
    echo -n "Arrêt de noip2."
    killproc -TERM /usr/local/bin/noip2
    ;;
    *)
    echo "Usage: $0 {start|stop}"
    exit 1
    esac
    exit 0
    #######################################################
  7. en ligne de commande, loggé en root, créer les liens symboliques permettant le lancement automatique du client no-ip au démarrage et son arrêt "propre":
    Code: Tout sélectionner
    # ln -s /etc/rc.d/init.d/no-ip /etc/rc7.d/S70no-ip
    # ln -s /etc/rc.d/init.d/no-ip /etc/rc6.d/K20no-ip
    # ln -s /etc/rc.d/init.d/no-ip /etc/rc0.d/K20no-ip
  8. Pour lancer le client la première fois sans avoir à rebooter la machine :(**)
    Code: Tout sélectionner
    # /etc/rc.d/init.d/no-ip start
Et voilà, le tour est joué ! ça doit marcher ! :lol:
(on peut supprimer le répertoire /root/noip-2.1.4 qui a servi pour l'install)

(**) Merci à Gaston de la correction apportée là pour une meilleure cohérence du raisonnement!
(***) Il indique également une autre solution utilisant rc.local: il suffirait, après l'install, (à la place de l'étape 6) d'ajouter au fichier /etc/rc.local la ligne suivante :
Code: Tout sélectionner
nohup /usr/local/bin/noip2 $1
Je n'ai pas encore expérimenté (ni complètement compris), mais Gaston semble la préférer, et... y'a pas de raison qu'il ait tort !
Dans ce cas,
Code: Tout sélectionner
# /usr/local/bin/noip2
pour lancer la première fois (hors reboot).
Dernière édition par lurey le 13 Mars 2007 12:37, édité 1 fois au total.
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

probleme Make

Messagepar webcarle » 13 Mars 2007 11:39

Merci pour ce tuto, mais malheureusement je n'ai pas Make sur mon SME7 :
Code: Tout sélectionner
# make install
if [ ! -d /usr/local/bin ]; then mkdir -p /usr/local/bin;fi
if [ ! -d /usr/local/etc ]; then mkdir -p /usr/local/etc;fi
cp noip2 /usr/local/bin/noip2
/usr/local/bin/noip2 -C -c /tmp/no-ip2.conf
make: execvp: /usr/local/bin/noip2: Permission non accordée
make: *** [install] Erreur 127


Et je prefererais eviter de l'installer car c'est un serveur en production online et j'ai lu quelquepart que cela augmentait les risque de sécurité !

Existe-t-il une version compilée de noip ?
webcarle
Premier-Maître
Premier-Maître
 
Messages: 53
Inscrit le: 24 Fév 2006 16:40
Localisation: Savoie

Messagepar lurey » 13 Mars 2007 12:12

SVP, lire la notice déjà citée:
Si vous ne disposez pas de 'make' et que vous avez une machine Linux-i686 avec Libc6, il existe un exécutable pour les systèmes i686 appelé noip2-Linux dans le répertoire binaries. Copiez le dans le répertoire de construction.
'cp binaries/noip2-Linux noip2' (*)

c'est ce que j'ai fait, après qu'un message (dont je ne me souviens plus précisément) m'ait signifié qu'il me manquait de quoi faire "make". (Je n'ai rien ajouté à mon serveur SME, sinon les mises à jour régulières).
Pour autant, une fois le fichier copié et renommé (*), la commande "make install" a installé sans message d'erreur.
Voir la question des autorisations, la notice est explicite à ce sujet (chmod 750 de mémoire ?)
(*)Il y a peut-être pb si on a dû installer autrement que pour i686 (par ex. sur un PC à processeur antérieur à P II, genre AMD K6...)
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

suite

Messagepar webcarle » 13 Mars 2007 13:34

Merci de ton aide.
J'avais bien suivi ton tuto, et j'avais aussi tenté de copier le noip du dossier binary mais cela ne marche pas.
J'ai en retour les messages cités plus haut.
Par contre ta remarque me semble etre juste concernant le processeur car je suis avec un AMD 3600+
C'est peut-etre pour cela que ca ne marche pas :(

En attendant je vais relire encore une fois la notice au cas ou j'aurais oublié quelque chose et refaire des essais ;-)
webcarle
Premier-Maître
Premier-Maître
 
Messages: 53
Inscrit le: 24 Fév 2006 16:40
Localisation: Savoie

Messagepar Gaston » 13 Mars 2007 15:01

Si tu relis les messages d'erreur, ça plante à la génration du fichier de conf, as tu bien , vérifié les permissions (rwxr-x---) ?
Quel message si tu lances le prog directement en ligne de commande (sans passer par le make ) ?

Je doute que l'AMD3600 n'utilise pas le jeux d'instruction des i686, mais bon je suis pas spécialiste de la chose.
Dans ce cas là la démarche est simple : tu t'installes une machine avec une Centos 4 et un proc AMD (ou tu fais de la cross compilation - pour autant qu'il y ait quelque chose à faire) , tu compiles le bousin et tu transfères l'exécutable sur ton serveur. Il est en effet plus que déconseillé d'installer un environnement de développement sur le serveur (pb de sécurité).

G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar lurey » 13 Mars 2007 16:40

je pense qu'il n'y a pas de pb avec ton processeur et i686.
J'ai lu quelquepart que la commande
# uname -m
te permet de le vérifier (affiche le type de materiel de ta machine) ?

vérifie les autorisations d'exécuter noip2 (y compris que root en est propriétaire, et que tu le lances en tant que root) et comme indique Gaston, essaie de lancer en ligne de commande:
# /usr/local/bin/noip2 -C -c /tmp/no-ip2.conf
l'option -C est pour configurer le client.
-c </chemin/ou/sera_ton/fichier_de_conf> est pour créer un fichier de configuration, si j'ai bien compris. Il faut que tu aies les droits pour écrire dans </chemin/ou/sera_ton/> (en l'occurence, /tmp/ ...)
Avatar de l’utilisateur
lurey
Vice-Amiral
Vice-Amiral
 
Messages: 582
Inscrit le: 10 Avr 2002 00:00
Localisation: Val d'Oise

Suivant

Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité