V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yjzll
V2EX  ›  宽带症候群

上海电信 ipv6 无法上网,断流问题

  •  
  •   yjzll · 298 天前 · 2080 次点击
    这是一个创建于 298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一、外网访问内网、端口问题 今后的趋势是端口全封,外网访问内网,基本不用考虑。现在有部分能访问, 当然是申请的,或者漏网之鱼。一般家庭用户以后也就只能买个 VPS ,转发。

    第二、ipv6 获取方式,就两种:光猫拨号和光猫桥接。

    光猫----》 路由器---》电脑

    光猫桥接,适合漏网之鱼,代表能使用自己的路由器,该路由器拨号上网后, 能分配 ipv6 地址,管理路由,下级电脑关机后能回收地址,安卓设备能顺畅 使用 ipv6 。是理想的 ipv6 运行方式。

    光猫拨号,此时,DHCP 服务器是光猫,自己的路由器有两种方式运行:

    方式一、SALLC 方式,wan6 口和 lan 口都是中继运行,好处是获得全球唯一 ipv6 地址,坏处是,光猫只管理接在光猫 lan 口的设备,比如路由器,路由器下连接 的电脑,光猫能给地址,但不管理。表现的现象是,电脑开机后,ping 不通百度。 ping -6 www.baidu.com 第二个现象是,电脑使用一段时间后又无法联通 ipv6 了。 临时的解决方法是,在电脑上使用计划任务,启动、每隔几分钟, ping -6 路由器 wan 口的 ipv6 地址。 注意,每台电脑都要 ping ,不是一台 ping 了,其他就不用了。

    方式二、路由器 DHCPv6 NAT 方式 这相当于,光猫拨号,光猫只管理 lan 口的路由器,路由器作为第二级 DHCPv6 服务器,接管接在下面的电脑,就解决了目前 ipv6 使用的烦恼, 有两个地方要注意,网关和 SALLC 。

    先说网关,OpenWrt 等软路由,在这种方式下,固件有缺陷,表现为网关未 设置好,设置页面明明已经选了强制网关,实际就是没有写进路由。 解决办法是手工输入网关,方法如下,网关地址是光猫,光猫一般不会换。

    查询路由器的默认 IPv6 网关 ip -6 route | grep default default from 240e:38a:2999:2e00::/64 via fe80::233:2cc9:26ef:3cb dev eth0 proto static metric 512 pref medium #外网到光猫 lan 侧 default from 240e:38a:2999:2e00::/64 via fe80::1 dev eth0 proto static metric 640 pref medium

    这是默认的路由,来自 240e:38a:2999:2e00 网段,经过局域网 fe80::233:7cc9:26ef:3cb 地址(光猫的 lan 口地址 192.168.21.1 的 mac 地址 xx:C9:xx:EF:xx:CB ,是内部局域网的总管,下面还有 fd80 ),本路由表是建立在 eth0 上。proto 是静态 protecol 协议,metric 是跃点数,Pref 是偏好值 然后将上面查询得到的默认网关设置为当前 NAT6 模式下的 默认网关 。运行命令如下:

    route -A inet6 add default gw fe80::233:2cc9:26ef:3cb dev eth0

    也可写入文件,启动时自动执行,今后 fe80::233:2cc9:26ef:3cb 有变化,需要在此修改,光猫不换不会变 编辑文件 vim /etc/hotplug.d/iface/90-ipv6 #!/bin/sh [ "$ACTION" = ifup ] || exit 0 route -A inet6 add default gw fe80::233:2cc9:26ef:3cb dev eth0 赋予执行权限 chmod +x /etc/hotplug.d/iface/90-ipv6

    再说 SALLC ,lan 端口配置--DHCP 服务--ipv6 RA 设置 启用 SALLC ,选择受管配置和其他配置( M 和 O 标记位) 安卓设备需要 SALLC ,才能流畅使用 ipv6

    16 条回复    2024-03-02 21:46:34 +08:00
    lcdtyph
        1
    lcdtyph  
       298 天前 via iPhone
    是 slaac
    ranaanna
        2
    ranaanna  
       298 天前
    slaac 。OP 说的光猫拨号的两种方式都不对。方式一不应该使用 wan 口。方式二不应该使用 NAT ,这实际上是把 ipv6 当 ipv4 使用。放心吧不会端口全封的,最多封 80, 443, 1701, 1723, 500, 4500 等等,不然怎么愉快用网
    ranaanna
        3
    ranaanna  
       298 天前
    你的断流问题,其实很简单,相当于:光猫和路由器都在喊:“我是路由器,从我这里出去吧”,但是其实路由器是在乱喊,电脑听信了路由器的喊话就断流了,所以要持续 ping 光猫下的设备地址,告诉自己不光在路由器之下,还在光猫之下。解决的办法也很简单,1. 不要用路由器 wan 口,2. 让路由器闭嘴,不要设置 ra
    ranaanna
        4
    ranaanna  
       298 天前
    续上,当然,手动设置电脑的 ipv6 地址,将光猫的本地链路地址设为网关,也不失为一种办法
    mantouboji
        5
    mantouboji  
       298 天前
    洋洋洒洒,没说清楚到底是遇到了哪一款倒霉的光猫。
    datou
        6
    datou  
       297 天前
    楼主对于 DHCPv6 的理解有误
    mantouboji
        7
    mantouboji  
       297 天前
    SLAAC 方式配置的地址,每个终端设备都大不同,低 64 位看上去像随机数。这时候的网关地址是通过 RA (路由器通告)方式得到的,高 64 位就是光猫从运营商得到的/56 或者/60 地址池里第一个/64 。

    DHCPv6 方式,既可以分配地址,也可以分配前缀。

    分配地址时,低 64 位都是用户可以指定的,有的猫只能指定最低 8 位或者 16 位,有的可以固定高 48 位外加顺序增加低 16 位,这时候用户拿到的地址看上去跟 v4 时代一样各个终端顺序排列。

    分配前缀时,是下级路由器要主动申请,然后从光猫得到的地址池里划一块给下级路由器。比如运营商给了/60 ,光猫把它分成四大块/62 ,把第一个没用过的/62 给了下级路由器。

    如果没有下挂二级路由器,光猫那边不需要开启 DHCPv6 ,只需要有 RA 即可。
    LnTrx
        8
    LnTrx  
       297 天前
    光猫拨号 SLAAC 模式下,下级路由支持 Passthrough 、IPv6 路由桥等中继方式的话,一般是可以正常用 IPv6 的。早期路由器中 6relayd 有 bug 会造成需要连续 ping 才能连上的现象,不知道楼主的路由器固件是什么。
    yjzll
        9
    yjzll  
    OP
       296 天前
    @mantouboji 嘿嘿,还是你明白,我偶然发现,我家光猫,竟然在 ipv6 下有两个网关,隔壁家的光猫就一个网关,怪不得我搞了一个春节
    yjzll
        10
    yjzll  
    OP
       296 天前
    谢谢楼上各位,是光猫问题和 openwrt ( istore )的综合问题
    光猫问题:竟然在 ipv6 下有两个网关, 隔壁家的光猫就一个网关。
    fe80::933:7cc9:26ef:3cb
    fe80::1 fe80::1
    电脑直接接在光猫后发现的。光猫固件较老,进光猫的 IP 地址 192.168.3.1 都被电信改了,变成 192.168.71.1 ,现在连光猫的管理页面都没了,电信配置下发,直接覆盖了光猫内容,而光猫固件又无法更新,两个神仙打架,结果,出来两个“网关”。
    openwrt 问题:openwrt 的 wan6 口,在概览页面是正确的网关地址(也就是实际使用的 fe80::933:7cc9:26ef:3cb ),但 openwrt 在默认的路由表内却没有将此地址写进去,可能他们也没碰到两个网关的事情

    解决方法是,终端命令
    ip -6 route | grep default 得到:
    default from 240e:38a:9999:3e00::/64 via fe80::933:7cc9:26ef:3cb dev eth0 proto static metric 512 pref medium
    default from 240e:38a:9999:3e00::/64 via fe80::1 dev eth0 proto static metric 640 pref medium

    编辑文件 vim /etc/hotplug.d/iface/90-ipv6
    #!/bin/sh
    [ "$ACTION" = ifup ] || exit 0
    route -A inet6 add default gw fe80::933:7cc9:26ef:3cb dev eth0
    赋予执行权限
    chmod +x /etc/hotplug.d/iface/90-ipv6

    完美解决,两种运行方式都完美
    方式一:wan6 口三个中继,lan 口三个中继
    方式二:wan6 口三个中继,lan 口 RA 、DHCP 是服务器,另一个关掉

    其他方式在该死的光猫下都不行,邻居家就没啥怪毛病
    yjzll
        11
    yjzll  
    OP
       295 天前
    方式一:
    文件 /etc/config/dhcp 如下
    config dhcp 'lan'
    option interface 'lan' #端口名称
    option start '100' #端口号起始--结束
    option limit '150'
    option dhcpv4 'server'
    option ra_management '2' #分配何种地址,0 仅 SLAAC ,1 是 SLAAC 和 DHCP 混合, '2'仅 DHCP 有状态
    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'
    yjzll
        12
    yjzll  
    OP
       295 天前
    方式二:
    2. 防火墙配置,防火墙--自定义规则中添加
    ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    在 eth0 ( wan 口)上,nat 表的路由( POSTROUTING )

    文件 /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' #路由器通告运行模式
    option ra_default '2' # 1 是 SALLC 和 DHCP 下均通告,2 是强制通告
    option ra_management '2' #分配何种地址,0 仅 SALLC ,1 是 SALLC 和 DHCP 混合, '2'仅 DHCP 有状态
    option dhcpv6 'server' #DHCP 运行模式
    list dns '2001:4860:4860::8888'
    list dns '2001:4860:4860::8844'

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

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

    文件 /etc/config/network 如下:

    config globals 'globals'
    option ula_prefix 'fd00::/64' # 'fd00:2222:2222:2222::/64' 'fd00::/8' 均可,方便记忆
    option packet_steering '1'
    yjzll
        13
    yjzll  
    OP
       295 天前
    常用命令
    RA ,Router Advertisement, 路由器通告,指路由器在广播域内喊话。
    DHCP ,动态主机配置,分发管理 IP 地址,通常一个子网一台。含网关和 DNS 服务器信息。
    维护一个表,记录哪些机器对应哪些 IP ,及其租期和续租,不续租则收回地址
    SLAAC ,通过 RA 消息,发送路由器通告,无状态地址
    第一步:从路由器 FE80::1 到 特定保留的地址( FF02::1 ,代表所有在线机器),发送前缀/长度,但不含网关和 DNS 服务器信息
    第二步:客户端收到,前缀/长度,缺省网关设置成发送 RA 消息的主机 FE80::1 (开源软路由经常错误设置,需要手动配置),
    产生单播的全球唯一地址( EUI-64 算法计算后 64 位随机值)
    无状态地址:显示临时地址
    有状态地址:不显示临时地址

    网络邻居
    ping ff02::1
    64 bytes from fe80::6a:cdff:fe06:15: seq=0 ttl=64 time=0.252 ms
    64 bytes from fe80::1875:bcf0:93c9:4870: seq=0 ttl=64 time=238.389 ms (DUP!)

    路由器
    ping ff02::2
    64 bytes from fe80::87a:cdff:fe54:15: seq=0 ttl=64 time=0.646 ms

    DHCP 服务器
    ping ff02::1:2
    64 bytes from fe80::20a::15: seq=0 ttl=64 time=0.276 ms
    ip 地址通过哪种方式下发,对 fe80::20a::15 抓包,看有无路由器通告消息,有--SLAAC

    查询路由器的默认 IPv6 网关
    ip -6 route | grep default
    ipv4 、6 路由表
    ip -6 route show

    查看 icmp6 协议信息
    tcpdump -nn -i eth0 icmp6
    tcpdump -nn -i eth0 icmp6 -v
    tcpdump -nn -i eth0 icmp6 -vv


    查看邻居 mac 地址
    ip -6 neighbor show

    检查哪些端口和应用在运行,如过滤 19422 相关内容
    netstat -anp -p udp
    netstat -anp -p udp | grep 19422

    ipv6 DNS 服务器
    2001:4860:4860::8888
    2001:4860:4860::8844
    240e:4c:4008::1
    240e:4c:4808::1
    2001:dc7:1000::1
    240C::6666
    240C::6644
    2400:3200::1
    2402:4e00::
    2400:da00::6666

    IPV6 联网测试
    https://testipv6.cn/
    https://ipv6-test.com
    yjzll
        14
    yjzll  
    OP
       295 天前
    openwrt 需要的 ipv6 包,更新,不能更新就不更新:
    odhcp6c 2022-08-05-7d21e8d8-18
    odhcpd 2023-01-02-4a673e1c-2, 和 only 二选一
    odhcpd-ipv6only 2023-01-02-4a673e1c-2 ,ipv6 版本
    luci-proto-ipv6 git-23.355.78888-e047387
    ip6tables-extra 1.8.7-7
    ip6tables-mod-nat 1.8.7-7
    ip6tables-nft 1.8.7-7
    ip6tables-zz-legacy 1.8.7-7
    kmod-ip6tables 5.10.201-1
    kmod-ip6tables-extra 5.10.201-1
    kmod-nf-ipt6 5.10.201-1
    linhu66
        15
    linhu66  
       292 天前
    @yjzll 你这是云宽带大哥
    flynaj
        16
    flynaj  
       291 天前 via Android
    你这个要解决需要桥接,路由器拨号,光猫的系统其实就是很老的 12.09,ipv6 支持太差。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1257 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:47 · PVG 01:47 · LAX 09:47 · JFK 12:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.