Tidak ada konektivitas IPv6 dari wadah buruh pelabuhan

11

Saya mengalami masalah serius mengaktifkan IPv6 di buruh pelabuhan.

Lingkungan Hidup

  • Tuan rumah menjalankan Debian Jessie.
  • Ini adalah Server virtual (KVM).
  • eth0 memiliki alamat yang dikonfigurasi secara statis seperti w: x: y: z :: 1 dalam jaringan seperti w: xy: z :: / 64, yang ditugaskan untuk saya oleh perusahaan hosting saya.
  • Tuan rumah saya mampu menggunakan IPv6 tanpa masalah: Ping bekerja dengan dunia luar, sebuah situs web yang berjalan pada sebuah wadah (Port 80 terikat dengan host: 80) dapat diakses melalui ipv6.

Masalah

Namun saya tidak bisa mengakses dunia luar dari dalam wadah! Jembatan docker0 saya TIDAK memiliki alamat IPv6 setelah memulai kembali docker dengan parameter di bawah ini. Tidak ada rute dan tidak ada gateway juga (tidak masuk akal tanpa alamat ipv6).

Pengaturan Docker Saya: Docker dimulai dengan parameter ini di DOCKER_OPTS

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

Beberapa parameter konfigurasi host ipv6:

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

inilah Salah satu jaringan yang saya buat sendiri:

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": {}
    }
]

Berikut beberapa informasi dari dalam wadah, yang disebutkan di atas:

Alamat

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

Rute

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

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

Apa yang saya lewatkan?

kecepatanette
sumber

Jawaban:

5

Jadi setelah menunggu dua minggu untuk jawaban dan meneliti beberapa jam lagi setelah membuka hadiah saya menemukan solusinya.

  1. Siapkan jaringan berkemampuan IPv6 baru dan tetapkan subnet yang tersedia untuk saya (a / 80 dari saya / 64)

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

    Sekarang mulai wadah dan hubungkan ke jaringan baru. Cari tahu alamat IP-nya. Katakanlah itu w: x: y: z: aaaa :: 5 dalam contoh ini.

  2. Aktifkan proxy_ndp

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

    Anda juga dapat mengkonfigurasi pengaturan ini melalui /etc/sysctl.conf, untuk membuatnya persisten.

  3. Tambahkan proxy untuk menjadikan host saya (IPv6 aktif) untuk menanggapi pesan Neighbor Sollicitation dari router saya (seperti: "hei, siapa yang hosting w: x: y: z: aaaa :: 5?") Dengan pesan Neighbor Ads ("yang akan jadilah aku! ").

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

    ndppd dapat membantu Anda mengiklankan host mana pun di jaringan Anda secara otomatis.

Bam, itu dia.

kecepatanette
sumber
Anda dapat menginstal ndppddaemon untuk mengotomatisasi ini.
Michael Hampton
1
@MichaelHampton: Itulah yang saya sarankan.
lajuette