Aller au contenu

Tuto Haproxy Et Regroupement Des Param


via78

Messages recommandés

Bonjour,

je vous propose un tuto pour HAPROXY mais je souhaite surtout rassembler toutes les options qui sont sur le fofo !!

je remercie donc tous les personnes qui ont postés sur le fofo, ce qui m'a permis d'élaborer ce poste

Haproxy se décompose en 4 parties :

1. Configuration :

Configuration de base et commande pour appliquer les mises à jour

  • Ecriture Configuration : permet d’appliquer la configuration que l’on vient de faire
  • Générer le certificat : permet de créer certificat SSL qui nous utiliserons lors des connexions https depuis l’extérieur
  • Recharger la configuration par defaut

2. Frontends

On définit les ports d’écoutes et les options qui seront utilisés

  • Nom du frontend
  • Port d’écoute
  • Option du frontend

3. Backends

On definit pour chaque backends comment on va discuter avec le syno. (en d’autre thermes : on definit les sorties, apres traitement, de haproxy et donc comment discuter avec les applications du syno)

  • Nom du backend
  • Adresse IP et Port de sortie (port propre a l’application du syno)
  • Des options

4. Associations

On associe un frontend et un backend que l’on veut utiliser sous une condition.

Pour bien commencer :

Le package Haproxy est configurer pour traiter les urls :

  • https sur le port 5443
  • http sur le port 5080

Donc :

  • il faut configurer le firewall de votre « box » pour que tous ce qui vient de l’extérieur en https (port 443) soient redirigé vers l’adresse IP du syno sur le port 5443
  • il faut configurer le firewall de votre « box » pour que tous ce qui vient de l’extérieur en http (port 80) soient redirigé vers l’adresse IP du syno sur le port 5080

Comme le schéma si dessous :

je vais utiliser l'URL : dsm.monsite.fr comme exemple pour me connecter au DSM de mon synology

WuxNTDK.png

Ainsi toutes les tentatives de connexion sur votre syno en http et https seront traitées par haproxy quoi qu’il arrive et il fera l’aiguillage pour vous.

Maintenant il nous reste plus qu’a appliqué la configuration par défaut et créer le certificat.

W5YqJNQ.png

Je vais expliquer la connexion à l’interface de gestion du syno (dsm) d’un bout à l’autre.

  • url tapé sur votre navigateur : https://dsm.monsite.fr donc port 443
  • entrée sur le firewall de votre box port 443 et redirigé vers le port 5443 vers l’@IP du syno
  • entrée dans haproxy sur le frontend https :
    • entrée sur le port 5443 donc cryptage de la connexion par le certificat généré
    • Une association dit que :
      • Si la connexion est bien en https
      • Si l’url commence par dms.
      • Alors je renvoie vers le backend nommé « dms »
    • Le backend « dsm » dit que :
      • Je renvoi la requête vers l’@IP du syno (localhost) et sur le port 5000 et je vérifie que la connexion est OK

Voici le schema explicatif du traitement :

W7Wu8TM.png

** Firewall du Syno : Bien sûr le port 5000 doit être ouvert sur le Firewall de votre syno !!!

** Configuration de la connexion au DSM : La redirection du port 5000 vers le port 5001 pour le DSM doit être désactivé !!!

Connexion aux applications DS (Ds file, DS Audio, DS Photo etc….)

**Je pars du principe que vous avez activé ces applications, que vous avez téléchargé ces applications sur votre téléphone ou tablette, et que vous vous connectez parfaitement chez vous avec votre WIFI !

**Si ce n’est pas le cas, c’est une doc ou un autre tuto que vous devez consulter avant de suivre la suite.

Ces applications fonctionnent avec les ports suivant (nativement bien sûr) :

DS Photo : port 80

DS File : port 5005 (c’est le port WEBDAV qui est utilisé)

DS Audio : port 8800

DS Download : port 8000

DS Surveillance : port 9900

DS Video : port 9007

Donc nous devons créer un Backend pour chaque application comme ceci :

Nom : nom de l’application exemple : dsvideo

Serveur : redirection l’IP et le port exemple : dsvideo localhost :9007 check

Voici la liste des Backends que vous allez utiliser si vous restez cartésien dans la dénomination des backends :

IcVj67r.png

Maintenant nous allons créer les associations

Nous allons associer le Frontends HTTPS pour plus de sécurité avec le backends voulu ou correspondant avec une condition.

Nous conditionnons chaque association par le nom du sous domaine que nous voulons utiliser pour l’application DS de notre choix.


