背景
之前一直使用免费购的K2,自己在北京租房用不上太好的路由器,不过K2也有些久远了。加上一些设备都是用米家。因此换用了WR30U这款运营商定制的版本。当然为了折腾,还是得开启SSH。不过并没有刷OpenWrt之类的第三方,主要还是觉得硬件加速还是要保留。换租了好几个地,之前都是用的网线连接自如提供的光猫。不过这次换租的房间里不好拉网线。所以才考虑使用WISP。另外自如这个光猫比较老,没有5G的支持,但是下挂带的路由器又不支持IPv6。整有点尴尬。
改造配置
目标:
- 能够支持IPv6,确保有V6公网IP
- 带宽尽量大一些
因此想法是:2.4G来接入光猫,保证有V6的前缀下发以及确保子网所有的设备都有V6地址。5G接入自如提供的路由器,并设置V4优先级大于连接光猫的2.4G。
网络拓扑如下:
解锁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的)测试下网速:

配置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