华硕 RT-AC86U 2900M双频千兆无线路由器购买理由(环境|模式|连接|功能)

【什么值得买 摘要频道】下列精选内容摘自于《一波三折的校园网IPv6 x 华硕 AC86U》的片段:

开学搬到了新宿舍,一看网口是千兆的 ,再加上自己之前也买了小米台灯,开关等,还有远程访问实验室NAS和游戏需求,开始寻思买一台高性能路由器。被张大妈各种毒文案例,就像四千预算进卡吧一样,路由器预算一度从200块的TP-Link路由器加钱到了AC86U。终于在双十一之前忍不住剁手。

 买回来火速设置一波,第一次用这么高级的路由器有点小激动 。首当其冲就是刷入梅林,设置IPv6,结果踏入了一个深坑。这里先插一句,关于梅林固件,作者的网站是。从这个网站下载的是原版梅林固件。固件代码都是开源的,可以从Github上看到。接下来步入正题。

坑爹的校园网

AC86U支持的设置IPv6方式有下图几种,理论上覆盖了绝大多数网络情况,有很多学校的同学直接选择Passthrough就可以使用。

IPv6 支持姿势

如果你所在学校可以通过上述任意一种方法正常使用IPv6,那很好,这篇文章就不用再看啦。(当然你也可以来感受一下这个姿势,说不定也想试试呢 )。但是,凡事就怕但是,如果上面的姿势都不管用,那么或许这篇文章就能帮到你啦。

我所在学校宿舍的校园网用了一种叫做DHCPv6的姿势来给大家分配校园网,而且还只给每一个客户端分配一个IP,天啊,IPv6那么多地址,为什么只给一个!于是就悲剧了,路由器自带的IPv6选项在我的网络情况下都不可用。那么第一步就是确定你的网络环境是什么。最简单的方法就是打开你的网络设置,如果你发现你的IPv6前缀是128位,又或者如果你发现路由器自带的IPv6选项在你的网络环境中都用不了,那么就很有可能是跟我一样的网络环境了。

IPv6 信息

在这种网络环境下,除了NAT这样比较不符合IPv6精神的做法之外,唯一可用的就是桥接模式。也就是让路由器在IPv6网络上像一台交换机一样工作,这样就能无缝接入校园网IPv6啦。网上有很多配置桥接模式的方法,AC86U也十分简单,通过ssh(关于如何ssh站内已经有很多文章介绍了,我就不重复说明啦)登陆到路由器上,在/jffs/scripts/wan-start脚本中添加下面两行命令就可以轻松搞定~

ebtables -t broute -A BROUTING -i eth0 -p ! ipv6 -j DROP

brctl addif br0 eth0

重启路由之后就可以开心的使用IPv6啦!但是!这个时候路由器就没办法获取IPv6了,如果你的小火箭,你的NAS只有IPv6地址,又想在路由器上用,就很尴尬了,所以需要有一个特殊姿势让路由器在桥接模式下也获取到IPv6。由于之前在学校只学过理论知识,只知道理论可行,但是对实现不了解。恰好因为华硕路由器使用了openwrt,由于开源协议的限制,华硕自己的固件也要开源(所以才有了梅林),这样一来就可以通过围观固件源码的方法搞定这件事情了!下面就以AC86U为对象,介绍怎么在开启IPv6桥接模式的情况下为路由器获取IPv6地址。

首先要做一些准备工作:

将路由器的 IPv6 设置为 passthrough。然后通过 ssh 登陆路由器,运行下面这行命令

 ps | grep odhcp6c

你应该会看到有类似这样一行输出

 odhcp6c -df -R -s /tmp/dhcp6c -N try -c 000300010123d231c3a3 -r23 -r24 -r82 -r83 br0

其中有一串字符 000300010123d231c3a3,这串字符是你的设备ID,记下来这串字符,稍后要用到。

然后关闭路由器的IPv6功能。复制下面这一大长串脚本到你的/jffs/scripts/wan-start脚本中,一定要记得把最后一行的设备ID替换成你在准备工作里面获取到的ID,保存!重启!你会发现路由器自己也获取到IPv6地址了,LAN里的设备也正常获取到了IPv6地址!

#!/bin/sh 

 # IPv6 bridge
 ebtables -t broute -A BROUTING -i eth0 -p ! ipv6 -j DROP
 brctl addif br0 eth0
 
 # enable IPv6 on eth0
 echo 0 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6
 echo 2 > /proc/sys/net/ipv6/conf/eth0/accept_dad
 echo 2 > /proc/sys/net/ipv6/conf/eth0/dad_transmits
 echo 1 > /proc/sys/net/ipv6/conf/eth0/accept_ra
 echo 0 > /proc/sys/net/ipv6/conf/eth0/forwarding
 # see lan.c config_ipv6
 echo 0 > /proc/sys/net/ipv6/conf/br0/disable_ipv6
 echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
 echo 0 > /proc/sys/net/ipv6/conf/default/disable_ipv6
 echo 2 > /proc/sys/net/ipv6/conf/br0/accept_dad
 echo 2 > /proc/sys/net/ipv6/conf/br0/dad_transmits
 # set_default_accept_ra
 echo 1 > /proc/sys/net/ipv6/conf/all/accept_ra
 echo 1 > /proc/sys/net/ipv6/conf/default/accept_ra
 echo 0 > /proc/sys/net/ipv6/conf/all/forwarding
 # Allow router get IPv6 Address
 # When user disable IPv6, system will set ip6tables ALL policy to DROP
 # wait after that, then set our firewall
 sleep 10
 # set up firewall
 ip6tables -P INPUT ACCEPT
 ip6tables -P OUTPUT ACCEPT
 
 ip6tables -A OUTPUT -p tcp -j ACCEPT
 ip6tables -A OUTPUT -p udp -j ACCEPT
 # input rules
 ip6tables -A INPUT -p ipv6-crypt -j ACCEPT
 ip6tables -A INPUT -p ipv6-auth -j ACCEPT
 ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 ip6tables -A INPUT -m state --state NEW -j ACCEPT
 ip6tables -A INPUT -m state --state INVALID -j DROP
 # allow DHCPv6
 ip6tables -A INPUT -p udp --sport 547 --dport 546 -j ACCEPT
 ip6tables -A INPUT -p udp --sport 500 --dport 500 -j ACCEPT
 ip6tables -A INPUT -p udp --sport 4500 --dport 4500 -j ACCEPT
 # allow ipv6-icmp related packet
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type router-solicitation -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type packet-too-big -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type time-exceeded -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type parameter-problem -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type echo-request -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type echo-reply -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 130 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 131 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 132 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type router-solicitation -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type router-advertisement -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type neighbour-solicitation -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type neighbour-advertisement -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 141 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 142 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 143 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 148 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 149 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 151 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 152 -j ACCEPT
 ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 153 -j ACCEPT
 ip6tables -A INPUT -j DROP
 
 # Start DHCPv6 for LAN on br0
 # In my enviroment, IPv6 address spwan from a DHCPv6 server
 odhcp6c -df -R -s /tmp/dhcp6c -N try -c 你的设备ID -r23 -r24 -r82 -r83 br0

张大妈没有贴代码的选项,大家凑合看吧 。

查看该摘要的原文,请点击《一波三折的校园网IP...》

相关摘要

相关好价推荐

查看全部推荐

相关好文推荐

查看全部推荐

商品百科

当前为触屏版
热门搜索