迅雷赚钱宝1代刷OpenWRT单网口接在主路由下,ipv6内网访问正常,外网无法访问的解决办法。

1. 问题缘由

  OpenWRT单网口NAS(迅雷赚钱宝1代),接在主路由下面提供NAS服务,配置有基于eth0的DHCPv6Client来获取IPv6公网IP,以实现通过IPv6公网,提供对外的NAS服务。

  发现在局域网访问DDNS-go的管理界面9876端口正常访问,DDNS-go已允许外网访问,但通过手机数据流量模拟外部访问无法打开。

2. 原因分析

       为确认是否是主路由的限制,在同样接在主路由下面的电脑上配置了Web服务,然后可以顺利从手机端用数据流量打开。证明主路由没有限制IPv6公网访问。

       那就只能是迅雷赚钱宝1代上的问题了。测试迅雷赚钱宝可以安装插件,说明其网络是通的。怀疑防火墙存在问题,一番折腾,各种设置,都不奏效,最后咨询了下Gemini,然后关闭了防火墙,然后测试依然不能外网访问服务。

/etc/init.d/firewall stop

       实在想不出是哪里的问题,调出路由表看了下,发现其缺少一条到主路由网关的默认路由。这就是为什么可以局域网用IPv6访问,外网访问时可以看到IPv6流量增加,但不能访问成功,缺少默认路由,导致其能接收数据,但回应的数据无法发送到主路由。内网IPv6是直通的,可以正常发送。

3. 解决办法

  然后就在管理界面(network/routes)添加了一条静态路由作为默认路由

openwrt-default-route

       然后再测试,就可以从公网访问了。下面是添加默认路由后的route table

root@OpenWrt:~# route -A inet6

Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
24fe:34:927:af:91:f8:a6:51b5%35/128         ::%35                                   UC    0      0       16 eth0    
24fe:34:927:af::%35/64                      ::%35                                   U     256    1        0 eth0 
fe80::%35/64                                ::%35                                   U     256    0        0 eth0
::%35/0                                     fe80::d6ee:71f:fe5e:71f2%35             UG    1024   2        0 eth0    
::%35/0                                     ::%35                                   !n    -1     1    10957 lo      
::1%35/128                                  ::%35                                   Un    0      1      568 lo      
240e:34:927:af::%35/128                     ::%35                                   Un    0      1        0 lo      
240e:34:927:af:e82a:ff:fed6:3371%35/128     ::%35                                   Un    0      1    17348 lo      
fe80::%35/128                               ::%35                                   Un    0      1        0 lo      
fe80::e80a:66ff:f1d6:3371%35/128            ::%35                                   Un    0      1     2859 lo      
ff02::1%35/128                              ::%35                                   UC    0      0     1273 eth0    
ff02::16%35/128                             ::%35                                   UC    0      0      163 eth0    
ff00::%35/8                                 ::%35                                   U     256    2        0 eth0    
::%35/0                                     ::%35                                   !n    -1     1    10957 lo

  DDNS-go管理界面可以访问了,就可以再扩展到其他服务的开放。

  一个设备的路由表,至少存在一条默认路由(默认网关),指向上级路由,否则就只能局域网内通信了,不能对外通信。

路由表各字段说明

Destination 目标网络或目标主机。Destination 为 default(::%35/0)时,表示这个是默认网关,所有数据都发到这个网关(这里是  fe80::d6ee:71f:fe5e:71f2%35 

Gateway/

Next hop

网关地址,fe80::d6ee:71f:fe5e:71f2%35 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关(同一个局域网内2台主机通信不需要经过网关)

 %35    %后面的数字表示接口标识符,相当于网卡的编号。

Genmask Destination 字段的网络掩码,例如:/64,  /128
Flags

标志

  • U(Up):该标志表示该路由条目是活动的,意味着该路径是可用的。
  • G(Gateway):表示指定的路由目标是一个网关(即下一跳地址),而不是直接连接的目标主机
  • H(Host):指示目标地址是一个主机(单个IP地址),而不是一个子网。
  • D(Dynamic):表示该路由是动态生成的,通常是由某个路由协议自动添加到路由表的
  • M(Modified):该标志通常与D一起使用,表示该路由是由于某种原因被修改过的。
  • L(Link):表示该路由是一个本地接口(loopback)地址,通常用于本地回环测试。
  • A(AnyCast):表示该路由是任播地址,多个目标具有相同的IP地址。
  • R(Reject):表示该路由条目是拒绝的,数据包将被丢弃,不会转发。
  • !(Blackhole):类似于R标志,表示该路由条目是黑洞路由,数据包被静默丢弃。
  • d(Dynamic Interface):表示该路由条目与一个动态接口相关联,通常是通过DHCP或SLAAC获得的。
  • C(Cache):表示该路由条目是通过发送数据包动态学习到的,然后被缓存。
  • S(Static):表示该路由是静态添加的,而不是通过某个动态路由协议学习到的。
 Metric  路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。);路由先匹配数字小的。
 Ref  路由项引用次数 (不在Linux内核中使用。)
 Use  此路由项被路由软件查找的次数
 Iface  网卡名字,例如 eth0;要去往这个网段需要使用哪一个网络接口。也就是eth0这张网卡,lo环回路由

 常用IPv6路由表操作

设置IPV6默认网关:
ip -6 route add default via XXXXXXXX
这一句是把后面的XXXX的地址设置为默认网关。

设置IPV6静态路由:
ip -6 route add IPV6地址/掩码 via 网关地址 dev 网卡名称

IPV6路由跟踪:
traceroute6 XXXXXXX

IPV6的ping:
ping6 XXXXXXX

ping -6 XXXXXX

IPV6的路由表:
route -A inet6

posted @ 2024-08-08 00:56  jopny  阅读(112)  评论(0编辑  收藏  举报