校园网环境配置 OpenWRT 路由器作为 IPv6 网关(XJTU限定)

为了用 IPv6 访问一些机器学习的相关教程,最近又搞了一下路由器!

准备工作:

  1. 支持刷固件的路由器;
  2. 能够正常访问的镜像源;
  3. WinSCP(官网下载即可)
  4. 能连 SSH 的东西(推荐使用 PuTTY 本人使用 Linux 子系统,别问为什么!)
  5. 良好的心态;
  6. 这篇教程。

下载对应版本的 OpenWRT 固件(我用的是潘多拉17.09)刷路由器系统,完成后按以下方法配置(文章内部代码已经按照当前校园网络环境 (XJTU) 进行修改,可以无视相关解释直接将其复制到相应目录)

路由器刷机

此部分参考各厂商相应教程,不过听说有一个叫 breed 的固件,刷了以后好像路由器就不容易变砖了!

更改路由器的默认镜像源以及准备工作

使用 SSH 连接路由器,默认情况下为:

# SSH
ssh [email protected]

密码为admin,如果弹出一个潘多拉的界面,就说明连上了!

使用 WinSCP 访问路由器路径/etc/opkg按如下形式修改文件distfeeds.conf

# WinSCP
src/gz 17.09_core http://pandorabox.leoslion.top/pandorabox/17.09/targets/ralink/mt7620/packages
src/gz 17.09_base http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/base
src/gz 17.09_lafite http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/lafite
src/gz 17.09_luci http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/luci
src/gz 17.09_mtkdrv http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/mtkdrv
src/gz 17.09_newifi http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/newifi
src/gz 17.09_packages http://pandorabox.leoslion.top/pandorabox/17.09/packages/mipsel_24kec_dsp/packages

顺便一提,WinSCP 可以直接启动 PuTTY !还蛮好用的!

OpenWRT 路由器作为 IPv6 网关的配置

OpenWRT 是一种嵌入式 Linux 操作系统,广泛应用于家用路由器/网关。本文将介绍几种在清华校园网中,使用 OpenWRT 路由器为接入设备提供 IPv6 服务的配置方法。本文内容综合有多位贡献者,如有疑问、建议,可以参与内容讨论。

IPv6 NAT

虽然 IETF 的设计中,IPv6 不再有 NAT (网络地址转换), 但 Linux 内核从 3.7 版本开始实现了 IPv6 的 NAT。早年也曾有过 NAT66 等非官方项目,但缺乏维护,目前已经不再推荐使用。OpenWRT IPv6 NAT 配置部分,由 @Blaok 贡献。

零: 检查内核模块和有用的软件包

# SSH
opkg install ip6tables kmod-ipv6 kmod-ipt-nat6
opkg install kmod-ip6tables kmod-ip6tables-extra
opkg install luci-proto-ipv6 iputils-traceroute6

kmod开头的内核模块一般无法通过 opkg 直接安装,其他软件包虽然可以通过opkg install直接安装,但会多占路由器存储空间,推荐在编译固件时就将这些软件包都放入固件

上述软件包除kmod-ipv6外并非必须。kmod-ipt-nat6提供IPv6 NAT支持,ip6tables kmod-ip6tables kmod-ip6tables-extra等提供 IPv6 防火墙,luci-proto-ipv6为 LuCI 提供 IPv6 设置选项,iputils-traceroute6为 IPv6 提供 traceroute 功能(mtr是个不错的支持双栈的traceroute替代品,如果路由器存储空间够大的话)

总之安装 ip6tables 和 kmod-ipt-nat6。

# SSH
opkg update
opkg install ip6tables
opkg install kmod-ipt-nat6

壹: 打开 OpenWRT IPv6 私网地址分配

OpenWRT 默认会分配 IPv6 私网地址,在Network->Interfaces页面底下有个Global network optionsIPv6 ULA-Prefix这里应该有一个随机的fd开头的/64地址,LAN客户端应该能自动获得这个地址范围内的 IPv6 地址,DHCPv6 和 SLAAC 默认都开了

为了让 OpenWRT 后面的设备始终能够获得 IPv6 网关,需要在Network->Interfaces->LAN下方的DHCP Server部分的IPv6 Settings部分,勾选Always announce default router。否则,由于默认分配的是私网地址,OpenWRT 不会向下游设备公布 IPv6 默认路由(即网关),可能导致路由器上 IPv6 连通但下游设备不通的情况 (感谢@terro提醒)

使用 WinSCP 更改/etc/config/network文件内容,在config globals 'globals'修改(添加)以下内容:

option ula_prefix 'AAAA:BBBB:CCCC:DDDD::/64'

更改/etc/config/network文件内容,在config interface 'wan'修改(添加)以下内容:

option peerdns '0'
option dns '2001:4860:4860::8844 2001:4860:4860::8888'

更改/etc/config/dhcp文件内容,将config dhcp 'lan'那一栏改为以下内容:

config dhcp 'lan'
    option interface 'lan'
    option start '100'
    option limit '150'
    option leasetime '12h'
    option dhcpv6 'server'
    option ra 'server'
    option ra_management '1'
    option ra_default '1'

贰: 打开 IPv6 NAT

客户端有了正确的地址以后,需要在路由器上打开 IPv6 NAT。OpenWRT 默认的防火墙配置不会管 IPv6 的 NAT 表,可以在/etc/firewall.user里面加上

# WinSCP
WAN6=pppoe-wan
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

WAN6 和 LAN 分别改成外网 IPv6 和内网网卡 ( interface ) 的名字,注意不是防火墙区域 ( zone ) 的名字,也不是 LuCI 里面Network->Interfaces里面看到的名字,而是ifconfig看到的名字

叁: 正确配置网关

在路由器上ip -6 route看一下自己的默认网关。如果获得的是

default from 2001:250:x:x::/64 via fe80::x:x:x:x dev eth0  proto static  metric 512

这样坑爹的网关,在转发 NAT 包的时候会有问题,需要把去掉from 2402:f000:x:x::/64这一部分的以后的默认路由添加到路由表中。可以新建一个/etc/hotplug.d/iface/99-ipv6,它的内容是

# WinSCP
#!/bin/sh
[ "$ACTION" = ifup ] || exit 0
iface=wan
[ -z "$iface" -o "$INTERFACE" = "$iface" ] || exit 0
ip -6 route add `ip -6 route show default|sed -e 's/from [^ ]* //'`
logger -t IPv6 "Add IPv6 default route."

这里iface是 LuCI 里面Network->Interfaces里面看到的名字,一般叫 wan6 。这个脚本的意思是在 wan6 起来以后读取默认网关,把带 from 的内容去掉,再加到系统路由表里。记得

# SSH
chmod +x /etc/hotplug.d/iface/99-ipv6

参考资料:
在 OpenWrt 上配置原生 IPv6 NAT
OpenWRT 路由器作为 IPv6 网关的配置
可以正常访问的镜像源

你可能感兴趣的:(校园网环境配置 OpenWRT 路由器作为 IPv6 网关(XJTU限定))