Untuk mendengarkan pada port yang sama untuk IPv6 dan IPv4, gunakan ini:
bind :::80 v4v6
Memang, ini adalah dugaan intuitif yang tampaknya benar ... tetapi alih-alih hanya memposting tebakan "beruntung" sebagai jawabannya, meskipun berhasil, sepertinya saya harus membenarkannya.
kata kunci v4v6 membuat haproxy mengikat hanya ke soket v4.
Intuisi pertama saya adalah bahwa ini bukan v4v6
hanya penggunaan :80
(atau, lebih tepatnya, tidak menggunakan alamat IP sama sekali, hanya nomor port) yang menyebabkan soket ini hanya mendengarkan IPv4.
Ini tampaknya dikonfirmasi dalam dokumen untuk bind
:
address
opsional dan dapat berupa nama host, alamat IPv4, alamat IPv6, atau '*'
. Ini menunjuk alamat yang akan didengar oleh frontend. Jika tidak disetel, semua alamat IPv4 sistem akan didengarkan. Hal yang sama akan berlaku untuk '*'
atau alamat khusus sistem " 0.0.0.0
". Setara IPv6 adalah '::'.
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#4.2-bind (penekanan ditambahkan)
Jadi tiga bentuk berikut semuanya setara, dan semua ditafsirkan sebagai IPv4 oleh HAProxy:
bind :80
bind *:80
bind 0.0.0.0:80
Selanjutnya, ada satu kalimat dalam dokumen untuk v4v6
dapat dibaca secara terpisah untuk menunjukkan bahwa v4v6
mungkin dapat digunakan untuk memperpanjang salah satu pernyataan ikatan di atas untuk mendengarkan pada IPv6 ...
v4v6
Ini digunakan untuk mengikat socket ke IPv4 dan IPv6 ketika menggunakan alamat default.
... hmmm, tapi saya curiga ini sebenarnya berarti "alamat default v6" ( ::
) ...
Melakukan hal itu kadang-kadang diperlukan pada sistem yang mengikat IPv6 hanya secara default.
... dan sekarang, saya curiga bahkan lebih ...
Ini tidak berpengaruh pada soket non-IPv6, dan diganti oleh v6only
opsi.
http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#5.1
Jadi, tampaknya v4v6
hanya memodifikasi bind
arahan yang menentukan alamat mendengarkan default IPv6, yaitu ::
(yang ke-3 :
adalah pemisah antara alamat dan port), dan diabaikan untuk orang lain.
bind :::80 v4v6
?