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

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

准备工作:

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

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

路由器刷机

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

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

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

# SSH
ssh root@192.168.1.1

密码为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 网关的配置
可以正常访问的镜像源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容