Bonjour à tous
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
Voici la conf:
haproxy.cfgglobal
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
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)