permintaan curl ke localhost IPv6 macet

9

Container buruh pelabuhan milik saya memperlihatkan antarmuka HTTP pada port 8500, yang dipetakan ke host port 8500. Itu tidak diaktifkan IPv6. Ini masih berarti, saya harus dapat mengaksesnya di localhost: 8500. IPv6 lebih disukai, jadi saya berakhir dengan permintaan ke [:: 1]: 8500. Yang ini macet, tidak pernah kembali.

Memproduksi ini dengan ikal, perintah ini macet:

curl -g -6 "http://[::1]:8500"

Opsi --verbose curl tidak mengungkapkan apa pun, begitu pula --ascii-trace. Pada saat yang sama, permintaan ke localhost IPv4 berhasil:

curl http://127.0.0.1:8500

memberi saya HTML yang diharapkan. Jika saya menjalankan server HTTP IPv4 pada loopback, gunakan

python -m SimpleHTTPServer 4001

maka saya mendapatkan banyak HTML untuk localhost IPv4

curl http://127.1:4001

dan kegagalan koneksi yang tepat untuk IPv6:

curl -g -6 "http://[::1]:4001"
curl: (7) Failed to connect to ::1 port 4001: Connection refused

Hal yang perlu diperhatikan: Docker 1.7.1. IPv6 tidak diaktifkan untuk wadah, karenanya tidak ada aturan IPv6 iptable. (ip6tables -v -L tidak memberikan apa-apa)

Pertanyaan saya adalah: Mengapa permintaan macet, dan melakukan apa?

mknecht
sumber
1
Apakah Anda menunjukkan kepada kami output dari "netstat -6 -an"?
Rui F Ribeiro
Yap, buruh pelabuhan mendengarkan pada port itu: tcp6 0 0 :::8500 :::* LISTEN 1648/docker Menarik. Mengapa? Dan mengapa itu menghalangi?
mknecht
Mendengarkan dan tidak dikonfigurasi, atau IPv6 dinonaktifkan di sysctl, saya kira. nginx, apache, lighthttp, tolong tambahkan server web yang dimaksud ke posting?
Rui F Ribeiro
Di dalam wadah, Konsul, toko nilai kunci untuk konfigurasi, sedang mendengarkan. Tapi saya pikir itu tidak relevan: wadah belum diaktifkan IPv6. Permintaan itu tidak boleh sampai ke Konsul. Saya tidak mendapatkan lapisan mana yang macet. Di host, /proc/sys/net/ipv6/conf/all/disable_ipv6hasilkan 0, jadi IPv6 harus diaktifkan.
mknecht
2
Itu tidak berarti banyak. Anda dapat menonaktifkan IPv6 bahkan di sysctl, dan di kernel yang lebih baru, selama program mengikat ke soket IPv6, permintaan tersebut dihormati. Rasa sakit di pantat, karena Anda harus melalui setiap daemon yang mendukung IPv6 dan menonaktifkan konfigurasi IPv6.
Rui F Ribeiro

Jawaban:

0

Aktifkan ipv6 dan penerusan ebable.

# cat /etc/sysctl.conf | grep ipv6
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
Qteb
sumber
1
Tampaknya, OP tidak berusaha membuat sesuatu bekerja; pertanyaan sebenarnya adalah "Mengapa permintaan macet, dan melakukan apa?". Apakah jawaban Anda memberikan penjelasan untuk itu? Jika demikian, dapatkah Anda menjelaskan caranya?
fra-san