IPH6 localhost'a kıvrılma isteği takılıyor


9

Docker kapım, 8500 numaralı bağlantı noktasında, 8500 ana bilgisayar bağlantı noktasına eşlenen bir HTTP arabirimi ortaya çıkarır . IPv6 etkin değildir . Bu hala, localhost: 8500'den erişebilmem gerektiği anlamına geliyor. IPv6 tercih edilir, bu yüzden [:: 1]: 8500 için bir istekte bulunuyorum. Bu takılıyor, asla geri dönmüyor.

Bunu curl ile yeniden üreten bu komut takılıyor:

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

curl's --verbose seçeneği hiçbir şey açığa çıkarmaz, ayrıca --ascii-trace. Aynı zamanda, IPv4'ün yerel ana bilgisayarına yönelik bir istek başarılı olur:

curl http://127.0.0.1:8500

bana beklenen HTML'yi veriyor. Geri döngüde bir IPv4 HTTP sunucusu çalıştırırsam,

python -m SimpleHTTPServer 4001

IPv4'ün yerel ana bilgisayarı için çok fazla HTML alıyorum

curl http://127.1:4001

ve IPv6 için uygun bir bağlantı hatası:

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

Dikkat edilmesi gerekenler: Liman işçisi 1.7.1. IPv6 kapsayıcı için etkin değil , bu nedenle IPv6 iptable kuralı yok. (ip6tables -v -L hiçbir şey vermez)

Benim sorum: İstek neden takılıyor ve ne yapıyor?


1
Bize "netstat -6 -an" çıktısını gösterir misiniz?
Rui F Ribeiro

Evet, liman işçisi o limanı dinliyor: tcp6 0 0 :::8500 :::* LISTEN 1648/docker Büyüleyici. Neden? Ve neden engelliyor?
mknecht

Dinleme ve yapılandırılmadı ya da sysctl'de IPv6 devre dışı bırakıldı sanırım. nginx, apache, lighthttp, söz konusu web sunucusunu gönderiye ekler misiniz, lütfen?
Rui F Ribeiro

Konteynerin içinde, konfigürasyon için bir anahtar / değer deposu olan Consul dinliyor. Ancak bunun önemli olduğunu düşünmüyorum: kap IPv6 özellikli değil. Bu talep asla Konsolos'a ulaşmamalıdır. Yine de hangi katmana yapıştığını anlayamıyorum. Ana bilgisayarda, /proc/sys/net/ipv6/conf/all/disable_ipv60 verir, bu nedenle IPv6 etkinleştirilmelidir.
mknecht

2
Bu pek bir şey ifade etmiyor. IPv6'yı sysctl'de ve daha yeni çekirdeklerde bile devre dışı bırakabilirsiniz, program bir IPv6 soketine bağlandığı sürece, istek onurlandırılır. IPv6'yı destekleyen her bir arka plan programından geçmeniz ve IPv6 yapılandırmasını devre dışı bırakmanız gerektiğinden, kıçtaki bir acı.
Rui F Ribeiro

Yanıtlar:


0

İpv6 ve ebable yönlendirmeyi etkinleştirin.

# 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

1
Görünüşe göre, OP bir şey işe yaramaz; asıl soru "İstek neden takılıyor ve ne yapıyor?" sorusudur. Cevabınız bunun için bir açıklama sağlıyor mu? Eğer öyleyse, nasıl olduğunu açıklar mısınız?
fra-san
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.