在GitHub上有个基于OpenWrt的开源闪讯项目,通过这个项目可以为pppd添加一个加密用户名的插件,使得路由器可以根据时间随机数动态生成用于拨号的真实用户名。

  首先得准备好编译环境,64位的Ubuntu系统(OpenWrt官网上的交叉编译工具不支持32位系统),建议去英文的Ubuntu官网下载长发行版本。

 
安装编译必要的软件包

 
apt-get update
apt-get upgrade -y
apt-get install -y g++ libncurses5-dev zlib1g-dev bison flex unzip autoconf gawk make gettext gcc binutils patch bzip2 libz-dev asciidoc subversion sphinxsearch libtool sphinx-common git wget

  在OpenWrt官网下载对应自己路由器CPU型号及OpenWrt系统版本的交叉编译工具,CPU型号可以在OpenWrt Wiki上查找(例如本人用的NETGEAT WNDR3800),使用的是CC 15.05版本的OpenWRT,便可以在https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/nand/OpenWrt-SDK-15.05-ar71xx-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2下载对应的交叉编译工具。

wget https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/nand/OpenWrt-SDK-15.05-ar71xx-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2

tar -xjvf OpenWrt-SDK-15.05-ar71xx-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2

mv OpenWrt-SDK-15.05-ar71xx-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64 sdk

 
下载上述项目的源代码

git clone --depth=1 https://github.com/miao1007/Openwrt-NetKeeper.git

 
编辑src目录下的makefile文件

      #这里填写sdk套件中交叉编译工具的路径
5     LOCATION=/openwrt/sdk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2

7     CC=$(LOCATION)/bin/mips-openwrt-linux-gcc

      #这里填写OpenWrt系统所使用的pppd版本号
9     PPPD_VER=2.4.7

      #这里仅留下自己地区的参数,不同地区radius不同
35    all:hangzhou_sxplugin

 
执行编译

make all
mv hangzhou_sxplugin.so sxplugin.so

  这时文件夹内生成的.so文件就可以用于拨号了,如果你使用的同样是WNDR3800路由器,并且使用CC 15.05版本系统可以直接使用我编译好的.so文件,点我下载

  将sxplugin.so上传到路由器的/usr/lib/pppd/2.4.7/下,并且在/etc/config/network的wan下追加option pppd_options ‘plugin sxplugin.so’,或执行以下代码,之后便可以使用路由器进行PPPoE连接了。

uci set network.wan.pppd_options='plugin chongqing_sxplugin.so'