Exemple : pour utiliser DS Video, je vais créer une association en Frontend HTTPS et le Backend dsvideo avec la condition que l’adresse internet commence par dsvideo.

Voici ce que vous devez retrouver pour les associations dsvideo et dsphoto :

hRh5mA1.png

Je vous laisse faire la suite pour les autres applications DS.

Maintenant la connexion depuis chaque application

Nous devons nous connecter à une application DS suivant les règles que nous avons établie dans haproxy :

Pour l’application dsvideo : l’adresse doit commencer par dsvideo.

Les connexions doivent être sécurisées : HTTPS

Les connexions doivent être sur le port : 443

Le nom de domaine que j’utiliserais dans cet exemple est : site.fr

Mise en forme de l’adresse de connexion : [nom de l’application] . [nom de domaine] :443

Exemple pour l’application dsvideo : dsvideo.site.fr :443

Compte : un compte qui a les droits sur l’application

Mot de passe : mot de passe associé

HTTPS : Activé

**pour l’application photo, le port (:443) n’est pas obligatoire

Rassemblement des informations sur le paramétrage Haproxy.

Bon maintenant que les fonctions de bases sont établies, je vais rassembler ce que j’ai lu sur le fofo et que je pense avoir compris et utilisé pour améliorer le paramétrage.

1. Modification du paramétrage de base :

A. Backend par défaut *

* si votre url ne correspond a aucune regle definit dans haproxy alors les requettes seront envoyées vers un backend, le backend par defaut, qui est dans le frontend que vous utilisé.

Dans le Frontends HTTPS : le "backend par défaut" est "web".

Dans le Frontends HTTP : le "backend par défaut" est "web".

Comme indiqué si dessous :

p0e6jjV.png

Ce qui veut dire qu’un mauvaise url entrainera l’accès à votre site web.

!!! Ce qui est vrais pour les requêtes en https mais pas en http parce que l’association n’est pas créé. !!!

Si nous supprimons les 2 backends par defaut, le navigateur renverra :

503 Service Unavailable
No server is available to handle this request.

!!! A partir de maintenant je vais donner des options et chaque option doit être séparé par une virgule !!!!

B. Redirection des requette http vers le https

Vous devez éditer le frontend "http" et ajouter dans la partie "option" :

redirect scheme https

C. Exclusion de certaine requette

Maintenant nous voulons exclure certain application de cette règle de redirection, comme les sites web et video par exemple.

il faut compléter option précedent par : "unless { hdr_beg(Host) -i web. video. }"

Ce qui donne au final l'option suivante :

redirect scheme https unless { hdr_beg(Host) -i web. video. }

** Par contre l’association doit être crée pour que ça fonctionne.

Donc nous devons créer une "association" entre le frontend "http" et le backend "web" comme ceci (idem pour video)

bmdUNBv.png

--------------------------------------------------

Première ACL

(Cette acl fonctionne avec la version 1.5-dev21-11)

cette acl permet de créer une authentification sur un backend comme le .htaccess d'Apache (merci à MEAT)

1) Dans le fichier template de haproxy (/usr/local/haproxy/var/haproxy.cfg.tpl)

Ajoutez à la fin :

userlist my_users
        user utilisateur insecure-password motdepasse
 

Remplacez "utilisateur" et "motdepasse" par votre login et votre mot de passe. Vous pouvez ajouter autant de ligne "user" que nécessaire

2) Dans l'interface Haproxy, ajouté dans les options du Backend qui doit avoir ce mode de connexion (exemple gateone) cette acl :

nom : gateone
Serveurs: gateone localhost:8271 check ssl
Option: acl auth_access http_auth(my_users), http-request auth realm Authentification if !auth_access

!! Par contre si l'on veux utiliser cette ACL pour toutes les connexions HTTPS, ajouter cette option dans le Frontend HTTPS comme ceci :

Nom : https
Binds : :5443 ssl crt /usr/local/haproxy/var/crt/default.pem
Backend par défaut : web
Options : option http-server-close,option forwardfor,acl auth_access http_auth(my_users),http-request auth realm Authentification if !auth_access,rspirep ^Location: http://(.*)$    Location: https://1

Bien sur cliquer sur écrire la configuration !!

--------------------------------------------------

je posterais le resultat de mes test sur les ACLs

j'espere que ce poste servira.

Via

PS : Mise a jour pour les connexions aux application DS

Modifié par via78
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
  • Réponses 65
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Meilleurs contributeurs dans ce sujet

Images postées

bonjour

Bonjour,

