shadowsocks-tiny icon indicating copy to clipboard operation
shadowsocks-tiny copied to clipboard

shadowsocks for router

  • shadowsocks-tiny

** What This is a tiny [[https://github.com/clowwindy/shadowsocks/wiki][shadowsocks]] client for router(OpenWrt).

** Install Pre-compiled .ipk packages can be found in =bin= directory of the shadowsocks-tiny source code. Subdirectory =AA= is for Attitude Adjustment(12.09), subdirectory =current= is for latest OpenWrt release(which uses [[http://wiki.openwrt.org/doc/techref/procd][procd]]). If you can't find the package for your router's architecture, you need to compile it by yourself(and if you successfully compiled and tested it works, please send the .ipk to me, so I can include it here).

  • Compile from SDK

    There is a help page about using the SDK: [[http://wiki.openwrt.org/doc/howto/obtain.firmware.sdk]]

    Shadowsocks-tiny depends on libopenssl. If libopenssl has not been installed on your router, you have to install libopenssl first. Usually you only need to run following command on your router to install libopenssl: #+begin_src shell opkg install libopenssl #+end_src

    Packages are under =packages= directory of the shadowsocks-tiny source code. =./packages/shadowsocks-client-AA= is for Attitude Adjustment(12.09), and =./packages/shadowsocks-client= is for latest OpenWrt(which uses [[http://wiki.openwrt.org/doc/techref/procd][procd]]). Actually the only difference of these two packages is the init script. Select the right package for your SDK, and copy it to =packages= directory of your SDK, then compile.

  • Compile from OpenWrt souce

    You can add shadowsocks-client from packages feed: #+begin_src shell ./scripts/feeds update packages ./scripts/feeds install shadowsocks-client #+end_src

    Then select shadowsocks-client from =make menuconfig= and compile.

** Config Shadowsocks-client uses [[http://wiki.openwrt.org/doc/uci][uci]] as its configuration method. You have to edit =/etc/config/sslocal= to meet your needs.

Hint: =server_addr= and =server_port= is your shadowsocks server's listening address and port. =local_addr= is your router's address(e.g. 192.168.X.X) and =local_port= is the port number you want your router to listen.

After editing =/etc/config/sslocal=, run =/etc/init.d/sslocal start= to execute sslocal, and use =logread= to see if it works. Normally it will show:

Wed Jul 16 03:17:28 2014 daemon.notice sslocal: server address: XXX.XXX.XXX.XXX:XXXXX(tcp)

Wed Jul 16 03:17:28 2014 daemon.notice sslocal: listening address: XXX.XXX.XXX.XXX:XXXXX(tcp)

If all seem okay, run =/etc/init.d/sslocal enable= to let shadowsocks-client automatically starts when your router boots.

  • Host setting

    Set your browser or program to use socks5 proxy, and put =local_addr= and =local_port= as the socks5 server's addresss and port number.

** Note Although shadowsocks-tiny has a server side program, it's mainly for test purpose and doesn't scale well. You can find other fancy server side programs of shadowsocks from [[https://github.com/clowwindy/shadowsocks/wiki/Ports-and-Clients]]

** Report bugs Please submit your bug report to [[https://github.com/zhao-gang/shadowsocks-tiny/issues]]

** License MIT, see COPYING for details.