WR30U配置WISP以及支持IPv6

背景

之前一直使用免费购的K2,自己在北京租房用不上太好的路由器,不过K2也有些久远了。加上一些设备都是用米家。因此换用了WR30U这款运营商定制的版本。当然为了折腾,还是得开启SSH。不过并没有刷OpenWrt之类的第三方,主要还是觉得硬件加速还是要保留。换租了好几个地,之前都是用的网线连接自如提供的光猫。不过这次换租的房间里不好拉网线。所以才考虑使用WISP。另外自如这个光猫比较老,没有5G的支持,但是下挂带的路由器又不支持IPv6。整有点尴尬。

改造配置

目标:

  1. 能够支持IPv6,确保有V6公网IP
  2. 带宽尽量大一些

因此想法是:2.4G来接入光猫,保证有V6的前缀下发以及确保子网所有的设备都有V6地址。5G接入自如提供的路由器,并设置V4优先级大于连接光猫的2.4G。

网络拓扑如下:

WR30U网络拓扑

解锁SSH

使用github上的项目:https://github.com/openwrt-xiaomi/xmir-patcher 按说明解锁下SSH

配置WISP

解锁SSH后,通过SSH登录后台,需要修改以下几个配置文件:

/etc/config/wireless

config wifi-iface 'wisp_apcli0' # 这个用于连接光猫2.4G
    option ifname 'apcli0'
    option network 'wan'        # 期望内网设备都是子网,所以这里为wan
    option encryption 'psk2'
    option device 'MT7981_1_1'
    option enctype 'AES'
    option apcliband '2g'
    option key '光猫2.4G WIFI对应的密码'
    option ssid '光猫对应WIFI名称'
    option mode 'sta'           # 这个需要是sta才能实现WISP
    option disabled '0'

config wifi-iface 'wispx_apclix0' # 这个用于连接自如WIFI 5G
    option device 'MT7981_1_2'
    option ifname 'apclix0'
    option network 'wispx'
    option mode 'sta'
    option disabled '0'
    option encryption 'psk2'
    option enctype 'AES'
    option key '自如WIFI密码'
    option ssid '自如WIFI名称'

/etc/config/network

config interface 'wan'
    option proto 'dhcp'    # 光猫会下发V4地址
    option mtu '1500'
    option ifname 'apcli0' # 调整为apcli0也就是2.4G无线AP客户端名称
    option peerdns '0'     # 使用自定义DNS,防止出现DNS污染,下面的list DNS可以根据自己情况配置
    list dns '8.8.8.8'
    list dns '223.5.5.5'
    list dns '114.114.114.114'
    list dns '180.184.1.1'
    option metric '20'     # 路由metric低一些,越大优先级越低,低于5G的就行,V6还要走这个,但是V4优先走5G WISP
    option ipv6 '1'        # 开启IPV6

config interface 'wispx'
    option proto 'dhcp'
    option mtu '1500'
    option ifname 'apclix0' # 5G apcli的名称
    option peerdns '0'
    option auto '1'
    option disabled '0'
    list if_on 'wan'       # 测试开了这个,还是不能开机自动启动wispx这个网口;可以删掉这个
    list dns '8.8.8.8'
    list dns '223.5.5.5'
    list dns '180.184.1.1'
    option metric '10'     # 优先级高于2.4G WISP就行

config interface 'wan_6'
    option ifname 'apcli0'
    option proto 'dhcpv6'   
    option reqaddress 'try'     
    option reqprefix 'auto'         # 确保能够请求到前缀,目前北京联通可以下发64的前缀
    option peerdns '0'              # 同样也是用自定义DNS
    list dns '2001:4860:4860::8888'
    list dns '2001:da8::666'

配置完成后,可以使用/etc/init.d/network restart生效网络(使用这个可以生效wispx,但是重启无效)。所以在firewall补充一个脚本来up下wispx(添加自定义的/data/etc/rc.local,后续一些自己需要开机启动的脚本都可以放这边):

/etc/config/firewall

config include 'auto_rc_local'
    option type 'script'
    option path '/data/etc/rc.local'
    option enabled '1'

/data/etc/rc.local

#!/bin/sh

/data/usr/local/sbin/chk_apclix0.sh & # 因为有sleep,所以需要后台跑

/data/usr/local/sbin/chk_apclix0.sh

#!/bin/sh

while [ -z "$(/sbin/ifconfig | grep apclix0)" ]; do
    sleep 10s
    /sbin/ifup wispx
done

以上这么操作之后,应该可以保证wispx可以开机被up起来了。运行后,后台route -n可以看v4路由请求优先级:

root@XiaoQiang:/etc/config# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.18.1    0.0.0.0         UG    10     0        0 apclix0
0.0.0.0         192.168.1.1     0.0.0.0         UG    20     0        0 apcli0
0.0.0.0         192.168.1.1     0.0.0.0         UG    50     0        0 apcli0
192.168.1.0     0.0.0.0         255.255.255.0   U     20     0        0 apcli0
192.168.6.0     0.0.0.0         255.255.255.0   U     0      0        0 br-lan
192.168.18.0    0.0.0.0         255.255.255.0   U     10     0        0 apclix0
192.168.32.0    0.0.0.0         255.255.255.0   U     0      0        0 br-miot
root@XiaoQiang:/etc/config#

192.168.18.1是自如路由器的网关,192.168.1.1是光猫的网关。使用speedtest.cn(正版的在国内测试不是很准,所以用.cn的)测试下网速:

自如提供300M的网络,基本上可以跑满

配置LAN IPv6

开启IPv6后,实测MacBook Pro和iPhone经常会v6掉线。一顿折腾之后发现WR30U默认LAN是relay;自如这边提供的光猫估计不太行。为了提高兼容性。需要做以下的调整(前提是WR30U是可以获取到V6前缀,如果不行,那么要调整为NAT6):

/etc/config/dhcp

config dhcp 'lan'
    option leasetime '720m'
    option ra_lifetime '1800'
    option force '1'
    option ra_default '1'
    option limit '201'
    option ra_preference 'high'
    option start '50'
    option ra_maxinterval '20'
    option interface 'lan'
#   option dhcpv6 'relay'     # 把这几个relay的都注释掉 
#   option ra 'relay'
#   option ndp 'relay'
    option dhcpv6 'server'    # 换成server
    option ra 'server'        # 换成server

苹果的设备其实会dhcpv6请求v6地址。实测走这种方式,苹果相关的设备V6就再也没掉过。安卓设备也可以正常使用。

转载请注明: 转载自elkPi.com

本文链接地址: WR30U配置WISP以及支持IPv6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top