logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 17-08-2017 15:37:43

moi4567
Membre
Distrib. : Jessie
Noyau : Linux 3.16.0-4-amd64
(G)UI : Gnome 3
Inscription : 22-06-2015

[Résolu] HAProxy utilise uniquement le backend default

Bonjour à tous smile

J'ai un serveur dédié chez un hébergeur et je me suis montés divers services comme par exemple un teampass, serveur mail, ect. J'ai également un nom de domaine et l'idée est d'affecter un nom de sous domaine pour chaque service. Par exemple teampass.mondomaine.com. N'ayant qu'une seule IP publique j'ai décidé d'utilisé HAProxy comme reverse proxy avec de rediriger les requêtes vers le bon service. HAProxy définie pour qui est la requête en fonction du nom de domaine utilisé (teampass.mondomaine.com ==> serveur teampass par exemple).

Seulement voilà, toutes les requêtes sont redirigé vers le backend par défaut et je ne comprend pas très bien pourquoi scratchhead.gif

Voici la conf:

haproxy.cfg

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        #ca-base /etc/ssl/certs
        #crt-base /etc/ssl/private

        #ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        #ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http
frontend WAN
        mode tcp
        option tcplog
        bind *:80
        bind *:443
        acl url_teampass req_ssl_sni teampass.mondomaine.net
        acl url_proxmox req_ssl_sni proxmox.onl1.mondomaine.net
        use_backend teampass-backend if url_teampass
        use_backend proxmox-backend if url_proxmox
        default_backend default-backend

backend teampass-backend
        mode tcp
        server teampass 10.101.99.4:443

backend proxmox-backend
        mode tcp
        server proxmox IP_PROXMOX:8006

backend default-backend
        mode tcp
        server default google.com
 



Infos supplémentaires:
- Mon serveur TeamPass (entre autre) utilise le port 443 avec un certificat auto signé. Quand je suis en VPN sur le même réseau le service est accessible sans soucis (une fois le certificat accepté).
- Les logs haproxy sont cleans, je n'obtiens aucune erreur.

J'avais déjà mis en place un HAProxy ayant le même objectif mais il n'y avait pas la contrainte du SSL.

Merci d'avance smile

Solution: letsencrypt.org

Pour que le TLS passthrough fonctionne correctement il faut:
- Séparer en deux sections distincts le port 80 et 443
- Vérifier et n'accepter que les paquets en TLS passant par le port 443

haproxy.cfg


global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        #ca-base /etc/ssl/certs
        #crt-base /etc/ssl/private

        #ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        #ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    http
        option  httplog
        #option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http


frontend WAN_80
        bind *:80
        mode http
        redirect scheme https code 301 if !{ ssl_fc }

frontend WAN_443
        mode tcp
        option tcplog
        option socket-stats
        bind *:443

        acl tls req.ssl_hello_type 1
        tcp-request inspect-delay 5s
        tcp-request content accept if tls

        acl teampass req.ssl_sni -i teampass.mondomaine.net
        use_backend teampass-backend if teampass

        default_backend default-backend

backend teampass-backend
        mode tcp
        server teampass 10.101.99.4:443 check

backend proxmox-backend
        mode tcp
        server proxmox IP_PROXMOX:8006

backend default-backend
        mode tcp
        server default google.com

 

Dernière modification par moi4567 (17-08-2017 23:57:03)

Hors ligne

Pied de page des forums