在drcom认证网络中使用路由器

先在最前面放出drcom配置文件,校友可以在这里找:http://my.loli.cam/磁盘2/文档资料/drcom拨号


fèihuà

自从上学期开始使用校园网以来感到诸多不便,最主要有三点:

  • 一个帐号限制一个终端。
  • 校园网的无线路由器质量太差经常丢包。
  • 用路由器连接校园网、再在路由器下用终端设备登陆是不行的,必须是校园网10.*.*.*的ip才能通过认证客户端(软件)登录校园网。

作为一个正在学习前端的萌新,chrome dev tools自带的工具不足以满足多设备测试的需求,需要用到实际硬件测试。也就是说,我需要把好几个设备连接到网络,而这与我校校园网“只能连接一个终端”的规定冲突。

上个学期我用手机连接校园网,USB共享给电脑,然后再从电脑建立无线热点的方式勉强过渡。但网络质量始终没有路由器好,经常出现掉线、丢包的情况。

有了一个学期使用坑爹校园网的经历,我总结出了以下几点:

  • 限制路由器登陆的机制存在于认证客户端,而不在校园网地址分发设备
  • 以client-master方式使多个终端连接到网络是可行的
  • 我校的认证客户端带有心跳包

于是这个学期开学提前了几天过来,解决掉了这个问题,写出来给大家参考参考。

请注意,这篇文章的受众不是小白,而是有一定Linux基础的人--如果你从来没有用过Linux,从现在开始试试吧!这不是手把手输命令的教程,而是某类设备的安装流程参考,希望对你有所帮助。


准备工作:

  1. 一个性能够用,可以安装openwrt的路由器并支持usb挂载,这样安装软件才不用顾忌磁盘空间不足。
  2. 一个大于8G容量的U盘,质量要好,OpenWRT将安装到U盘上。可以直接把/overlay挂载到U盘,这样比较稳,就算U盘出问题也能通过路由器flash里的固件启动,不会变砖。
  3. 网线两根,长度自己量。
  4. 一部安装了sftp客户端、wireshark和python 2.x的电脑。linux和windows均可,但推荐linux,win下还需要加装putty。顺便一提,我使用的是debian。
  5. 一旦变砖,请购买一根合适的TTL线,若干杜邦线(六根以上),熟悉你买的路由器的拆机方法,并能够熟练地锡焊。
  6. 一旦变砖,你需要熟悉SecureCRT软件的操作和TTL刷机的原理。

进入正题:

先将OpenWRT安装到路由器的U盘里,不同型号有不同的操作,只要你的型号在OpenWRT的设备支持列表里,网上就能找到相应的刷机方法,这点不用担心。将固件接刷入路由器后,安装下面三个软件包,分别是挂载点app、ext4文件系统支持和usb驱动。然后在路由器Web管理界面的挂载点(mount point)选项将外置储存挂载到/overlay,或者自行修改磁盘分区定义文件来挂载/etc/config/fstab。如果选择用后者操作,务必通过磁盘uuid来挂载。

opkg update
opkg install block-mount kmod-fs-ext4 kmod-usb-storage

在操作过程中,你需要把路由器看作是一个弱性能的服务器,又或者看成与家用主机架构不同的主机,本质上它就是一台接不了显示器的多网卡主机。再说OpenWRT,它实质上是一个嵌入式Linux系统,部分路由器厂商会基于系统此开发他们的路由器界面。我们要安装的是原始的OpenWRT。

在经过与路由器和搜索引擎的艰苦斗争后,你终于装上了OpenWRT,这样我们就可以进入正题了。

  1. 开启OpenWRT的ssh,网上教程一大把。
  2. 将路由器连接到网络。如果没有有线网络,那就去luci里面用无线连接。我们需要用网络来安装vsftpd、python。其中vsftpd用于建立sftp和ftp服务,python是校园网认证客户端的运行环境。如果磁盘空间空余很多,还可以安装wget、git等工具。
  3. 在电脑上按照drcom-generic这个项目的wiki操作。
  4. 按照wiki操作之后,你可以往crontab中增加一条命令用于断网后自动重连:
    */1 * * * * drcom &
  5. 用路由器连接到校园网,然后愉快地上网吧!

(此处我做过修改,只作为演示)


其它问题:

如果我要在学校其他地方上网,那岂不是会顶掉路由器的账号?而路由器又运行了每一分钟登陆一次的脚本,岂不是又会顶掉刚刚连接上的设备?

这里有两个解决方法:

  1. 宿舍里只有你一个人用这个路由器 → 出门前拔下路由器
  2. 和室友一起用 → 首先确认局域网内没有设备隔离,即局域网内任意设备可以互连任意端口,然后在路由器上搭建代理服务器。可选的方案有openvpn、shadowsocks和v2ray,我推荐用shadowsocks,因为编译好的包一大把,配置还简单。

首先在路由器上安装ddns

opkg install luci-app-ddns

然后配置ddns服务。推荐用3322.org。ip地址来源选择网络、网络选择wan,这样你的域名会解析到内网ip,配置好后启动服务。

第二步安装shadowsocks,网上教程多得是。写好配置文件并启动ssserver后,就能通过shadowsocks客户端全局代理上网了。shadowsocks的服务器地址填写为上面申请到的动态DNS地址,一般认证网络不会禁用DNS,所以即使没有认证也能解析。

至此,大致流程已经讲完,有疑惑可以在评论里提出来,反正我也不一定会回答

5 条评论

发表评论

*

  • Google Chrome Google Chrome Android Android

    再次补充,如果需要定时重启路由器,请务必在crontab里加上一分钟以上的sleep!否则可能导致无限循环重启!
    例如,一般crontab定时重启这样写
    0 21 * * * sync && reboot
    但由于路由器内部没有时钟,每次开机时时间都与上次关机时相同,只有在连接网络后才能自动更新。所以设置延时一分钟以上,可避免无限重启。即设置样例为:
    0 21 * * * sync && sleep 60 && reboot
    其中sync命令用于防止正在写入磁盘时直接重启而损坏文件,&&为逻辑与顺序执行,当上一句命令执行成功后,下一句才继续执行。
    定时关机同理。

  • Google Chrome Google Chrome Android Android

    漏讲了一个注意事项,如果不打算使用ipv6,请关闭它。
    首先关闭并停用odhcpd
    /etc/init.d/odhcpd disable
    /etc/init.d/odhcpd stop
    然后编辑配置文件
    vim /etc/sysctl.conf
    在里面新增一行
    net.ipv6.conf.all.disable_ipv6=1
    保存后执行命令
    sysctl -p /etc/sysctl.conf
    即可关闭wan口和lan口的ipv6功能

    • Google Chrome Google Chrome Android Android

      TIPS:错误地配置了无法连接的ipv6会导致DNS解析到IPV6地址从而出现解析速度慢或者无法解析的问题。所以要么根据网络环境配置好可以访问网络的ipv6,要么禁用它。

    • Google Chrome Google Chrome Android Android

      若禁用ipv6后仍然有无法解析之类的DNS问题:
      1.如果安装了梯子客户端,ssh到路由器用top命令查看是否多开了ss客户端,多开的话就kill掉多余的,只留一个。
      2.如果没有,检查下路由器的DNS转发配置是否正确。