V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Jays
V2EX  ›  问与答

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

  •  
  •   Jays · 2020-01-30 17:02:27 +08:00 · 5308 次点击
    这是一个创建于 1770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前: 本地的 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   ·   实用小工具   ·   3429 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.