Docker配置IPv6
发表于|更新于
|字数总计:449|阅读时长:2分钟|阅读量:
现在有些时候会用到IPv6
,我在成都的一台NAT机的IPv4
在出国时会遇到问题,但是使用IPv6
发现就没这个问题。同时我发邮件让Racknerd给我开通IPv6
,RN很豪爽地直接给我/64
子网,真的太爽了。
Docker启动IPv6支持
编辑 /etc/docker/daemon.json
docker守护进程配置文件。
1 2 3 4
| { "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" }
|
替换 fixed-cidr-v6
字段为VPS所拥有的IPv6子网。
可以通过 ip a
命令获取:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| root@lite:~ 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff altname enp0s18 altname ens18 inet 172.16.1.32/24 brd 172.16.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::200:1ff:febe:2acf/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff altname enp0s19 altname ens19 inet6 240e:974:xxxx:xxxx::5064:2a/118 scope global valid_lft forever preferred_lft forever inet6 fe80::200:1ff:fed0:3b1b/64 scope link valid_lft forever preferred_lft forever
|
这里 eth1
的 inet6 240e:974:xxxx:xxxx::5064:2a/118 scope global
就是公网IPv6。给了 /118
子网但是也够了,总共 $2^{128 - 118} = 2^{10} = 1024$ 个地址。
配置完成 /etc/docker/daemon.json
后运行:
1
| sudo systemctl restart docker
|
可以这样给容器分配v6地址:
1
| docker run -d --name my_container --network bridge --ipv6 "240e:974:xxx:xxx::5064:2b" my_image
|
确保分配的地址唯一且不与主机地址重复。
防火墙也需要通过IPv6地址的连接。
如果是OpenResty
或Nginx
,记得加 listen [::]:80;