ShadowsocksR-native is a lightweight secured SOCKS5 proxy for embedded devices and low-end boxes. It's derived from Shadowsocks-libev.
It is a port of ShadowsocksR created by @breakwa11, which is maintained by @ssrlive.
Current version: 0.4 | Changelog
ShadowsocksR-native is written in pure C and only depends on libuv , mbedTLS , libsodium and json-c.
In normal usage, the memory footprint is about 600KB and the CPU utilization is no more than 5% on a low-end router (Buffalo WHR-G300N V2 with a 400MHz MIPS CPU, 32MB memory and 4MB flash).
For a full list of feature comparison between different versions of shadowsocks, refer to the Wiki page.
Protocols | obfuscators |
---|---|
origin | plain |
auth_sha1_v4 | http_simple |
auth_aes128_sha1 | http_post |
auth_aes128_md5 | http_mix |
auth_chain_a | tls1.2_ticket_auth |
auth_chain_b | tls1.2_ticket_fastauth |
auth_chain_c/d/e/f |
progress of data flow
+-----------------------------------------------------------------------------+
| +--------------------------------------------------------+ |
| | +------------------------------------+ | |
| | | +-------------------+ | | |
| obfuscator | encryptor | protocol | user data | | | |
| | | | | | +-------------------+ | | |
| | | | +------+-----------------------------+ | |
| | +-------+--------------+---------------------------------+ |
+---+--------------------+--------------+-------------------------------------+
| | |
+-- server_encode +-- encrypt +-- server_pre_encrypt <<<=== user data
| | |
+-- server_decode +-- decrypt +-- server_post_decrypt ===>>> user data
For Unix-like systems, especially Debian-based systems, e.g. Ubuntu, Debian or Linux Mint, you can build the binary like this:
# Debian / Ubuntu
sudo su # using root account
apt-get install --no-install-recommends build-essential autoconf libtool asciidoc xmlto -y
apt-get install git gcc g++ cmake automake -y
apt-get -f install -y
apt-get update -y
apt-get upgrade -y
cd / # switch to root directory
git clone https://github.com/ShadowsocksR-Live/shadowsocksr-native.git
mv shadowsocksr-native ssr-n # rename shadowsocksr-native to ssr-n
cd ssr-n # enter ssr-n directory.
git submodule update --init
git submodule foreach -q 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
# build ShadowsocksR-native
cmake CMakeLists.txt && make
# make install
# /bin/cp -rfa src/ssr-* /usr/bin
The target binaries are ssr-n/src/ssr-server
, ssr-n/src/ssr-client
and ssr-n/src/ssr-local
.
CentOS 7 only. we don't support CentOS 6.x, it's too old.
Before build ssr-Native
, we must install cmake
3.x first. following this
# CentOS / Fedora / RHEL
sudo su
yum install wget git gcc gcc-c++ autoconf automake libtool make asciidoc xmlto -y
curl https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.sh -o a.sh
sh a.sh --prefix=/usr/ --exclude-subdir && rm -rf a.sh
cd /
git clone https://github.com/ShadowsocksR-Live/shadowsocksr-native.git
mv shadowsocksr-native ssr-n
cd ssr-n
git submodule update --init
git submodule foreach -q 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
cmake . && make
# make install
# /bin/cp -rfa src/ssr-* /usr/bin
The target binaries are ssr-n/src/ssr-server
, ssr-n/src/ssr-client
and ssr-n/src/ssr-local
.
For macOS, we must download/install/run Xcode first.
Then use Homebrew to install or build.
Install Homebrew and tools:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git cmake automake libtool
brew upgrade git cmake automake libtool
Now get source code and build it.
git clone https://github.com/ShadowsocksR-Live/shadowsocksr-native.git
mv shadowsocksr-native ssr-n
cd ssr-n
git submodule update --init
git submodule foreach -q 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
cmake . && make
The target binaries are ssr-n/src/ssr-server
, ssr-n/src/ssr-client
and ssr-n/src/ssr-local
.
For Windows, chekout the project using the following commands then open win32/ssr-native.sln with Visual Studio 2010. Enjoy it!
git clone https://github.com/ShadowsocksR-Live/shadowsocksr-native.git
git submodule update --init
git submodule foreach -q 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
For a detailed and complete list of all supported arguments, you may refer to the man pages of the applications, respectively.
ssr-[client|local|server]
[-c <config_file>] The path to config file
[-d] Run in background as a daemon.
[-h] Show this help message.
config.json
{
"password": "password",
"method": "aes-128-ctr",
"protocol": "auth_aes128_md5",
"protocol_param": "",
"obfs": "tls1.2_ticket_auth",
"obfs_param": "",
"udp": false,
"timeout": 300,
"server_settings": {
"listen_address": "0.0.0.0",
"listen_port": 12475
},
"client_settings": {
"server": "12.34.56.78",
"server_port": 12475,
"listen_address": "0.0.0.0",
"listen_port": 1080
},
"over_tls_settings": {
"enable": false,
"server_domain": "goodsitesample.com",
"path": "/udg151df/",
"root_cert_file": ""
}
}
old config.json (deprecated.)
{
"server": "123.45.67.89",
"server_port": 443,
"method": "aes-128-ctr",
"password": "password",
"protocol": "auth_aes128_md5",
"protocol_param": "",
"obfs": "tls1.2_ticket_auth",
"obfs_param": "",
"local_address": "0.0.0.0",
"local_port": 1080,
"udp": true,
"timeout": 300
}
In the CentOS 7, the cmake version is too old to work with ShadowsocksR-Native. So we must install it by ourselves.
sudo su
cd /
curl https://cmake.org/files/v3.14/cmake-3.14.5-Linux-x86_64.sh -o a.sh
sh a.sh --prefix=/usr/ --exclude-subdir
rm -rf a.sh
cmake --version
And the cmake --version
command will output message likes:
cmake version 3.14.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
Supporting CentOS 7
/ Debian
/ Ubuntu
with the following commands
sudo su
wget --no-check-certificate https://raw.githubusercontent.com/ShadowsocksR-Live/shadowsocksr-native/master/install/ssrn-install.sh
chmod +x ssrn-install.sh
./ssrn-install.sh 2>&1 | tee ssr-n.log
After installation, we can view the status with
systemctl status ssr-native.service
And we can view or edit the configuration with cat
or vi
in root
privilege
cat /etc/ssr-native/config.json
After we changed the server configuration, we must restart the service to make the changes take effect.
systemctl restart ssr-native.service
To stop the server, please run
systemctl stop ssr-native.service
To uninstall the server, use the following command
./ssrn-install.sh uninstall