北邮校内总共有两种方法可以实现
两个方法都有自己的优劣,自行抉择。
设备 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太强了