unraid系統(tǒng)下macvlan網(wǎng)絡(luò)的docker容器使用ipv6
省流版:
docker network create -d macvlan –ipv6 –subnet=192.168.0.0/24 –gateway=192.168.0.8 –subnet=fd00::/64 -o parent=eth0 test1br0
其實(shí)原理挺簡單的。。fe80容器會自己生成,ipv6的公網(wǎng)地址和網(wǎng)關(guān)可以通過slaac從路由器獲得。
但docker network創(chuàng)建macvlan又需要規(guī)劃ipv6的網(wǎng)段,否則報錯。然后就配ipv6的局域網(wǎng)網(wǎng)段,但不配置ipv6網(wǎng)關(guān)來解決問題。
背景:
給unraid下macvlan的容器啟用ipv6。
網(wǎng)上的教程基本都是給macvlan使用路由器上獲取到運(yùn)營商的ipv6公網(wǎng)網(wǎng)段。這種方法的壞處是路由器重啟后,需要重新設(shè)置macvlan的網(wǎng)段,使用起來很不方便。
本文也主要是在macvlan創(chuàng)建時選擇的ipv6網(wǎng)段上進(jìn)行修改。
思路:
首先查閱ipv6的常見地址段有
1、全球單播地址(也就是公網(wǎng)地址): 2001::/16 ,電信的是240e開頭,聯(lián)通2408開頭,移動2409開頭
2、局域網(wǎng)地址: ??fc,fd開頭 ?可路由。
3、鏈路本地地址:?fe80開頭 ??不可路由,電腦自動生成。
以上三種比較常見的類型。
首先經(jīng)過測試,macvlan下的容器可以自己生成鏈路本地地址。然后容器也可以自己獲取到路由器下發(fā)的slaac網(wǎng)段,網(wǎng)關(guān)和ipv6dns。但生成macvlan又必須指定ipv6網(wǎng)段。
所以我嘗試給macvlan分配fd00::/64的ipv6局域網(wǎng)網(wǎng)段,同時不設(shè)置ipv6網(wǎng)關(guān)。經(jīng)過測試,容器可以同時獲得局域網(wǎng)地址,鏈路本地地址以及ipv6公網(wǎng)地址。
經(jīng)過測試可以正常使用,并且不用考慮路由器的重啟問題。
步驟:
1、愛快路由器的ipv6dhcp選擇無狀態(tài)(slaac)
2、unraid的docker選項(xiàng)打開主機(jī)訪問自定義網(wǎng)絡(luò),保留用戶自定義網(wǎng)絡(luò),docker custom network type選擇macvlan。
3、進(jìn)入unraid命令行刪掉unraid自帶的br0,因?yàn)槟J(rèn)的br0是分配的公網(wǎng)地址,所以把它先干掉。
docker network ls //查看docker網(wǎng)絡(luò)
docker network rm br0 //刪掉br0
4、創(chuàng)建新的test1br0。
docker network create -d macvlan –ipv6 –subnet=內(nèi)網(wǎng)v4網(wǎng)段/24 –gateway=內(nèi)網(wǎng)v4網(wǎng)關(guān) –subnet=fd00::/64 -o parent=eth0 test1br0
這里的配置上我ipv6分配網(wǎng)段使用了fd開頭的局域網(wǎng)地址,同時不配置ipv6網(wǎng)關(guān)。
5、用新的test1br0創(chuàng)建測試容器。
可以發(fā)現(xiàn)容器獲得了ipv6的局域網(wǎng),鏈路本地和公網(wǎng)地址。并且可以ping通ipv6網(wǎng)站。
