跳到主要内容
  1. 文章/

为我的群晖实现IPv6 DDNS外网访问

·1539 字·4 分钟

注:这是我恢复的一篇发布于2022年8月10日的文章,故此重新发布

原由 #

这天,我正闲着发慌,突然想起我的群晖似乎缺少了什么,我想让他在我在学校的时间里访问,并管理相关服务,我就想起了FRP内网映射,但我冲了一下浪,发现我没有专门用来放置FRP的小鸡,网上那些可以白嫖的平台我也不想用(某些原因),但我最后决定使用家里的IPv6,为啥我不用IPv4?(因为我没有,上次有机会申请,结果客服一直说我说的宽带办理的手机号名下没有相关服务?需要我拿办理宽带的手机号去拨打然后申请,我嫌麻烦就懒得整了,有个IPv6照样用,因为流量也带有IPv6)

因为我以前整光猫桥接,把网给干没了,使我都不敢再整了。只能使用默认的光猫拨号

但网上那些教程基本都是说要光猫桥接,但不去整一下怎么行呢

环境 #

  • Windows11 专业版

  • 群晖DSM 7.1

  • X-WRT 22.03(基于OpenWRT,本文以OpenWRT说明)

  • 光猫(天翼宽带家庭网关)

过程(全程以本人实机操作过程) #

OpenWRT操作过程 #

进入OpenWRT后台,进入网络->接口->LAN->编辑->DHCP服务器->IPv6设置RA 服务DHCPv6 服务均改为混合模式NDP 代理禁用,然后保存并应用

进入网络->接口->全局网络选项IPv6 ULA 前缀里的内容清空,然后保存并应用

进入网络->MultiWAN 管理器->策略->balanced->编辑(注意!这一步需要软件包带有mwan3,部分主题显示为负载均衡。如果没有mwan3可以忽略这一步) 将备用成员改为默认(使用主路由表),然后保存并应用

进入网络->防火墙->通信规则->新增 常规设置下改动这些 源区域改为wan 目标区域改为lan任意区域都可以 高级设置下改动限制地址类型仅 IPv6其余配置按自己需求更改,然后保存并应用

然后进入网络->接口将各个接口都重启一下,正常情况下IPv6即可正常工作

因为是光猫拨号需要进行以下操作,需要连接ssh 进入系统->管理权->SSH 访问勾选密码验证允许 root 用户凭密码登入然后保存并应用

连接ssh 输入vi /etc/odhcp6c.user,按i键进入编辑模式,然后复制粘贴下面这段代码(来自Silent大佬的代码)

此代码可以让使用光猫拨号的方式正常让外网访问

#!/bin/sh

log() {
    logger -t "odhcp6c[fake-ipv6pd]" "$@"
}

reset_envs() {
    local entry

    local raroutes=""
    local userprefix=""
    for entry in $RA_ROUTES; do
        local route="$entry"
        local addr="${entry%%/*}"
                entry="${entry#*/}"
                local mask="${entry%%,*}"
                entry="${entry#*,}"
                local gw="${entry%%,*}"
                entry="${entry#*,}"
                local valid="${entry%%,*}"
                entry="${entry#*,}"
                local metric="${entry%%,*}"

        if [ "$addr" != "::" ]; then
            local prefix="$addr/$mask"
            log "found ipv6 prefix $prefix"
            userprefix="$userprefix $prefix"
            continue
        fi
        log "preserve ra route $route"
        raroutes="$raroutes $route"
    done

    RA_ROUTES="$raroutes"
    USERPREFIX="$userprefix"
}

fake_ipv6pd() {
    local device="$1"
    local action="$2"

    [ "$action" != "ra-updated" ] && return
    [ -n "$PREFIXES$USERPREFIX" ] && return
    [ -z "$ADDRESSES$RA_ADDRESSES" ] && return

    reset_envs

    [ -n "$ADDRESSES$RA_ADDRESSES$PREFIXES$USERPREFIX" ] && setup_interface "$device"
}

fake_ipv6pd "$@"

然后按esc键退出编辑模式然后输入:wq保存退出 输入/etc/init.d/network restart 让路由器重新配置网络即可

群晖操作过程 #

登入群晖,打开套件中心,在所有套件中搜索Docker然后安装

安装后打开Docker,点击注册表里搜索gdy666/lucky选择然后点击下载

ddns下载

映像里创建容器

d1

d2

这里容器名称红了是因为我已经创建了同名称的容器

d3

之后一直下一步即可

进入ddns web控制台,用当前群晖ip:16601访问,默认账号密码均为666点击左上角菜单->动态域名->动态域名设置开启动态域名服务开关然后保存应用

再进入菜单->动态域名->动态域名任务列表点击下方添加DDNS任务按照自己的需求填写即可

d4

关于光猫 #

听说光猫的防火墙不是很友好,无法完全的管理IPv6所以导致外网到光猫就被防火墙拦截,这里我是将光猫安全项下的广域网访问设置MAC过滤以黑名单方式开启,防火墙关闭。

c0

但是重启光猫就会失效,需要重新按照上方法反复操作即可

c

z1

最后感谢您的阅读,如有问题请指出,谢谢。

参考文章 #

odhcpd 中继模式原理、局限以及解决方案

籽夏
作者
籽夏
The best code is no code at all.