今天人多,再次请问一下 docker 容器如何支持 ipv6,并正常访问外网 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Jays
V2EX    问与答

今天人多,再次请问一下 docker 容器如何支持 ipv6,并正常访问外网

  •  a href="Javascript:" Onclick="downVoteTopic(641022);" class="vote">
  •   Jays 2020-01-30 17:02:27 +08:00 5894 次点击
    这是一个创建于 2118 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前: 本地的 PC 和 docker 宿主机都可以正常访问 ipv6 访问 ipv6 网络。

    但是容器内可以获取到 ipv6 地址(外网),但是通过控制台 ping6 ipv6.baidu.com 都无法访问。

    操作的是: { "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" }

    2001:db8:1 替换成了路由获取到的地址。

    参考教程: https://www.itdaan.com/blog/2018/06/01/9c40958f838af908faabb21639ddc2d8.html

    21 条回复    2020-12-06 14:40:51 +08:00
    yhkang
        1
    yhkang  
       2020-01-30 20:22:55 +08:00
    每个容器都可以有公网 ipv6 地址?看起来不错,过完年回去我也要试一试
    Jays
        2
    Jays  
    OP
       2020-01-30 20:37:56 +08:00
    @yhkang 期待你能成功。我目前是 容器 获取到了 ipv6 地址。但无法访问 ipv6 网络。不知道哪里的问题
    aru
        3
    aru  
       2020-01-30 20:51:06 +08:00
    这段 IPv6/64 已经分配到主机了,你需要给 docker 另外一段 ipv6/64
    Jays
        4
    Jays  
    OP
       2020-01-30 21:01:55 +08:00
    @aru 宿主机和 PC 端,都是这个网段的。

    另外一个网段是自己设置嘛? 还是从哪里获取?
    aru
        5
    aru  
       2020-01-30 21:11:41 +08:00
    @Jays
    自己指定就好了,你的 isp 给你分配的 ipv6 应该是 /48 或 /56 吧,在这个范围内随便指定一段
    Jays
        6
    Jays  
    OP
       2020-01-30 21:23:14 +08:00
    @aru 以下为路由器的信息。

    IPv6 地址: WAN: 2408:822a:4c01:XXXX:b97a:1e4c:1d3b:c98/64
    IPv6 地址: LAN: 2408:822a:4c1f:XXX:767d:24ff:fe95:6487/60

    PC:

    IPv6 地址 . . . . . . . . . . . . : 2408:822a:4c1f:XXX:3556:a962:2de0:efa8(首选)
    临时 IPv6 地址. . . . . . . . . . : 2408:822a:4c1f:XXX:144f:8b20:9205:c75c(首选)

    该使用哪段?
    aru
        7
    aru  
       2020-01-30 22:23:31 +08:00
    IPv6 地址: LAN: 2408:822a:4c1f:XXX:767d:24ff:fe95:6487/60
    这里面取
    由于你 隐藏了完整地址,所以自己取吧
    和你 pc 的差不多的
    aru
        8
    aru  
       2020-01-30 22:28:59 +08:00
    2408:822a:4c1f:XXX::/64
    xxx 和和你已有机器的都不同
    Buges
        9
    Buges  
       2020-01-30 22:35:52 +08:00 via Android   1
    这个我也不太明白,因为家宽的地址段经常变化,不知道变了之后这个配置需不需要改。
    我的做法是 docker 的 ipv6 地址前缀填私网地址把 ipv6 启用起来,然后用 macvlan 把容器桥接出来自然得就通过 slaac 获取到地址了。
    Jays
        10
    Jays  
    OP
       2020-01-31 12:09:33 +08:00
    @Buges 具体操作 命令能发一下嘛? 我也是家用宽带 ip 经常变化
    Buges
        11
    Buges  
       2020-01-31 12:21:10 +08:00 via Android
    Jays
        12
    Jays  
    OP
       2020-01-31 15:02:09 +08:00
    @aru

    "fixed-cidr-v6": "2408:822a:4c1f:f01::/64"

    容器获取到的 ip 信息如下。

    "Gateway": "172.17.0.1",
    "IPAddress": "172.17.0.4",
    "IPPrefixLen": 16,
    "IPv6Gateway": "2408:822a:4c1f:f01::1",
    "GlobalIPv6Address": "2408:822a:4c1f:f01:0:242:ac11:4",
    "GlobalIPv6PrefixLen": 64,
    "MacAddress": "02:42:ac:11:00:04",

    "IPv6Gateway": "2408:822a:4c1f:f01::1", 会不会获取到的 ipv6 网关地址不对,局域网可以 ping 通容器,但是容器 ping ipv6.baidu.com 还是无法 ping。

    PC 的网关是 :fe80::767d:24ff:fe95:6487%13
    aru
        13
    aru  
       2020-01-31 15:32:20 +08:00
    @Jays
    ping6 2400:da00:2::29
    能够 ping 通就对了
    如果不能够 ping 通,是不是你的路由器 ipv6 前缀又变了?
    Venk666
        14
    Venk666  
       2020-01-31 18:35:01 +08:00 via Android
    ipv6nat
    Jays
        15
    Jays  
    OP
       2020-01-31 19:25:45 +08:00
    @aru 前缀没变。ping 不通外网。

    感觉貌似比较麻烦,最后我采用 host 模式重建了容器。
    reece
        16
    reece  
       2020-02-02 17:19:19 +08:00
    ipv6 地址还是无法上外网
    simon261
        17
    simon261  
       2020-05-27 06:28:48 +08:00
    @aru
    你好,请教一下 ipv6 的问题
    我的路由 lan 口是 a:a:a:480::1/60
    那么掩码就是覆盖 a:a:a:48,对嘛?
    然后路由的 lan 口 ip 是 a:a:a:480::1
    docker 里设置的
    "fixed-cidr-v6": "a:a:a:481::/64"
    docker0 网关的 ip"a:a:a:481::1
    容器的 ip 是"a:a:a:481:c:d:e:2
    现在容器和寄主机器可以互 ping 通,寄主和路由都能平通 ipv6 的外网。
    但是路由 ping a:a:a:481::1 说网络不可达。

    "fixed-cidr-v6": "a:a:a:481::/64" 这样设置对嘛?
    在 a:a:a:480::/60 子网里下面两个应该是同一个网段的吧?
    a:a:a:481::/64
    a:a:a:480::/64
    路由为什么说不可达呢?
    不知道是不是理解错了。
    aru
        18
    aru  
       2020-05-27 07:30:24 +08:00   1
    @simon261
    路由器看 一下获得的 /60 ip, 如: a:a:a:480::1/60
    可以给 docker 分配这个 ip: a:a:a:480:111::/64
    然后就可以了,重启 docker,建立一个测试容器吧
    aru
        19
    aru  
       2020-05-27 07:31:30 +08:00   1
    电信分配的 ipv6 也是动态的,每次换了你还得改,建议在家庭拨号环境不要设 ipv6 docker 。
    secondpaul
        20
    secondpaul  
       2020-09-07 17:53:43 +08:00 via iPhone
    @Buges 前辈,请问“用 macvlan 桥接出来”的 macvlan 是创建一个前缀为光猫获取前缀的 macvlan 吗,那不就没有通过 slaac 自动配置了吗?
    qq296015668
        21
    qq296015668  
       2020-12-06 14:40:51 +08:00
    @Jays NAT 方式的话是缺少 ip6tables 规则,添加就行
    假如你使用的是 { "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" }
    ip6tables -t nat -A POSTROUTING -s 2001:db8:1::/64 -j MASQUERADE
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1032 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 22:58 PVG 06:58 LAX 14:58 JFK 17:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86