北邮校内总共有两种方法可以实现
两个方法都有自己的优劣,自行抉择。
设备 NeWIFI 3(D2) Openwrt base system.
网络环境:ipv6 不需要登陆,ipv4 需要。学校网关代拨,不需要自行pppoe。
方法1. IPV4 NAT + IPV6 Bridge
原理
- 路由器NAT处理ipv4数据包
- 对于ipv6,直接从wan6对应的device 转发到 br-lan
优劣势:
– 非常稳定,不会出bug
– 路由器没有v6,无法挂PT(byr pt)
代码
实现这个原理需要
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i apclii0
brctl addif br-lan apclii0
解释下,由于沙邮为全WiFi,所以我选择使用我的 5G网卡作为一个Client连接到学校的AP上。这个wireless connection的名字就是你要连的wifi的SSID。
创建方式:
纯WIFI用户
网络.无线.扫描
选择后点击加入网络
新的网络名称(随意,我用wwan)
选择防火墙区域**wan**
截至这一步,你完成IPV4 NAT。下一步:
网络.接口
把最下面的 IPv6 ULA前缀 里的地址删干净
保存并应用
添加新接口
新接口名称(随意,我用wwan6)
协议,dhcpv6客户端
无线网络选择你的待桥接SSID
提交
截至这一步,你完成了路由器ipv6的获取,如果你没获取就完蛋啦,不对,你就没法上ipv6了。
在这里你可能遇见你的5G网卡不能同时创建AP和Client,那就是网卡不支持或者固件垃圾,建议更换固件(例如使用原厂驱动的Pandorabox)
有线用户
你的wan6应该直接是好的。不需要任何操作。否则你就无法获取ipv6。
代码应用:
- 无线用户部分
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i apclii0
brctl addif br-lan apclii0
apclii0是你的无线网卡在wan上的链接,这个一般固件不同而不同,可以通过ssh到路由器上ifconfig看,一般有类似数据的就是你的无线网卡。而br-lan就是你的LAN域(WIFI AP + LAN)。
apclii0 Link encap:Ethernet HWaddr 22:76:XX:43:XX:AC
inet addr:10.122.232.XX Bcast:10.122.255.255 Mask:255.255.192.0
inet6 addr: 2001:da8:215:8f01:XXXX:XXff:fXX3:6XXc/64 Scope:Global
inet6 addr: fe80::2076:XXff:fXX3:6XXc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:319321 errors:0 dropped:0 overruns:0 frame:0
TX packets:237847 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
- 有线用户部分
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i eth0.2
brctl addif br-lan eth0.2
这个eth0.2的找法和apclii0一样
- 通用部分
但是每次重启后你的操作就会消失,所以我们要把它放到/etc/rc.local中去(rc.local自己补知识),但由于这个操作在系统刚启动,WiFi初始化没完成的时候操作,会产生Unexpected Bugs,所以我们要等启动完了再操作。但是由于rc.local是阻塞的,所以我们要将这段代码放到脚本里后台执行,启动时如果rc.local产生了输出也会产生bug,所以我们这么做:- 在/etc/config目录(关机不清空)下新建boot.sh
- 内容如下,sleep 20(睡眠20秒)用来保证WiFi已经连接
#!/bin/sh
sleep 20
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP -i apclii0
brctl addif br-lan apclii0
- chmod +x boot.sh(执行权限)
- 编辑 /etc/rc.local,在exit 0前加入
/etc/config/boot.sh > /dev/null 2>&1 &
- 后半部分原理自行百度
避免odhcpd 分配ipv6与桥接冲突
/etc/init.d/odhcpd stop
/etc/init.d/odhcpd disable
重启并检测
方法2. IPV4 NAT + IPV6 Delay
原理
- 路由器NAT处理ipv4数据包
- 对于ipv6,进行中继。
- 校园v6使用SLAAC模式发布,所以进行ndp relay,由于我并未仔细研究,不再做讲解避免误导
优劣势
- 不稳定,usually has bug
- 路由器有v6,可以挂PT
创建方式
准备工作:
直到创建了wwan6(wifi用户),或者你本来就有wan6(有线用户)
这里进行一个定义,将wwan6或wan6定义为net_interface_6,方便后面处理
熟练使用ssh
代码应用:
通用
将/etc/config/dhcp部分代码修改如下
config dhcp 'lan'
option interface 'lan'
……(省略)
option ndp 'relay'
option ra 'relay'
config dhcp 'net_interface_6'
option interface 'net_interface_6'
#option ignore '1' (注释掉这行)
option ndp 'relay'
option ra 'relay'
option master '1'
同时再如下操作:
所以还需要给lan口增加你所在网段的路由:
route -A inet6 add 2001:da8:201:xxxx::/64 dev br-lan
或者用:
iproute2:ip -6 r a 2001:da8:201:xxxx::/64 dev br-lan
最后重启生效:
如果有service/systemctl
service network restart
service odhcpd restart
没有则
/etc/init.d/network restart
/etc/init.d/odhcpd restart
参考文章
1.OpenWRT IPv6 三种配置方式(NEED OVER WALL)
2.OpenWRT 设置 IPv6 的问题
沙发,Maki太强了