Docker कंटेनर से कोई IPv6 कनेक्टिविटी नहीं है


11

मुझे गंभीर समस्याएँ आईवी 6 में सक्षम कर रही हैं।

वातावरण

  • मेजबान डेबियन जेसी चल रहा है।
  • यह एक वर्चुअल सर्वर (KVM) है।
  • eth0 में w: x: y: z :: 1 जैसे w: xy: z :: / 64 जैसे संजाल रूप से कॉन्फ़िगर किया गया पता है, जो मेरी होस्टिंग कंपनी द्वारा मुझे सौंपा गया है।
  • मेरी होस्ट बिना किसी समस्या के IPv6 का उपयोग करने में सक्षम है: बाहरी दुनिया के कामों को पिंग करना, एक कंटेनर पर चलने वाली वेबसाइट (पोर्ट 80 होस्ट करने के लिए बाध्य है: 80) आईपीवी 6 के माध्यम से सुलभ है।

मुसीबत

लेकिन मैं कंटेनर के भीतर से बाहर की दुनिया तक नहीं पहुँच सकता! नीचे दिए गए मापदंडों के साथ docker को पुनरारंभ करने के बाद मेरे docker0 ब्रिज में IPv6 का पता नहीं है। कोई रास्ता नहीं है और कोई प्रवेश द्वार भी नहीं है (आईपीवी 6 पते के बिना कोई मतलब नहीं है)।

मेरा डॉकर सेटअप: डॉकर DOCKER_OPTS में इन मापदंडों के साथ शुरू किया गया है

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ipv6 --fixed-cidr-v6=w:x:y:z:a::/80"

कुछ ipv6 होस्ट कॉन्फ़िगरेशन पैरामीटर:

net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1

यहाँ एक नेटवर्क मैंने खुद बनाया है:

root@wopr:~# docker network inspect wopr6
[
    {
        "Name": "wopr6",
        "Id": "ddc192d4af2a8edc809975e84cf3e4cb82c24d4cfe970dd8e3fc7d6ff31e20ee",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.23.0.0/16",
                    "Gateway": "172.23.0.1/16"
                },
                {
                    "Subnet": "w:x:y:z:a:0:0:0/80",
                    "Gateway": "w:x:y:z:a::1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "dff30ab1496a4c3689ad6da0837fdb6cf7ea1a5b32312116214313b5b14ed07e": {
                "Name": "happy_varahamihira",
                "EndpointID": "8cd4ed4b91d8421171ec8cc771bbe7b7d81f05dc9f4679f20c642c2e828ec475",
                "MacAddress": "02:42:ac:17:00:02",
                "IPv4Address": "172.23.0.2/16",
                "IPv6Address": "w:x:y:z:a::2/80"
            }
        },
        "Options": {},
        "Labels": {}
    }
]

यहाँ कंटेनर के अंदर से कुछ जानकारी दी गई है, जो ऊपर उल्लिखित है:

पतों

root@dff30ab1496a:/# ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
332: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet6 2a03:4000:6:2158:a::2/80 scope global nodad
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe17:2/64 scope link
       valid_lft forever preferred_lft forever

मार्गों

root@dff30ab1496a:/# ip -6 r
2a03:4000:6:2158:a::/80 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
default via 2a03:4000:6:2158:a::1 dev eth0  metric 1024

पिंग

PING ipv6.l.google.com (2a00:1450:4001:811::200e): 56 data bytes, id 0x0011 = 17
--- ipv6.l.google.com ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss

मैं क्या खो रहा हूँ?

जवाबों:


5

तो जवाब के लिए दो हफ्ते इंतजार करने और एक बाउंटी खोलने के कुछ घंटों बाद शोध करने के बाद मुझे इसका समाधान मिला।

  1. एक नया IPv6 सक्षम नेटवर्क सेट करें और मुझे उपलब्ध एक सबनेट (मेरे / 64 के 80) ​​पर असाइन करें

    docker network create --ipv6 --subnet=w:x:y:z:aaaa::/80 myfancynetwork
    

    अब एक कंटेनर शुरू करें और इसे नए नेटवर्क से कनेक्ट करें। पता करें कि यह आईपी एड्रेस है। मान लीजिए कि यह इस उदाहरण में w: x: y: z: aaaa :: 5 है।

  2. प्रॉक्सी_एनडीपी सक्षम करें

    sysctl net.ipv6.conf.eth0.proxy_ndp=1
    

    आप इसे स्थायी बनाने के लिए /etc/sysctl.conf के माध्यम से भी इस सेटिंग को कॉन्फ़िगर कर सकते हैं।

  3. अपने राउटर से नेबर सॉलिसिटेशन संदेशों का जवाब देने के लिए मेरे होस्ट (IPv6 सक्षम) बनाने के लिए प्रॉक्सी जोड़ें (जैसे: "हे, कौन है जो w: x: y: z: aaaa :: 5?") पड़ोसी विज्ञापन संदेश (") के साथ? मेरे जैसे बनो!")।

    ip -6 neigh add proxy w:x:y:z:aaaa::5 dev eth0
    

    ndppd आपको अपने नेटवर्क पर किसी भी होस्ट को स्वचालित रूप से विज्ञापित करने में मदद कर सकता है।

बाम, यह बात है।


आप इसे ndppdस्वचालित करने के लिए डेमॉन स्थापित कर सकते हैं ।
माइकल हैम्पटन

1
@ मिचेल हैम्पटन: यह वही है जो मैंने सुझाया था।
लजुएट जूथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.