Docker配置IPv6
发表于|更新于
|字数总计:449|阅读时长:2分钟|阅读量:
现在有些时候会用到IPv6,我在成都的一台NAT机的IPv4在出国时会遇到问题,但是使用IPv6发现就没这个问题。同时我发邮件让Racknerd给我开通IPv6,RN很豪爽地直接给我/64子网,真的太爽了。
Docker启动IPv6支持
编辑 /etc/docker/daemon.json docker守护进程配置文件。
| 12
 3
 4
 
 | {"ipv6": true,
 "fixed-cidr-v6": "2001:db8:1::/64"
 }
 
 | 
替换 fixed-cidr-v6 字段为VPS所拥有的IPv6子网。
可以通过 ip a 命令获取:
| 12
 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;