V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OpenWrt 是一个专门面向嵌入式设备的 Linux 发行版。你可以将 OpenWrt 支持的型号的嵌入式设备,比如各种路由器上的系统,换成一个有更多可能性可以折腾的 Linux 系统。
OpenWrt 官方网站
yyysuo
V2EX  ›  OpenWrt

吐槽一下 ipv6,太难了,求一个 openwrt(lean 源码)+ios 稳定使用的 ipv6 路由端配置

  •  
  •   yyysuo · 198 天前 · 1574 次点击
    这是一个创建于 198 天前的主题,其中的信息可能已经有所发展或是发生改变。
    吐槽:
    https://openwrt.org/docs/techref/odhcpd
    这 2 天学习了一下 ipv6 ,这玩意太反人类了,一堆相互关联影响的参数,多种排列组合,验证起来太难了,并且需要重启路由或者电脑来验证。

    目前存在的问题:
    Windows 、alpine 的 ipv6 都没问题,iphone ( 17.5 、14.3 )重启 ios 后连接上 wifi v6 可以直接访问 http://[2400:dd01:103a:4041::101]/ ,断开 wifi 重新连接,就无法访问了,这时候用 ping 这个 app ,ping 一下 openwrt lan 口的 dhcpv6 v6 ip 2408:xxxx:xxx:xxxx::1 (此时 ping 其它公网 v6 地址不通),v6 立马就回来了。

    主路由相关:
    lean openwrt 内核 6.8.8
    路由通告服务 服务器模式
    DHCPv6 服务 服务器模式
    NDP 代理 已禁用
    DHCPv6 模式 有状态+无状态
    总是通告默认路由 勾选

    /etc/config/dhcp 相关内容

    config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option force '1'
    option ra 'server'
    option ra_dns '0'
    option ra_slaac '1'
    option ra_lifetime '1200'
    list dhcp_option '6,10.10.10.1'
    option ra_useleasetime '1'
    list ra_flags 'none'
    option dhcpv6_na '0'
    option dns_service '0'
    option preferred_lifetime '10m'
    option ra_default '1'
    option leasetime '2h'
    option dhcpv6 'server'
    option ra_management '1'

    IOS WIFI 设置
    关闭私有无线局域网地址
    关闭限制 IP 地址跟踪
    在上述设置下,能通过 slaac 获取 1 个公网 ipv6 ,1 个临时 ipv6 ,无 dhcpv6 分配 ipv6 ,无 ipv6 dns
    21 条回复    2024-05-13 16:33:11 +08:00
    xpn282
        1
    xpn282  
       197 天前 via iPhone
    看不懂 op 说的东西。
    我是用 iStoreOS 系统,ipv6 默认开启,不用任何设置。好象 IPv6 都正常啊,ipv6 直播源、IPv6 ddns 、IPv6 回家、IPv6 各种网站测试都是过的
    yyysuo
        2
    yyysuo  
    OP
       197 天前
    @xpn282 ios 正常不,我 Windows 和 alpine 也正常的,如果您那边正常,能否把/etc/config/dhcp 这个文件中的 lan 部分内容给我粘一下。
    xpn282
        3
    xpn282  
       197 天前 via iPhone
    @yyysuo 都是正常的 我苹果全家桶。
    你还是自己去刷一个 iStoreOS 试试呗



    config dnsmasq
    option domainneeded '1'
    option localise_queries '1'
    option rebind_protection '1'
    option rebind_localhost '1'
    option local '/lan/'
    option domain 'lan'
    option expandhosts '1'
    option authoritative '1'
    option readethers '1'
    option leasefile '/tmp/dhcp.leases'
    option localservice '1'
    option ednspacket_max '1232'
    option localuse '1'
    option cachesize '0'
    list server '127.0.0.1#7874'
    option noresolv '1'
    option filter_aaaa '0'

    config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option dhcpv4 'server'
    option ra 'server'
    option dhcpv6 'server'

    config dhcp 'wan'
    option interface 'wan'
    option ignore '1'

    config odhcpd 'odhcpd'
    option maindhcp '0'
    option leasefile '/tmp/hosts/odhcpd'
    option leasetrigger '/usr/sbin/odhcpd-update'
    option loglevel '4'
    niuMare
        4
    niuMare  
       197 天前
    BusyBox v1.35.0 (2023-07-05 07:27:39 UTC) built-in shell (ash)


    ▀ ▄▄▄▄ ▄ ▄▄▄▄ ▄▄▄▄
    ▄▄▄ █▀ ▀ ▄▄█▄▄ ▄▄▄ ▄ ▄▄ ▄▄▄ ▄▀ ▀▄ █▀ ▀
    █ ▀█▄▄▄ █ █▀ ▀█ █▀ ▀ █▀ █ █ █ ▀█▄▄▄
    █ ▀█ █ █ █ █ █▀▀▀▀ █ █ ▀█
    ▄▄█▄▄ ▀▄▄▄█▀ ▀▄▄ ▀█▄█▀ █ ▀█▄▄▀ █▄▄█ ▀▄▄▄█▀

    Powered by OpenWRT
    -------------------------------------------------------
    iStoreOS 22.03.6, 2024030112
    -------------------------------------------------------
    root@iStoreOS:~# cat /etc/config/dhcp

    config dnsmasq
    option domainneeded '1'
    option boguspriv '1'
    option filterwin2k '0'
    option localise_queries '1'
    option rebind_protection '1'
    option rebind_localhost '1'
    option local '/lan/'
    option domain 'lan'
    option expandhosts '1'
    option nonegcache '0'
    option cachesize '1000'
    option authoritative '1'
    option readethers '1'
    option leasefile '/tmp/dhcp.leases'
    option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
    option nonwildcard '1'
    option localservice '1'
    option ednspacket_max '1232'
    option filter_a '0'

    config dhcp 'lan'
    option interface 'lan'
    option leasetime '12h'
    option dhcpv4 'server'
    option start '10'
    option limit '239'
    option ra 'server'
    option dhcpv6 'server'

    config dhcp 'wan'
    option interface 'wan'
    option ignore '1'

    config odhcpd 'odhcpd'
    option maindhcp '0'
    option leasefile '/tmp/hosts/odhcpd'
    option leasetrigger '/usr/sbin/odhcpd-update'
    option loglevel '4
    用的 istoreos ipv6 一切正常
    465456
        5
    465456  
       197 天前
    自己可以用内网的 ipv6 ,可以不用公网分配的 ipv6
    864766428
        7
    864766428  
       197 天前
    建议使用 immortalwrt ,默认设置情况下 ipv6 毫无问题
    yyysuo
        8
    yyysuo  
    OP
       197 天前
    @xpn282 #3
    @niuMare
    @864766428

    感谢各位,如果方便的话,也可以说一下 luci 上面的设置,slaac 是否勾选,dhcpv6 用的有状态还是无状态等信息。另外因为一般是同时有 v4 和 v6 ,v6 是否是好的,有时候注意不到,你们那边是否在开关 iphone 的 wifi 或者离家之后再回家,随时都可以打开中科大的网页吗 http://[2400:dd01:103a:4041::101]/
    yyysuo
        9
    yyysuo  
    OP
       197 天前
    @465456 #5 nat6 配置更加的不熟悉了,不过可以尝试一下,感谢。
    yyysuo
        10
    yyysuo  
    OP
       197 天前
    不想下发 ipv6 的 dns ,所以添加了 3 个参数。
    option dhcpv6_na '0'
    option ra_dns '0'
    option dns_service '0'
    xpn282
        11
    xpn282  
       197 天前 via iPhone
    iPhone 开关 Wi-Fi 后,正常访问中科大的 ipv6 ,iStoreOS 固件所有关于 IPv6 的都没问题。

    自己去刷一下固件很难吗,不管你用不用,刷来参考一下不更加明了,这样不更简单?
    yyysuo
        12
    yyysuo  
    OP
       197 天前
    @xpn282 #11 感谢,我试一下,还是想减少试错成本啊,刷个固件验证一下,怎么也得几个小时吧,不能在家人上网的时候搞,要想恢复之前的设置,估计得 1 天。
    dasuti
        13
    dasuti  
       197 天前 via iPhone
    我记得 immortalwrt 默认开启 slaac ,dhcpv6 无状态,每台设备都有唯一的 v6 公网地址
    yjzll
        14
    yjzll  
       196 天前
    me 早就搞定了 ipv6 ,嘿嘿


    第零步,查询路由器的默认 IPv6 网关
    终端输入:ip -6 route | grep default
    得到:
    default from 240e:xxx:xxx:xxx::/64 via fe80::xxx:xxx:xxx dev eth0 proto static metric 512 pref medium #外网到光猫 lan 侧
    default from 240e:xxx:xxx:xxx::/64 via fe80::1 dev eth0 proto static metric 640 pref medium

    如果有多行,执行下面命令。否则跳过此步
    然后将上面查询得到的默认网关设置为当前 NAT6 模式下的 默认网关。

    编辑文件 vim /etc/hotplug.d/iface/90-ipv6
    #!/bin/sh
    [ "$ACTION" = ifup ] || exit 0
    GWaddr=`ifconfig | ip -6 route show default | head -n1 | awk '{print $5}'`
    route -A inet6 add default gw $GWaddr dev eth0

    赋予执行权限
    chmod +x /etc/hotplug.d/iface/90-ipv6

    第一步,先搞定 wan6 口
    1 、网络--接口--wan6--编辑
    1.1 、常规设置
    协议:DHCPv6 客户端
    设备:eth0
    开机自动运行:选择
    请求 IPv6 地址:try
    请求指定长度的 IPv6 前缀:自动

    1.2 、高级设置
    强制链路:不选
    请求 DHCP 时发送的客户端 ID:空
    使用默认网关:选择
    自动获取 DNS 服务器:选择
    DNS 权重:空
    使用网关跃点:空
    覆盖 IPv4 路由表:未指定
    覆盖 IPv6 路由表:未指定
    IPv6 源路由:选择
    委托 IPv6 前缀:选择
    IPv6 分配长度:64
    IPv6 前缀过滤器:-- 请选择 --
    IPv6 后缀:::1
    IPv6 优先级:空

    1.3 、防火墙设置
    创建和分配防火墙区域:wan 和 wan6

    1.4 、DHCP 服务器--常规设置
    忽略此接口:不选


    1.5 、DHCP 服务器--IPv6 设置
    指定的主接口:选择
    RA 服务:中继模式
    DHCPv6 服务:中继模式
    NDP 代理:中继模式
    学习路由:选择


    第二步,搞定 lan 口
    2 、网络--接口--lan--编辑
    2.1 、常规设置
    协议:静态地址
    设备:br-lan
    开机自动运行:选择
    IPv4 地址:192.168.100.1
    IPv4 子网掩码:255.255.255.0
    IPv4 网关:灰色无法更改
    IPv4 广播地址:灰色无法更改

    2.2 、高级设置
    强制链路:选择
    使用默认网关:选择
    使用自定义的 DNS 服务器:空
    DNS 搜索域名:空
    DNS 权重:空
    使用网关跃点:空
    覆盖 IPv4 路由表:未指定
    覆盖 IPv6 路由表:未指定
    委托 IPv6 前缀:选择
    IPv6 分配长度:64
    IPv6 前缀过滤器:-- 请选择 --
    IPv6 后缀:::1
    IPv6 优先级:空

    2.3 、防火墙设置
    创建和分配防火墙区域:lan

    2.4 、DHCP 服务器--常规设置
    忽略此接口:不选
    启动:100
    客户数:150
    租期:12h

    2.5 、DHCP 服务器--高级设置
    动态 DHCP:选择
    强制:不选
    IPv4 子网掩码:灰色无法更改
    DHCP 选项:空

    2.6 、DHCP 服务器--IPv6 设置
    指定的主接口:不选
    RA 服务:服务器模式
    DHCPv6 服务:服务器模式
    通告的 IPv6 DNS 服务器:空
    本地 IPv6 DNS 服务器:选择
    通告的 DNS 域名:空
    NDP 代理:禁用

    2.7 、DHCP 服务器--IPv6 RA 设置
    默认路由器:强制的
    启用 SLAAC:选择
    RA 标记:受管配置 其他配置
    最长 RA 间隔:空
    最短 RA 间隔:空
    RA 生命周期:空
    RA MTU:空
    RA 跳数限制:空


    第三步,网络--接口--全局网络选项
    IPv6 ULA 前缀:fd00::/64
    数据包引导:选择


    第四步,网络--DHCP/DNS--高级设置
    过滤 IPv6 AAAA 记录:不选
    过滤 IPv4 A 记录:不选


    第五步,网络--防火墙
    --自定义规则
    # ipv6 NAT
    ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

    ip6tables -I input_rule -p udp --sport 546 --dport 547 -j ACCEPT

    #ip6tables -A input_rule -p ipv6-nonxt -m length --length 40 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 1 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 2 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 3 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 4 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 128 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 129 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 130 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 131 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 132 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 133 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 134 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 135 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 136 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 137 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 138 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 139 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 140 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 141 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 142 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 143 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 144 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 145 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 146 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 147 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 148 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 149 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 151 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 152 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 153 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 154 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 157 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 158 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 160 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 161 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp -m limit --limit 100/s --limit-burst 10 -j ACCEPT

    第六步,其他
    6.1 、passwall 插件,DNS 设置,过滤代理域名 IPv6 ,(可以)勾选,不对 IPV6 解析,使得 IPV6 直接连通,不经过 passwall 。
    6.2 、openwrt 需要的 ipv6 包,更新重要
    odhcp6c 2022-08-05-7d21e8d8-18 ,DHCPv6 客户端
    odhcpd-ipv6only 2023-01-02-4a673e1c-2 ,ipv6 版本
    luci-proto-ipv6 git-21.148.48881-79947af git-23.355.78888-e047387 ,从 luci Web 界面配置 IPv6
    ip6tables-mod-nat 1.8.7-7
    ip6tables-zz-legacy 1.8.7-7
    kmod-ip6tables 5.10.201-1 并非必须,提供 IPv6 防火墙
    kmod-nf-ipt6 5.10.201-1
    kmod-ipt-nat6 提供 IPv6 的 NAT 支持

    6.3 、SmartDNS 设置
    一、常规设置
    启用:选择
    服务器名称:SmartDNS
    本地端口:55333
    TCP 服务器:选择
    IPv6 服务器:选择
    双栈 IP 优选:选择
    域名预加载:不选
    缓存过期服务:选择
    缓存大小:空
    解析本地主机名:选择
    自动设置 Dnsmasq:选择
    停用 IPV6 地址解析:不选
    停用 HTTPS 地址解析:不选
    域名 TTL:空
    域名 TTL 最小值:空
    域名 TTL 最大值:空
    回应的域名 TTL 最大值:空

    二、上游服务器
    名称 ip 地址 端口 类型
    阿里公共 DNS-DoT-tls 223.5.5.5 853 tls
    腾讯公共 DNS-DoT-tls 120.53.53.53 853 tls
    谷歌 ipv6 dns 2001:4860:4860::8888 853 tls
    谷歌 ipv4 dns 8.8.8.8 853 tls
    阿里公共 DNS-DoH-https 223.5.5.5/dns-query 无 https
    腾讯公共 DNS-DoH-https 120.53.53.53/dns-query 无 https

    三、网络--DNS/DHCP 设置--常规设置:
    转发 DNS:127.0.0.1#55333




    6.6 、IPv6 NAT 后配置端口转发,使用 Socat 软件包即可
    手工添加可以如下

    第七步、修改 vim /etc/sysctl.conf 文件,添加以下内容(如果没有的话):重要
    启用 IPv6 转发
    net.ipv6.conf.default.forwarding=1
    net.ipv6.conf.all.forwarding=1

    第八步、其他
    8.1 、系统克隆方法
    一、执行
    fdisk -l
    得到以下内容
    Device Boot Start End Sectors Size Id Type
    /dev/sda1 * 512 262655 262144 128M 83 Linux
    /dev/sda2 263168 787455 524288 256M 83 Linux
    /dev/sda3 787968 4982271 4194304 2G 83 Linux
    /dev/sda4 4982784 250069679 245086896 116.9G 83 Linux
    二、进入空闲磁盘或 U 盘,执行以下命令
    cd /mnt/sata2-4
    dd if=/dev/sda of=iStoreOSbackup20230525.img bs=512 count=4982271
    bs 内容是 sda1 的起始,count 内容是 sda3 的结束+1 (不用加)
    得到/mnt/sata1-4/iStoreOSbackup20230424.img 文件

    8.2 、配置文件
    修改文件 /etc/config/dhcp 如下,文件内容见最后
    config dhcp 'lan'
    option interface 'lan' #端口名称
    option start '100' #端口号起始--结束
    option limit '150'
    option dhcpv4 'server'
    option leasetime '12h' # infinite 租期,v4v6 均有效
    option ra 'server' #RA 通告服务的运行模式
    option ra_default '2' # 1 是 SALLC 和 DHCP 下均通告,2 是强制通告
    option dhcpv6 'server' #DHCP 运行模式
    list ra_flags 'managed-config'
    list ra_flags 'other-config'
    config dhcp 'wan6'
    option interface 'wan6'
    option ra 'relay'
    option dhcpv6 'relay'
    option ndp 'relay'
    option master '1'
    yjzll
        15
    yjzll  
       196 天前
    方法 1 - 重设路由表

    注意,该方法依赖 owipcalc 包来计算子网地址:opkg install owipcalc 。
    我们可以手动在 WAN 口获得 IPv6 地址后添加一条路由表,让整个子网重定向到 LAN 口,这个操作可以通过 OpenWrt 的 hotplug 机制来进行,保存以下脚本放在 /etc/hotplug.d/iface/80-reset-route6 并重启 WAN 接口即可:

    #!/bin/sh
    wan_dev="wan6"
    [ "$HOTPLUG_TYPE" = "iface" ] || exit 0
    [ "$INTERFACE" = "$wan_dev" ] || exit 0
    RTMETRIC=127
    . /lib/functions/network.sh
    network_get_physdev lan_dev lan || exit 0
    ifup_cb() {
    local _lan_dev="$1"
    local _metric="$2"
    local wan_subnet
    network_get_subnet6 wan_subnet "$wan_dev" || return
    _wan_network=$(owipcalc "${wan_subnet}" network)
    ip -6 route replace "$_wan_network" dev "$_lan_dev" metric "$_metric"
    }
    ifdown_cb() {
    local _lan_dev="$1"
    local _metric="$2"
    ip -6 route flush dev "$_lan_dev" metric "$_metric"
    }
    case "$ACTION" in
    ifup)
    ifup_cb "$lan_dev" "$RTMETRIC"
    ;;
    ifdown)
    ifdown_cb "$lan_dev" "$RTMETRIC"
    ;;
    ifupdate)
    ifdown_cb "$lan_dev" "$RTMETRIC"
    sleep 1
    ifup_cb "$lan_dev" "$RTMETRIC"
    ;;
    *)
    ;;
    esac
    exit 0

    第零步,安装软件包
    0.1 系统--软件包--更新列表
    过滤器输入:owipcalc
    安装
    0.2 编辑 80-reset-route6 文件,,内容见上面,拷贝到 /etc/hotplug.d/iface/80-reset-route6
    0.3 赋予执行权限 777
    chmod +X /etc/hotplug.d/iface/80-reset-route6

    第一步,先搞定 wan6 口
    1 、网络--接口--wan6--编辑
    1.1 、常规设置
    协议:DHCPv6 客户端
    设备:eth0
    开机自动运行:选择
    请求 IPv6 地址:try
    请求指定长度的 IPv6 前缀:自动

    1.2 、高级设置
    强制链路:不选
    请求 DHCP 时发送的客户端 ID:空
    使用默认网关:选择
    自动获取 DNS 服务器:选择
    DNS 权重:空
    使用网关跃点:空
    覆盖 IPv4 路由表:未指定
    覆盖 IPv6 路由表:未指定
    IPv6 源路由:选择
    委托 IPv6 前缀:选择
    IPv6 分配长度:已禁用
    IPv6 前缀过滤器:-- 请选择 --
    IPv6 后缀:::1
    IPv6 优先级:空


    1.3 、防火墙设置
    创建和分配防火墙区域:wan 和 wan6

    1.4 、DHCP 服务器--常规设置
    忽略此接口:不选

    1.5 、DHCP 服务器--IPv6 设置
    指定的主接口:选择
    RA 服务:中继模式
    DHCPv6 服务:中继模式
    NDP 代理:中继模式
    学习路由:选择


    第二步,搞定 lan 口
    2 、网络--接口--lan--编辑
    2.1 、常规设置
    协议:静态地址
    设备:br-lan
    开机自动运行:选择
    IPv4 地址:192.168.100.1
    IPv4 子网掩码:255.255.255.0
    IPv4 网关:灰色无法更改
    IPv4 广播地址:灰色无法更改
    IPv6 地址:空
    IPv6 网关:空
    IPv6 路由前缀:空

    2.2 、高级设置
    强制链路:选择
    使用默认网关:选择
    使用自定义的 DNS 服务器:空
    DNS 搜索域名:空
    DNS 权重:空
    使用网关跃点:空
    覆盖 IPv4 路由表:未指定
    覆盖 IPv6 路由表:未指定
    委托 IPv6 前缀:选择
    IPv6 分配长度:禁用
    IPv6 前缀过滤器:-- 请选择 --
    IPv6 后缀:::1
    IPv6 优先级:空


    2.3 、防火墙设置
    创建和分配防火墙区域:lan

    2.4 、DHCP 服务器--常规设置
    忽略此接口:不选
    启动:100
    客户数:150
    租期:infinite

    2.5 、DHCP 服务器--高级设置
    动态 DHCP:选择
    强制:不选
    IPv4 子网掩码:灰色无法更改
    DHCP 选项:空

    2.6 、DHCP 服务器--IPv6 设置
    指定的主接口:不选
    RA 服务:中继模式
    DHCPv6 服务:中继模式
    NDP 代理:中继模式
    学习路由:选择
    NDP 代理从属设备:不选


    第三步,网络--接口--全局网络选项
    IPv6 ULA 前缀:空
    数据包引导:选择


    第四步,网络--DHCP/DNS--高级设置
    过滤 IPv6 AAAA 记录:不选
    过滤 IPv4 A 记录:不选


    第五步,网络--防火墙
    --自定义规则

    # 放行入站(wan,lan,docker ,单向进入), icmpv6 续约
    ip6tables -I input_rule -p udp --sport 546 --dport 547 -j ACCEPT
    # 放行转发(光猫与下级 PC ,双向), icmpv6 续约
    #ip6tables -I forwarding_rule -p udp --sport 546 --dport 547 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 1 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 2 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 3 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 4 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 128 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 129 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 130 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 131 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 132 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 133 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 134 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 135 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 136 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 137 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 141 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 142 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 143 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 148 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 149 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 151 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 152 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    ip6tables -I input_rule -p ipv6-icmp --icmpv6-type 153 -m limit --limit 100/s --limit-burst 10 -j ACCEPT


    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 131 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 132 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 133 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 134 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 135 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 136 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 137 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 141 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 142 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 143 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 148 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 149 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 151 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 152 -m limit --limit 100/s --limit-burst 10 -j ACCEPT
    #ip6tables -I forwarding_wan_rule -i eth0 -p ipv6-icmp --icmpv6-type 153 -m limit --limit 100/s --limit-burst 10 -j ACCEPT

    -----------------------------------------------

    软路由重启(系统--重启)

    第六步,其他问题
    6.1 、如果获得了 ipv6 地址,缺无法 ping 通,大概率是以下三个地方
    网络--接口--全局网络选项,IPv6 ULA 前缀:空
    网络--接口--wan6 ,IPv6 分配长度:已禁用
    网络--接口--lan ,IPv6 分配长度:已禁用
    原因是纯 relay 模式下客户端不会获取到“IPv6 ULA 前缀”下的地址/路由/邻居信息,当客户端尝试回复从路由器发出的 ULA-prefix 下地址的 neighbor solicitation 时,匹配不到这个 ULA 地址的路由只好放弃。


    6.6 、文件 /etc/config/dhcp 如下
    config dhcp 'lan'
    option interface 'lan' #端口名称
    option start '100' #端口号起始--结束
    option limit '150'
    option dhcpv4 'server'
    option leasetime '12h' # infinite 租期,v4v6 均有效
    option ra 'relay'
    option ndp 'relay' #中继运行模式
    option dhcpv6 'relay'

    config dhcp 'wan'
    option interface 'wan'
    option ignore '1'

    config dhcp 'wan6'
    option interface 'wan6'
    option master '1'
    option ra 'relay'
    option ndp 'relay'
    option dhcpv6 'relay'

    ------------------------------------------------------

    6.7 、passwall 插件,DNS 设置,过滤代理域名 IPv6 ,要勾选,不对 IPV6 解析,使得 IPV6 直接连通,不经过 passwall 。
    yjzll
        16
    yjzll  
       196 天前
    给你两种方法,建议一,稳定
    yyysuo
        17
    yyysuo  
    OP
       196 天前
    @yjzll #14 先感谢一下大佬,这作业估计得抄一阵子。
    WizardLeo
        18
    WizardLeo  
       194 天前
    建议你看看这篇文章
    aHR0cHM6Ly9wb3N0LnNtemRtLmNvbS9wL2F3em9kbXBwLz9zb3J0X3RhYj1ob3QlMjUyNTI1MkY=
    QeMPdEW178ZNV025
        19
    QeMPdEW178ZNV025  
       194 天前
    ipv6 的设置教程参考这个,其他的都是扯淡
    https://post.smzdm.com/p/awzodmpp/
    Aaron325
        20
    Aaron325  
       194 天前
    建议 padavan 固件,hiboy 的 ipv6 设置还可以。
    我目前就是用 ipv4 代理,ipv6 直连当大陆白名单用
    yyysuo
        21
    yyysuo  
    OP
       193 天前
    option dhcpv6_na '0'
    发现问题都是因为上面这个参数导致的,之前 v6 是好的,因为不想下发 v6 的 dns ,只有上面这个参数管用,设置了之后,设备只会获取 slaac 的地址,dhcpv6 的地址和 dns 都不会下发给设备,导致了 ios 的问题,目前还是找不到不下发 v6 dns 的同时 ios 的 v6 没问题的配置。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2878 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:57 · PVG 15:57 · LAX 23:57 · JFK 02:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.