研一和研二由于有张无限流量的校园联通卡,因此一直没在乎上网的事情。研三最后半个学期没有流量真是难受的要死。东北大学校园网ipv6出口免流量,家里移动的网络有ipv6,有几回放假回家都想着配好了能在学校用,以前没动力,也就没怎么仔细研究,到毕业了都没搞出来。最后一个学期用着vps的ipv6代理,因为海外ip,视频网站还不能看,网速还不肯定,憋屈。html
此次毕业了在家没事干,却是把ipv6配出来了。。。记录一下本身踩的坑吧,其实就一层窗户纸,哎。git
0.验证网络是否有ipv6
我家的网络环境,光纤入户,破解了光猫,由路由器进行pppoe拨号。因为路由器通常都没有配置ipv6,因此没法获取ipv6地址。github
建议测试时,直接将光猫链接电脑,而后配置pppoe拨号。打开http://test-ipv6.com/测试是否能够访问ipv6。肯定能够访问以后,下一步配置路由器。shell
1.配置padavan路由器访问ipv6
参考内容不少,放一个最近配置时看到的。api
H大Padavan固件中NAPT66模块的使用方法【适用于教育网原生IPv6】(20190131更新)安全
这里我再转述一遍。网络
这里是使用NAPT66模块,我家的newifi mini的固件自带这个插件,OpenWrt可能须要安装,安装能够参考这个连接Padavan/Openwrt/LEDE下实现ipv6 nat/napt66ssh
在肯定拥有NAPT66模块的Padavan固件下:性能
1)修改外部网络(WAN)中的Ipv6设置测试
配置例子以下,配置成功后,在网络地图->外部网络状态的”Ipv6地址 WAN”中就能够看到ipv6地址,这个时候路由器已经能够访问ipv6了,可是局域网尚未分配ipv6地址
2)在“在防火墙规则 (Emong's Qos) 启动后执行”脚本中添加以下脚本:
### NAPT66 所须要的防火墙政策 ip6tables -F ip6tables -P INPUT ACCEPT ip6tables -P FORWARD ACCEPT ip6tables -P OUTPUT ACCEPT
3)进入“自定义设置 - 脚本”中“路由器启动后执行”脚本中添加以下脚本:
### 启动 NAPT66 模块 insmod /lib/modules/$(uname -r)/kernel/net/napt66/napt66.ko wan_if=ppp0
**注意!**上面的wan_if后面的参数,原帖子给的是eth0.2,就是由于这个我被坑了这么久,没配置正确。这里须要本身肯定具体的参数。肯定的方式很简单,登陆ssh,输入ifconfig,看是哪一个网络获取了ipv6地址。
例如我这里,能够看出是ppp0获取到的ipv6地址,因此设置为ppp0:
ppp0 Link encap:Point-to-Point Protocol inet addr:10.***.****.180 P-t-P:10.253.64.1 Mask:255.255.255.255 inet6 addr: 2409:8a44:****:3b:****:8ebc:****:a7f8/64 Scope:Global inet6 addr: fe80::****:****:****:a7f8/10 Scope:Link UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:3808279 errors:0 dropped:0 overruns:0 frame:0 TX packets:4144880 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:3205203030 (2.9 GiB) TX bytes:757281553 (722.1 MiB)
4)重启路由器,重启计算机网络
2.配置小米r2d获取ipv6网络
回家以后在拼多多又淘了个小米路由器r2d,自带1t硬盘,cpu双核A9+256RAM+512ROM,性能能够,才272块。虽然最后确认是官翻,并且硬盘通电3000+小时,还行吧,这么便宜要啥自行车,带1年保修。
小米的路由器自己没法配置ipv6,因此继续研究。
2.1 开启ssh
配置ipv6须要开启ssh,而小米官方渠道开启ssh会失去保修,这里提供小米r2d非官方开启ssh的方法。
参考:升级小米路由器3 SSH
须要旧版的开发版固件,brcm4709_r2d_all_2.8.14.bin
1)手动升级,选择旧版固件。
2)进入192.168.31.1,并登陆,登陆后在地址栏会有stok,记录,用来替换下面网址中的stok,替换stok后陆续在地址栏执行如下4条(注意每次执行要等待指令执行完成后,即页面打开状态的小圆圈转完)。
http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登陆路由器管理界面在地址栏能够看到】/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bnvram%20set%20ssh%5Fen%3D1%3B%20nvram%20commit http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登陆路由器管理界面在地址栏能够看到】/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3Bsed%20%2Di%20%22%3Ax%3AN%3As%2Fif%20%5C%5B%2E%2A%5C%3B%20then%5Cn%2E%2Areturn%200%5Cn%2E%2Afi%2F%23tb%2F%3Bb%20x%22%20%2Fetc%2Finit.d%2Fdropbear http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登陆路由器管理界面在地址栏能够看到】/api/xqnetwork/set_wifi_ap?ssid=tianbao&encryption=NONE&enctype=NONE&channel=1%3B%2Fetc%2Finit.d%2Fdropbear%20start http://192.168.31.1/cgi-bin/luci/;stok=【你的stok,登陆路由器管理界面在地址栏能够看到】/api/xqsystem/set_name_password?oldPwd=路由器管理密码&newPwd=路由器管理密码
前三个URL返回的相关错误代码是:
{ "msg": "未能链接到指定WiFi(Probe timeout)", "code": 1616 }
最后一个是root ssh登陆小米路由器的密码设置,所以,只有返回以下,才能说明ssh破解正常:
{ "code": 0 }
3)测试ssh
成功开启ssh后,使用powershell、putty或者你熟悉的ssh客户端,输入下面指令,若是开启ssh成功,输入密码便可登陆路由器。
ssh root@192.168.31.1
若是开启失败,会被拒绝访问,相似下面的提示
ssh: connect to host localhost port 22: Connection refused
开启ssh成功后,能够直接在线升级最新版的固件,ssh权限不会被关闭。
2.2 开启ipv6
这部分基本照搬下面的参考连接,我也没有遇到什么坑
参考:小米路由的IPv6支持教程(Update: 19/03/04)
1)外部网络(WAN)获取ipv6
替换路由器文件 /etc/config/ipv6 为
config ipv6 'settings' list if_on 'wan' option enabled '1' list if_on 'ipv6' option enabled '1'
重启路由器,经过两种方法判断路由器是否获取到ipv6地址。
- ifconfig判断是否获取到ipv6网址
- 经过下面的指令判断路由器是否得到ipv6地址
ping6 ipv6.tsinghua.edu.cn
2)局部网络(LAN)获取ipv6
小米路由事实上已经实现了大多数的 IPv6 支持,然而因为固件版本过低,惟独 NDP 在光猫路由情形下没法正常工做,须要额外可执行文件来帮忙。
6relayd 能够做为合适的 NDP 中继。其实 6relayd 功能还有不少,更有 odhcpd 做为更丰富的继承者。然而这两个组件官方均未提供使用,因而运用小米提供的 SDK 自行编译了 6relayd
下载:6relayd
将 6relayd 文件放入/sbin/并使其可执行。因为该文件夹默认只读,先在 SSH 中输入如下命令解锁:
mount -o remount rw /
以后,用以前推荐的软件经过 SCP 把文件放入上述文件夹。并授予其可执行权限:
chmod +x /sbin/6relayd
此时,在SSH中执行“6relayd”应该会显示程序的帮助信息。 在本案例中,输入以下命令:
6relayd -N eth0.2 br-lan &
重启局域网中的计算机后,再经过网站验证 IPv6,应当会经过验证。
走到这一步,说明所有的技术路线已经打通。为了让 6relayd 可以在路由器重启后自动执行,将其附加在开机自动执行的脚本上。以 /etc/init.d/plugin_start_.sh 为例,加入的方式以下:
netmode=$(uci get xiaoqiang.common.NETMODE) if [ "$netmode"x != "lanapmode"x ] && [ "$netmode"x != "wifiapmode"x ] then copy_plugin_chroot_file sync # decrese current priority and throw myself to mem cgroup # so all plugins inherit those attributes renice -n+10 -p $ echo $ > /dev/cgroup/mem/group1/tasks /usr/sbin/plugin_start_impl.sh & 6relayd -d -N eth0.2 br-lan fi
重启路由器后,路由器下属设备应当自动得到正常的 IPv6 链接,这样的话就大功告成了。
3)对外网暴露的支持
若是本地计算机已经能够经过 IPv6 测试、能够访问 IPv6 网站,但外网经过 IPv6 没法访问本机,首先是由于 openwrt 默认阻挡全部外网主动发起 IPv6 链接。小米路由自带 IPv6 防火墙 ip6tables,为了肯定问题,能够用如下命令使该防火墙放行全部数据:
ip6tables -F ip6tables -P INPUT ACCEPT ip6tables -P FORWARD ACCEPT
须要注意的是,这样会下降内网设备的安全性。建议自行研究和配置 ip6tables,对放行进行严格的约束。肯定规则后,能够模仿以前思路将其设为开机启动。 另外,不要忽略本地计算机操做系统的防火墙。例如 Windows 防火墙默认阻挡 ICMP。在此配置下,外网 ping 本机 IPv6 是没有答复的。
3.结语
至此,个人两个路由器均可以获取ipv6地址,因为移动的ipv4没有公网ip,bt下载很不方便,配置ipv6以后就拥有公网ip了。
惟一踩的坑就是wan_if这个参数了,教训就是之后用别人教程的时候,若是无论用,能够先考虑参数是否和原做者有区别,尝试修改一下。