Quero configurar haproxy para vincular a um tcp
, bem como tcp6
tomada em todas as interfaces (isto é, 0.0.0.0:80
e :::80
).
Consegui atingir esse objetivo com as seguintes configurações:
listen web
bind :80 v4v6
bind :::80 v6only
Existe alguma maneira mais curta do que isso?
Embora eu espere que ele se comporte de maneira diferente, a v4v6
palavra - chave faz com que o haproxy se ligue apenas a um soquete v4.
bind :::80 v4v6
?Respostas:
Para escutar na mesma porta IPv6 e IPv4, use este:
É certo que esse foi um palpite intuitivo que parece estar correto ... mas, em vez de apenas postar um palpite "sortudo" como resposta, mesmo que funcione, parece que eu deveria justificá-lo.
Minha primeira intuição foi que não é
v4v6
apenas o uso:80
(ou, mais precisamente, o uso de nenhum endereço IP, apenas um número de porta) que faz com que esse soquete escute apenas no IPv4.Isso parece confirmado nos documentos para
bind
:Portanto, as três formas a seguir são todas equivalentes e são interpretadas como IPv4 pelo HAProxy:
Em seguida, há uma frase nos documentos para que
v4v6
poderia ser lida isoladamente para indicar quev4v6
pode ser útil estender uma das instruções de ligação acima para escutar no IPv6 ...... hmmm, mas suspeito que isso realmente significa "o endereço padrão da v6" (
::
) ...... e agora, eu suspeito ainda mais ...
Portanto, parece que
v4v6
apenas modificabind
diretivas que especificam o endereço de escuta padrão do IPv6, que é::
(o terceiro:
é o separador entre o endereço e a porta) e é ignorado por outras pessoas.fonte
A resposta aceita não funciona para mim, pelo menos com o haproxy-1.6.11p0 no OpenBSD. Além disso, TL; DR. Apenas faça:
e vai funcionar:
fonte