V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qq296015668
V2EX  ›  Docker

Docker IPV6 NAT

  •  
  •   qq296015668 · 2020-12-06 14:18:53 +08:00 · 1922 次点击
    这是一个创建于 1173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最接在做容器化的 IPV6,发现一些小伙伴跟我一样根据官方文档配置后,容器里面根本无法与外部通信

    注意:我们只讨论 IPV6 NAT 的实现,容器需要真实的外网 IPV6 不在此范围

    Docker

    vi /etc/docker/daemon.json
    
    {
      "ipv6": true,
      "fixed-cidr-v6": "2001:db8:1::/64"
      # 这里的 "fixed-cidr-v6": "2001:db8:1::/64" 只是容器内部使用的 ipv6 地址,选一个常用不与现有网络冲突的网段即可(不知道如何设置保持默认也行)
    }
    
    systemctl reload docker
    

    官方文档到这里就结束了,这样设置后,容器确实可以获取到 ipv6 的地址了,但是除了宿主之外的 ipv6 均无法正常访问,这是因为 ip6tables 规则缺失,不知道为什么 Docker 没有自动生成 NAT 规则

    ip6tables -t nat -A POSTROUTING -s 2001:db8:1::/64 -j MASQUERADE
    
    • 这里的 2001:db8:1::/64/etc/docker/daemon.json 定义的 fixed-cidr-v6 地址

    • 到这里就可以正常在容器里面使用宿主的网络权限访问局域网或者外网的 ipv6 地址了

    Docker-Compose

    如果是 docker-compose, 可以不修改 /etc/docker/daemon.json, 直接使用 yml 定义

    cat docker-compose-network.yml
    
    version: '2.2'
    
    networks:
      net:
        driver: bridge
        enable_ipv6: true
        ipam:
          driver: default
          config:
            - subnet: 172.18.0.0/16
            - subnet: 2001:db8:10::/64
    
    ip6tables -t nat -A POSTROUTING -s 2001:db8:10::/64 -j MASQUERADE
    
    第 1 条附言  ·  2021-12-15 03:48:33 +08:00

    Docker 官方已经在新版本修复了此问题。请更新 Docker 到最新版本然后修改配置文件即可。

    vi /etc/docker/daemon.json
    # 加入下面内容,注意不要覆盖已有的内容
    
    {
      "ipv6": true,
      "fixed-cidr-v6": "fc00:100::/24",
      "experimental": true,
      "ip6tables": true,
    }
    
    systemctl restart docker
    
    2 条回复    2021-02-07 14:54:03 +08:00
    zro
        1
    zro  
       2020-12-06 14:23:37 +08:00
    用 Docker 调试网络方面,实在是太蛋疼了。。
    qq296015668
        2
    qq296015668  
    OP
       2021-02-07 14:54:03 +08:00
    经过测试,VMware 虚拟机需要像文中这样操作,但是 Hyper-V 只需要开启地址转发

    firewall-cmd --add-masquerade --permanent
    firewall-cmd --reload

    然后重启 docker 即可
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2638 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:15 · PVG 23:15 · LAX 07:15 · JFK 10:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.