การร้องขอ curl ไปยัง IPv6 localhost ติดขัด


9

คอนเทนเนอร์นักเทียบท่าของฉันจะเปิดเผยอินเตอร์เฟส HTTP บนพอร์ต 8500 ซึ่งถูกแมปกับโฮสต์พอร์ต 8500 ซึ่งไม่ได้เปิดใช้งาน IPv6 ยังคงหมายความว่าฉันควรจะสามารถเข้าถึงได้ที่ localhost: 8500 เป็นที่ต้องการ IPv6 ดังนั้นฉันเลยจบด้วยการร้องขอ [:: 1]: 8500 อันนี้ติดมันไม่เคยกลับมา

ทำซ้ำสิ่งนี้ด้วย curl คำสั่งนี้ค้าง:

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

ตัวเลือก --verbose ของ curl ไม่แสดงอะไรเลย --ascii-trace ในเวลาเดียวกันการร้องขอไปยัง localhost ของ IPv4 สำเร็จ:

curl http://127.0.0.1:8500

ให้ HTML ที่คาดหวังกับฉัน ถ้าฉันใช้เซิร์ฟเวอร์ IPv4 HTTP บนลูปแบ็คให้ใช้

python -m SimpleHTTPServer 4001

แล้วฉันจะได้รับ HTML จำนวนมากสำหรับ localhost ของ IPv4

curl http://127.1:4001

และความล้มเหลวในการเชื่อมต่อที่เหมาะสมสำหรับ IPv6:

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

สิ่งที่ควรทราบ: นักเทียบท่า 1.7.1 IPv6 ไม่ได้เปิดใช้งานสำหรับคอนเทนเนอร์ดังนั้นจึงไม่มีกฎ IPv6 iptable (ip6tables -v -L ไม่ได้ให้อะไรเลย)

คำถามของฉันคือ: ทำไมคำขอค้างและทำอะไร


1
คุณช่วยเอาท์พุทของ "netstat -6 -an" ให้เราดูได้ไหม?
Rui F Ribeiro

ใช่นักเทียบท่ากำลังฟังพอร์ตดังกล่าว: tcp6 0 0 :::8500 :::* LISTEN 1648/docker น่าสนใจ ทำไม? และทำไมมันปิดกั้น?
mknecht

ฟังและไม่ได้กำหนดค่าหรือปิดการใช้งาน IPv6 ใน sysctl ฉันเดา nginx, apache, lighthttp คุณจะต่อท้ายเว็บเซิร์ฟเวอร์ที่เป็นปัญหาในการโพสต์ได้ไหม?
Rui F Ribeiro

ภายในคอนเทนเนอร์ Consul ซึ่งเป็นที่เก็บคีย์ - ค่าสำหรับการกำหนดค่ากำลังรับฟัง แต่ฉันไม่คิดว่ามันเกี่ยวข้อง: คอนเทนเนอร์ยังไม่ได้เปิดใช้งาน IPv6 คำขอนั้นไม่ควรไปถึงกงสุล ฉันไม่เห็นด้วยว่ามันจะติดอยู่ที่ใด บนโฮสต์ให้/proc/sys/net/ipv6/conf/all/disable_ipv6ผลลัพธ์เป็น 0 ดังนั้นควรเปิดใช้งาน IPv6
mknecht

2
นั่นไม่ได้หมายความว่ามาก คุณสามารถปิดการใช้งาน IPv6 ได้แม้ใน sysctl และในเมล็ดที่ใหม่กว่าตราบใดที่โปรแกรมเชื่อมต่อกับซ็อกเก็ต IPv6 คำขอนั้นจะได้รับการเคารพ ความเจ็บปวดในตูดคุณต้องผ่านแต่ละดีมอนที่รองรับ IPv6 และปิดการใช้งานการกำหนดค่า IPv6
Rui F Ribeiro

คำตอบ:


0

เปิดใช้งาน ipv6 และการส่งต่อ 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

1
เห็นได้ชัดว่า OP ไม่ได้พยายามทำให้บางอย่างทำงานได้ คำถามจริงคือ "ทำไมคำขอไม่สามารถแก้ไขได้และทำสิ่งใด" คำตอบของคุณมีคำอธิบายสำหรับสิ่งนั้นหรือไม่? ถ้าเป็นเช่นนั้นคุณช่วยอธิบายได้อย่างไร?
ซาน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.