OpenWRT

OpenWRT  

Featured,  Phase-Deploy,  路由器配置
Updated  Jan 31, 2013 by  wwqgtxx

TP-Link TL-MR3420 v1路由上运行WallProxy v2.1.x

  • 软硬件环境:本例中的路由是老款TP-Link TL-MR3420 v1改16M Flash,64M RAM,固件刷OpenWrt-dreambox,外挂4G U盘到根目录。其实跑WallProxy,16M Flash已经够了,但想跑更多软件,最好还是外挂上一个U盘,而且OpenWrt-dreambox的固件外挂U盘很方便。现在很多路由都比这款配置高,基本都有128M RAM,跑WallProxy肯定没问题。更多OpenWRT信息请到这里获取:https://openwrt.org,http://www.openwrt.org.cn。
  • 本例中路由配置如下:
  • U盘挂载情况:
  • 安装步骤:
    1. 在OpenWRT上安装libffi、python-mini、python、python-openssl、pyopenssl、libncurses、terminfo、screen。要在OpenWRT上跑gevent,必须首先自行编译OpenWRT的SDK环境,然后在SDK环境中编译greenlet、libevent2(一定要在gevent之前编译)和gevent。这里需要说明的是虽然我成功编译了gevent1.0rc2,但它却在OpenWRT中自动退出,最后只能放弃,转而编译gevent0.13.8,该版本可以在OpenWRT中流畅地运行不出任何问题。因为不同路由使用的CPU会不同,SDK环境也就会不同,而且初次建立SDK需要几个小时时间,所以我只能建适合自己路由使用的SDK,不过我在这里给出建立package所需要的Makefile,https://wallproxy.googlecode.com/files/sdk_mf.zip,自己动手去编译适合自己用的软件包吧。更多OpenWRT_SDK和OpenWRT软件包的信息,请参考这里:http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk和http://wiki.openwrt.org/doc/devel/packages。先给大家看看WallProxy的运行环境:
      • 由于python体积太大,需要路由外接u盘或移动硬盘才能安装。
      1. openwrt下格式化U盘,挂载U盘。op不能写ntfs格式的u盘,windows系统无法将u盘格式化为ext4格式。 在web管理界面的磁盘应用-磁盘信息下可以看到U盘已识别为 /dev/sda,但因为是ntfs(或者fat)格式好像无法挂载。先格式化U盘为ext4格式。代码:
        opkg install kmod-fs-ext3 (未测试是否必需)
        opkg install e2fsprogs (未测试是否必需)
        mkfs.ext4 /dev/sda (按 Y 确认)
      2. 回到web界面,在磁盘应用-磁盘信息下,复制uuid(双引号内内容)。磁盘应用-挂载点-挂载点,点“添加”,基本设置里,设备栏从下拉列表选择u盘,文件系统选择 ext4,在高级设置里填入uuid。然后保存应用。刷新。在已挂在的文件系统已经能看到 /mnt/sda1.
        • 状态如下:
         
      3. 将python安装到u盘。
        mkdir /mnt/sda1/packages/ (新建软件包目录)
        echo dest usb /mnt/sda1/packages/ >> /etc/opkg.conf (修改opgk配置文件)
        opkg --dest usb install python (将python安装到U盘)
        ln -s /mnt/sda1/packages/usr/bin/python /usr/bin/python (为python创建快捷方式,如省略此步,需键入 /mnt/sda1/packages/usr/bin/python 才能启动python
        opkg dest usb install pyopenssl python-openssl (安装ssl协议)
      4. 记住安装软件时不要漏了--dest usb,这样才会安装到U盘或硬盘上。
    2. 下载WallProxy并解压,配置服务器端(过程省略,看官方教程);将解压后local文件夹改名为wallproxy并删除OpenWRT不需要的文件。因为我觉得WallProxy的WEB管理页挺实用的,所以只删除了WIN需要的文件,你也可以根据自己的需要来删除文件.
    3. 修改proxy.ini文件,主要就是监听的IP地址和端口,每人的实际情况也许会不同,根据自己的情况来修改。因为我的路由IP是192.168.1.1,而且端口8087被GoAgent占用了,所以我把监听地址及端口改成了192.168.1.1:9087。用WinSCP上传wallproxy文件夹到路由/etc目录中。
    4. 在路由/etc/wallproxy目录中新建一个文件,取名startup,给予执行属性,负责wallproxy的后台启动并守护进程,
       startup文件内容如下:
      while [ 1 ] ; do
              if [ $(ps -ef | grep "/var/wallproxy/startup.py" | grep -v "grep" | wc -l) -eq 1 ];
              then
                      sleep 3s
              else
                      python /var/wallproxy/startup.py
              fi
              done
    5. 在路由/etc/init.d目录中新建一个文件,取名wallproxy,同样给予执行属性,负责wallproxy的自动后台启动,
        wallproxy文件内容如下:
       #!/bin/sh /etc/rc.common
      
      START=99
      
      start() {
              if [ $(ps -ef | grep '/var/wallproxy/startup.py' | grep -v 'grep' | wc -l) -eq 1 ];
              then
                      echo WallProxy already running...
                      exit 0
              else
              [ -d /var/wallproxy ] || {
                      cp -a -f /etc/wallproxy /var
              }
              screen -d -m /var/wallproxy/startup
              fi
      }
      
      stop() {
              kill -9 $(ps -ax|grep '/var/wallproxy/startup'|grep -v 'grep'|awk '{print$1}')
              screen -wipe
      }
    6. 现在,我们可以在OpenWRT的自动启动中看到wallproxy的选项了。
       我们可以在这里启动或停止 wallproxy。
    7. 直接按启动按钮或重启OpenWRT都可以启动wallproxy,在OpenWRT中检查wallproxy的进程:
    8. 设置好浏览器的代理,现在你就可以享受wallproxy给你带来的乐趣了!

备注:

  • 如果你在家以外的地方使用路由的代理功能,必须做好端口映射。另外,为了数据不泄露,最好用stunnel做好加密传输。
编写者:mr.baolei,wwqgtxx

你可能感兴趣的:(OpenWRT)