迅雷赚钱宝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)添加了一条静态路由作为默认路由
然后再测试,就可以从公网访问了。下面是添加默认路由后的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 |
网关地址, %35 %后面的数字表示接口标识符,相当于网卡的编号。 |
Genmask | Destination 字段的网络掩码,例如:/64, /128 |
Flags |
标志
|
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