voilà quelque chose de claire.

Si tu as l'information pour rediriger vers au pc, par exemple pour une prise en main à distance, ça m'interesse.

pour l'instant haproxy est configuré en mode http, donc je ne pense pas que ce soit possible en l'état.

il existe le mode TCP mais je ne sais pas si ca peux cohabiter.

même si je comprends pas tout c'est un super tuto bravo et vivement la suite

dis moi ce que tu ne comprend pas, ca me permetera d'étoffer le tuto

Via

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Suite à un plantage de Haproxy sur mon 214Play, il m'est impossible de le reinstaller, il ne semble plus en ligne. Quelqu'un aurait il le spk ?

PS : super tuto, même si j'avais fini ma configuration avant de le découvrir :)

salut,

je ne pense pas que ce soit le lieu pour ta question mais plus ici => http://www.nas-forum.com/forum/forum/210-paquets-fournis-par-synocommunitycom/

merci pour le PS

Via

Lien vers le commentaire
Partager sur d’autres sites

Je reviens par ici car je bloque sur une toute petite chose,

j'accède a mon NAS via Haproxy :

nomdedomaine.fr/audio (redirigé vers https) : OK

nomdedomaine.fr/file (redirigé vers https) : OK

nomdedomaine.fr/dsm (redirigé vers https) : OK

nomdedomaine.fr/photo (redirigé vers https) : OK

je me suis inspiré de ce fil :

le seul truc qui coince c'est pour videostation car si j'utilise le même méthode, videostation se retrouve en Https et il ne fonctionne plus (acces ok mais pas les videos)

je sèche sur le frontend en http (redirect scheme https unless...) unless quoi :)

je ne sais pas comment lui dire que si je rentre mon adresse mondomaine.fr/video il ne me renvoie pas vers le https

j'ai testé ta méthode qui fonctionne parfaitement (video.mondomaine.fr) mais je voudrais pouvoir y acceder comme ça. Si tu as une idée, par avance merci

Lien vers le commentaire
Partager sur d’autres sites

salut,

je n'ai pas tester ça mais je combinerais

redirect scheme https unless { use_backend video }

ou

redirect scheme https unless { path_beg /video }

tu es déjà dans les ACL, et je ne suis pas un expert dans le domaine.

je Rassemble ce que j'ai trouvé et que je pense avoir compris.

donc si ce que je te donne fonctionne, fais moi un retour que je complète ce tuto

** par contre, test complétement ton accès photo : "nomdedomaine.fr/photo (redirigé vers https) : OK " jusque là d'accord et maintenant clic sur blog !! Et que ce passe t il ??

Via

Lien vers le commentaire
Partager sur d’autres sites

Effectivement pour photostation si j'active le blog j'ai un message d'erreur (pas trop grave, car je ne m'en sers pas),

j'avais deja essayé 'redirect scheme https unless { path_beg /video }' mais apparement la redirection fonctionne bien.

Je me suis rendu compte que le comportement n'est pas le même si je suis sous Firefox ou chrome, sous Firefox il faut que j'ouvre le port 9007 sur le routeur sinon j'accède a vidéostation, mais pas possible de lire une vidéo, sous chrome j'ai un écran blanc...).

Si je suis connecté sur chrome en dsm, j'ai un message d'erreur si j'ouvre un autre onglet pour vidéostation, il faut que je ferme la session dsm pour avoir l'invite d'authentification vidéostation, je ne sais pas s’il y a moyen de forcer la fermeture de session quelque part ?

je continue mes (modestes) recherches.

merci pour ton aide.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Super tuto !

Par contre, je rencontre un problème de connexion avec l'application DS File sur mon Iphone.

Pourtant les autres applications fonctionnent correctement et sont paramétrées de la même manière.

Mes paramètre de connexion sur mon Iphone :

dsfile.mondomaine.fr:443

je coche https

Mon frontend :

- Nom : http

- Binds : 5080

- Backend par défaut : web

- Options : option http-server-close,option forwardfor

- Nom : https

- Binds : 5443 ssl crt /usr/local/haproxy/var/crt/default.pem

- Backend par défaut : web

- Options : option http-server-close,option forwardfor,rspirep ^Location: http://(.*)$ Location: https://1

Mon backend :

- nom : dsfile

- serveurs : dsfile localhost:5005 check

Mon association :

- frontend : https

- backend : dsfile

- condition: if { hdr_beg(Host) -i dsfile. }

Mon pare-feu :

Port 5005 autorisé

Savez-vous où la connexion bloque svp?

Merci

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

