V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
BOGU
V2EX  ›  NAS

NAS 的 Docker 上部署了多个服务,如何通过 DDNS 将 IPv6 解析到子域名中?

  •  
  •   BOGU · 7 小时 18 分钟前 · 412 次点击
    条件:
    1 、外网可以访问到内网的 IPv6 地址,防火墙已开启;
    2 、每个 Docker 的容器可以获取到 ipv6 公网地址;



    问题:
    如何自动获取每一个容器的 IPv6 公网地址,并将其正确解析到对应的子域名中?


    示例:
    容器名:emby ,240e::1 ,emby.XXX.XXX > 240e::1
    容器名:immich ,240e::2 ,immich.XXX.XXX > 240e::2
    11 条回复    2024-11-09 00:15:36 +08:00
    lengrongec
        1
    lengrongec  
       7 小时 12 分钟前
    容器网络配置应该选择 bridge 模式,不是 host 模式
    FawkesV
        2
    FawkesV  
       7 小时 10 分钟前
    反向代理
    FawkesV
        3
    FawkesV  
       7 小时 4 分钟前
    @FawkesV #2 忽略 理解错了 应该不得行
    z7356995
        4
    z7356995  
       6 小时 54 分钟前 via Android
    我是这样部署的,因为 443 和 80 端口被封,所以 nas 里其实不同服务是通过端口来区分的,群晖里外网不同的端口进来可以只向不同的服务,开放一下不同的端口进好了,我是用 ddns-go 用 cloudflare 来自动 ipv6 地址的 ddns,, 一些程序如 transmisson 不支技 ipv6 就用群晖代理转发
    z7356995
        5
    z7356995  
       6 小时 53 分钟前 via Android
    只要一个域名就好,这样不要配制那么多证书
    coderZoe
        6
    coderZoe  
       6 小时 45 分钟前
    这样不好吧,把 docker 容器也配公网 ip 是不是不安全?最好还是主机对外暴露一个 nginx 端口,nginx 通过域名转发到主机相应的服务上。
    YamatoRyou
        7
    YamatoRyou  
       4 小时 20 分钟前
    大致流程 (并不详尽):

    宿主机部分 (通过以下步骤创建的接口默认不含 IPv4 地址):
    - 创建一个网络接口, 父接口为宿主机的物理网卡;
    ```
    ip link add <接口名称> link <父接口名称> type macvlan mode bridge
    ```
    - 启动刚才创建的接口
    ```
    ip link set <接口名称> up
    ```
    - 添加路由条目, 主要用于宿主机本身与 Docker 容器的通信, 不影响来自其它机器的访问
    ```
    ip -6 route add <地址块> dev <接口名称>
    ```

    Docker 部分 (通过以下步骤创建的网络默认不含 IPv4 地址):
    - 创建一个 macvlan 驱动的网络, 并为该网络分配一个合适大小的地址块;
    ```
    docker network create \
    -d macvlan \
    --ipv6 \
    --subnet=<地址块> \
    --gateway=<位于地址块中的网关, 我的习惯是取该块中第 1 个地址> \
    -o parent=<父接口> \
    -o macvlanmode=bridge \
    <网络名称>
    ```
    - 有需求的容器连接到该网络, 并为每个容器分配一个在上述地址块范围内的地址;
    docker network connect --ip6=<IPv6 地址, 必须位于地址块范围内, 我的习惯是最后 32 位随机生成> <网络名称> <容器名称>

    用 docker inspect <容器名称> 获取容器的 IPv6 地址, 最后传递到 DDNS 相关脚本.

    ----
    其它:
    我自己的实例为网络分配了长度为 /96 的块.
    在宿主机创建的接口于下次重启机器后消失.
    edk24
        8
    edk24  
       29 分钟前
    我自己的方案:

    软路由 openwrt 拨号,用 lucky 插件 ddns 更新 ipv6 域名绑定。 以及子域名反向代理。 以及端口转发等
    TimPeake
        9
    TimPeake  
       25 分钟前
    我曾经也想这样。但是想想太复杂了 还是端口区分吧
    idrunk
        10
    idrunk  
       22 分钟前
    直接配置解析就行了,不过被禁的典型端口搞不定的,除非在客户端配置转发,如果你的服务是面向自己在外使用的,可以带端口使用
    idrunk
        11
    idrunk  
       19 分钟前
    哦,你是想用域名路由到指定服务,那可以用 nginx 等重定向请求到对应的容器啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1844 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.