Para escutar na mesma porta IPv6 e IPv4, use este:
bind :::80 v4v6
É 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.
a palavra-chave v4v6 torna o haproxy vinculado apenas a um soquete v4.
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
:
address
é opcional e pode ser um nome de host, um endereço IPv4, um endereço IPv6 ou '*'
. Designa o endereço no qual o front-end escutará. Se desativado, todos os endereços IPv4 do sistema serão ouvidos. O mesmo se aplica '*'
ao endereço especial do sistema ou " 0.0.0.0
". O equivalente ao IPv6 é '::'.
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#4.2-bind (ênfase adicionada)
Portanto, as três formas a seguir são todas equivalentes e são interpretadas como IPv4 pelo HAProxy:
bind :80
bind *:80
bind 0.0.0.0:80
Em seguida, há uma frase nos documentos para que v4v6
poderia ser lida isoladamente para indicar que v4v6
pode ser útil estender uma das instruções de ligação acima para escutar no IPv6 ...
v4v6
É usado para ligar um soquete ao IPv4 e IPv6 quando ele usa o endereço padrão.
... hmmm, mas suspeito que isso realmente significa "o endereço padrão da v6" ( ::
) ...
Às vezes, é necessário fazer isso em sistemas que se ligam ao IPv6 apenas por padrão.
... e agora, eu suspeito ainda mais ...
Não tem efeito em soquetes não IPv6 e é substituído pela v6only
opção.
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#5.1
Portanto, parece que v4v6
apenas modifica bind
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.
bind :::80 v4v6
?