avant de regarder haproxy, la connexion au dsfile en wifi local (avec l'adresse IP du nas, en http avec un bon login et un bon mot de passe)fonctionne ???

si oui, que rentre tu pour te connecter a ton dsfile?

heu as tu fais "écrire la configuration" ? sinon, ca n'est pas pris en compte

Via

Modifié par via78
Lien vers le commentaire
Partager sur d’autres sites

J'ai un peu avancé sur ma config, je suis passé en redirection https même sur videostation (c'était ça mon problème d'authentification), j'arrive à lire quasiment toutes mes videos depuis la mise a jour du plugin VLC depuis un navigateur. (sauf safari car je suis sous mac)

http://nightlies.videolan.org/build/macosx-intel/VLC-webplugin-20140331-1131.dmg

J'ai refermé mon port video 9007 sur mon routeur et seulement laissé le 80,443 et le wake on lan.

j'accede a mon NAS sur l'ipad Air grace a quickconnect (videostation, filestation...) et c'est le plus simple je pense et j'avoue que ça marche bien.

par contre j'ai encore un petit pb,

j'heberge un serveur cops et myreadings mais il faut que j'insiste lourdement pour que le site s'affiche (cache effacé) et je ne sais pas pourquoi ? Une idée peut etre ?

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

en l'uccurrence, le port 5005 ouvert ne sert à rien, c'est l'intéret de haproxy. Il fait de la redirection vers un autre port!

le port 5005 doit etre ouvert sur le firewall du nas pas du routeur !

J'ai un peu avancé sur ma config, je suis passé en redirection https même sur videostation (c'était ça mon problème d'authentification), j'arrive à lire quasiment toutes mes videos depuis la mise a jour du plugin VLC depuis un navigateur. (sauf safari car je suis sous mac)

http://nightlies.videolan.org/build/macosx-intel/VLC-webplugin-20140331-1131.dmg

J'ai refermé mon port video 9007 sur mon routeur et seulement laissé le 80,443 et le wake on lan.

j'accede a mon NAS sur l'ipad Air grace a quickconnect (videostation, filestation...) et c'est le plus simple je pense et j'avoue que ça marche bien.

par contre j'ai encore un petit pb,

j'heberge un serveur cops et myreadings mais il faut que j'insiste lourdement pour que le site s'affiche (cache effacé) et je ne sais pas pourquoi ? Une idée peut etre ?

heu, là je ne peux pas t'aider, je ne joue pas avec ces applications alors pose ta question sur le fofo http://www.nas-forum.com/forum/forum/210-paquets-fournis-par-synocommunitycom/

Via

Modifié par via78
Lien vers le commentaire
Partager sur d’autres sites

heu, là je ne peux pas t'aider, je ne joue pas avec ces applications alors pose ta question sur le fofo http://www.nas-forum.com/forum/forum/210-paquets-fournis-par-synocommunitycom/

Via

Je pose la question ici car je pense que le problème vient de ma configuration haproxy. Je ne t'embeterai plus, merci quand même.

Lien vers le commentaire
Partager sur d’autres sites

tu ne me dérange pas, je ne prétend pas être un expert sur le sujet. ce tuto est surtout un retour d'expérience et est la pour aider a l'utiliser et pour avoir une prise en main du produit plus rapidement.

par contre, tous retour de votre par peux l'enrichir.

ce package est issu SynoCommunity.com donc tu auras plus d'utilisateurs de haproxy qui pourront te répondre sur les problèmes avec tes serveurs que je ne connais pas et que je n'ai pas d'installer sur mon nas.

Donc oui ca peux venir de ta conf haproxy mais je ne peux pas t'aider.

Via

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

bonjour,

pour faire de l'http : oui

exemple : redirigere la page de conf de ca box

maintenant le package fournie est configuré en mode HTTP, mais on peux le conf en mode TCP !! attention !! c'est en ligne de commande et non en interface graphique dans ce cas.

je n'ai pas tester ce mode et je ne sais pas si les deux modes peuvent etre utilisé en meme temps.

via

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
  • 3 semaines après...

J'ai un petit problème d'installation du paquet haproxy_x86_1.5 pour mon NAS DS1513+ en DSM 5.0-4482

J'ai installé le paquet Pyhton 2.7.6-3 mais quand j'effectue une installation manuelle de haproxy, j'ai le message que je dois installer un python > 2.7.3-3 ce qui est déjà fait (avec reboot du syno.)

Donc, je ne peux installé le paquet haproxy.. Un conseil pour lever ce problème ..?

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.