Saber 酱的抱枕

Fly me to the moon

09/24
2018
其他 软件

MT7628AN折腾记录

之前说过要做ipv6 NAT的
https://saber.love/【算是转载】ipv6与路由器.html

 

于是看支持openwrt的路由器
翻了半天没有合心意的
突然发现有单片机啊
那么就了解了开发板
于是选定了Linkit Smart 7688
于是华丽地被店家无视了
于是买了个国产的MT7628AN开发板,16M+128M。3个网口(100M)带2.4GHz wifi。

(挑选它是出于各种原因。用openwrt 板 去搜的话还能找到更多便宜的货,比如 RT3352 ,AR9331的等等,会便宜很多。当然配置什么的会不一样)

(想玩千兆?斐讯K2P 2333,友华WR1200JS也许还行)(慢慢去openwrt的硬件列表翻啦)

 

 

厂家自带breed,不怕玩坏(防刷砖的)

自带openwrt15.05魔改版

 

 

 

我还是想试试最新的18.06.01
装了个Ubuntu(虚拟机)
采用image builder直接生成含我想要的包的固件(这样固件会比较小,也方便刷。不然每刷一次都重新安装包……)
(如何使用直接参考openwrt官方教程https://openwrt.org/docs/guide-user/additional-software/imagebuilder
会玩的可以直接走源码编译,我就不弄了)
(下载包时可能会出现网络问题,自行解决。也可以用内地的镜像。但是注意版本。很多都是15的。)
选择内存/闪存/芯片一致的vocore2做target
至于加什么包,除了默认包,加上原来厂家自带的(opkg list-installed),再加上ipv6 NAT需要的(ip6tables kmod-ipt-nat6 kmod-ip6tables luci-proto-ipv6 iputils-traceroute6 kmod-br-netfilter)
)(还加了个sftp和luci(web界面))。因为有16M所以这点只是洒洒水啦。
(kmod-br-netfilter是我附加的。具体下面会提)(kmod-ipv6新内核已经自带了,所以不用)(kmod-ip6tables-extra我忘记加了……但可用)(还弄了个luci-app-commands,万一手贱防火墙/ssh设置玩坏了ssh连不进的话还有拯救的可能,也能方便一些设置。)
踢掉没有跟上更新的/冲突的几个包(比如某个odhcpd默认的包已经换成v6 only的了,不用装完整的)
成功生成固件。

 

进入breed备份原固件(如何进入breed?请参考开发板说明)
刷新新固件一次成功。

 

 

 

然后发现不明原因一个网口不工作
swconfig发现不知何故被disable了
不过仍然有一个wan一个lan。懒得管了。

 

 

 

然后进openwrt。因为有luci,有的操作简单点。(用vi好烦啊)不过还是有些必须要ssh的。putty了解一下,顺便了解一下WinSCP(吐槽下自己,有winscp这么适合我这种菜鸡的工具居然一直没想起来用)。另外现在win10也可以添加ssh组件了。

 

不过,在设置IPv6 NAT之前,首先要确保路由器已经获得了IPv6并能正常使用。首先确认interface那里有没有IPv6地址,然后去Network-Diagnostics里调成IPv6协议ping一下或者别的什么一下某些支持IPv6网站。小众如六维空间大众如qq首页之类的。如果这都不行你还得先处理这个问题,不然你设置了IPv6 NAT也没什么用的。怎么解决这个别处很多,这里不赘述了。

 

假设路由器IPv6访问正常。那么开始设置。
IPv6 NAT参考:http://www.right.com.cn/forum/thread-253712-1-1.html
https://github.com/tuna/ipv6.tsinghua.edu.cn/blob/master/openwrt.md
总的来说我是把上面两篇合起来做了。因为我不懂,怕麻烦,做的东西不完美,能用就好…………

 

 

首先按照第一篇里的进行设置(因为他提到了如何用luci设置)
包已经装好了不提。(目前18.09.29,18版的luci还没有汉化有汉化的。i18n)

然后走到防火墙设置的时候
转为按照第二篇的“贰: 打开 IPv6 NAT”进行设置,不过还是可以按照第一篇提的在luci里写
例:(记得自己确定eth0.2和br-lan是不是适合你的设备)
WAN6=eth0.2
LAN=br-lan
ip6tables -t nat -A POSTROUTING -o $WAN6 -j MASQUERADE
ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -A FORWARD -i $LAN -j ACCEPT

(ifconfig要用ssh啦)
(这里因为在对网桥操作,新的linux内核默认是关掉了。虽然不是很懂上面这个到底属不属于那个情况,为了避免麻烦因而增加了kmod-br-netfilter,然后,在
/etc/sysctl.conf
写:
net.bridge.bridge-nf-call-arptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
即可。
虽然原则上只要ip6tables那条就可以了吧?这里我没有深究原理,就这样吧……)

 

 

然后是最烦燥的地方
目前两个教程的最后一步添加网关这我都操作失败了。懒得深究原因了……
所以结合两个教程就成了这样:
每次重启后ssh连上,路由器拿到ipv6地址后,执行
ip -6 route add `ip -6 route show default|sed -e 's/from [^ ]* //'`
即可。(这个其实是第二篇最后一部分的提取,参考那边的讲解吧)
(我也不深究应该在哪里加才能正常的自动执行了)
或者
建立一个脚本写这句话
#!/bin/sh
ip -6 route add `ip -6 route show default|sed -e 's/from [^ ]* //'`
然后在Custom Commands里写一个直接执行这个脚本的设置,每次点下Run就好
(这个是luci-app-commands的功能)
(之所以不直接写是因为好像会抽风,大概是因为符号转换的问题吧)

终于成功的建立了大家都能用的IPv6网络。
旧的ASUS路由转ap模式,连上开发板lan口,自动获取ip就好了。(因为开发板只有2.4GHz的,而且不知道稳不稳定)(总觉得这样玩才是正道,弄个无所谓的路由做ap,弄个主路由刷固件玩,不怕非官方无线驱动优化不好)

 

 

唉。还是希望有DHCP-PD啊。这个才是正规的IPv6路由器使用方式。
好吧安慰下自己至少不会被v6公网的乱子波及到了2333

 

 

稳定运行一个月,不错
断断续续有断电什么的,最终累积了两个月了

就是luci确实很吃cpu233所以没事就不要登进去了

MT7628AN折腾记录

  1. locationiskey 文章作者
    Google Chrome 121Google Chrome 121WindowsWindows

    有时候LAN侧会分配两个ipv6地址,一个是正常传下来但我们不想要的,一个是自己定义的内网地址。
    可以通过设定
    ip6class: Filter for prefix classes to accept on this interface (e.g. wan6 - only assign prefix from the respective interface, local - only assign the ULA-prefix)
    来丢掉一个。例如我要的就是
    option ip6class 'local'

    回复
  2. locationiskey 文章作者
    Microsoft EdgeMicrosoft EdgeWindowsWindows

    很奇怪
    这个东西对某些网卡会出现丢失ipv6网关的问题。在电脑的适配器属性里手动设置即可解决
    刷了18.06.4也不行

    然而我宿舍那个就很正常。奇了怪

    回复