Networking

如何獲取要在 Docker 中使用的 IPv6 子網?

  • May 5, 2020

我在執行 docker 的來賓伺服器上有一個 IPv6 IP

301b:e0d0:401:0348:lk19:7:0:2

中的配置/etc/resolv.conf

domain my.domain

nameserver ::1
nameserver 301b:e0d0:401:0348:505:7:0:2
nameserver 301b:e0d0:401:0348:506:7:0:2

如何獲取它的子網?我們可以從右側開始更改第四個值。但保持其他值相同。

我試圖在我的網路中為其設置子網。在我的 docker-compose.yml 文件中設置它

networks:
 default:
   driver: bridge
   enable_ipv6: true
   ipam:
     config:
       - subnet: 301b:e0d0:401:0348::/64

services:
 ipv6nat:
   container_name: ipv6nat
   restart: always
   image: robbertkl/ipv6nat
   privileged: true
   network_mode: host
   volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
     - /lib/modules:/lib/modules:ro

但它不起作用。無法使用 ping6 到具有此格式的容器中的其他網路

# ping6 301b:e0d0:401:0348:[DIFFERENT_VALUE_HERE]:7:0:2
unreachable

如何獲取要在 Docker 中使用的 IPv6 子網?

向您的提供商、ISP 或任何其他機構詢問地址空間的授權。如果你只有一個/64,你還不夠。理想情況下,您應該能夠請求 a /48,但如果他們很吝嗇,他們可能會給您類似 a 的東西/56

我們可以從右側開始更改第四個值

不,你不能。您的網路是 a /64,這意味著一半的位用於主機地址。Docker 主機和您在該組合中創建的網路必須位於不同的子網中。

但是你們都是同一個子網上的網路。

301b:e0d0:401:0348:[DIFFERENT_VALUE_HERE]:7:0:2

地址的301b:e0d0:401:0348::一部分定義了/64所有內容的子網,之後我只用於同一子網上的主機。

引用自:https://serverfault.com/questions/1015680