信息黄埔校园网ipv6路由处理
本文最后更新于 72 天前,其中的信息可能已经有所发展或是发生改变。

北邮校内总共有两种方法可以实现

两个方法都有自己的优劣,自行抉择。
设备 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 的问题

评论

  1. Sixar
    Windows Chrome 74.0.3729.131

    沙发,Maki太强了

    1年前
    2019-5-17 0:48:45

发送评论 编辑评论


				
上一篇
下一篇
%d 博主赞过: