Mengaktifkan ipv6 Di DockerSaya mempunyai sebuah ipv6-only VPS. Untuk mengakses internet (keluar VPS) yang mayoritas masih ipv4, saya menggunakan layanan NAT64 (https://nat64.xyz/). Yaitu sebuah DNS resolver seperti 1.1.1.1 atau 8.8.8.8 tetapi sekaligus berfungsi sebagai gateway ipv4. Setup NAT64 sama seperti DNS64 atau resolver biasa. Cukup taruh alamat IP DNS server di /etc/resolv.conf Semua berjalan asyik walau dengan ipv6, tetapi masalah terjadi ketika saya mencoba Docker di environment ipv6 ini. Container yang dibuat tidak bisa akses internet. Cek ping google.com pun hasilnya:
Lalu saya mencoba pentunjuk dokumentasi Docker untuk mengaktifkan ipv6 di https://docs.docker.com/config/daemon/ipv6/ Intinya Docker daemon (dockerd) harus di restart dengan opsi --ipv6 dan --fixed-cidr-v6 "2001:db8:1::/64". Atau edit /etc/docker/daemon.json
Lalu restart service docker. "systemctl restart docker". Tapi saya menggunakan Alpine Linux (openrc), jadi:
Kemudian saya coba lagi ping dari dalam container dan problem masih sama. ping: bad address 'google.com' Saya coba cek rule nat utk ipv6 dengan:
Hasilnya masih polosan, tidak ada rule apapun yang dibuat oleh Docker. Hmm...
Setelah googling nemu clue dari forum https://forums.docker.com/t/docker-user-chain-for-ip6tables/133961/7 Yang ternyata perlu menambahkan lagi opsi --experimental dan --ip6tables. Dan ini tidak/belum disebutkan di dokumentasi. Jadi /etc/docker/daemon.json harusnya:
Setelah mengubah konfig tersebut dan kembali melakukan restart service docker. Masalah internet di dalam docker container teratasi. Ini juga ditandai dengan munculnya "MASQUERADE" di chain POSTROUTING jika dilakukan ip6tables -t nat -L hasilnya:
Semoga bermanfaat! |