J'essaie de configurer HAProxy pour qu'il soit utilisé à la fois pour le trafic HTTPS et les connexions OpenVPN via le port 443. La configuration est simple (domaine de premier niveau remplacé par example.com
pour des raisons d'anonymat) :
frontend www_ssl
mode tcp
bind *:443
acl host_vpn hdr(host) -i vpn.example.com
use_backend vpn_backend if host_vpn
default_backend nginx_pool_ssl
backend nginx_pool_ssl
balance first
mode tcp
server web1 192.168.1.2:443 send-proxy check
server web2 192.168.1.3:443 send-proxy check
backend vpn_backend
mode tcp
server vpn1 192.168.1.4:443
Lors de l'établissement d'une connexion OpenVPN, il échoue avec le message suivant :
WARNING : Bad encapsulated packet length from peer (18516), which must be > 0 and <= 1547 -- please ensure that --tun-mtu or --link-mtu is equal on both peers -- this condition could also indicate a possible active attack on the TCP link -- [Attempting restart...]
Ce qui se passe, c'est qu'au lieu de rediriger le trafic vers 192.168.1.4, HAProxy va vers 192.168.1.2 qui tente de le traiter comme une requête HTTPS. Il en va de même lorsque j'ouvre vpn.example.com
dans le navigateur : Je n'obtiens que le site web desservi par 192.168.1.2.
Si je remplace la configuration ci-dessus par celle-ci :
frontend www_ssl
mode tcp
bind *:443
default_backend host_vpn
backend vpn_backend
mode tcp
server vpn1 192.168.1.4:443
la connexion OpenVPN est établie correctement et le navigateur ne peut rien afficher, ce qui signifie que le problème vient de la configuration de HAProxy.
Que se passe-t-il ici ? Y a-t-il une erreur dans la configuration d'origine ?