• December 22, 2024

Shadowsocks Server Config

How to Create a SOCKS5 Proxy Server with Shadowsocks

How to Create a SOCKS5 Proxy Server with Shadowsocks

This guide shows you how to create a SOCKS5 proxy server with Shadowsocks on Ubuntu and CentOS. Shadowsocks is a lightweight SOCKS5 web proxy tool primarily utilized to bypass network censorship and block certain websites and web protocols. A full setup requires a Linode server to host the Shadowsocks daemon, and a client installed on PC, Mac, Linux, or a mobile other proxy software, Shadowsocks traffic is designed to be both indiscernible from other traffic to third-party monitoring tools, and also able to disguise as a normal direct connection. Data passing through Shadowsocks is encrypted for additional security and cause currently, there is no Shadowsocks package available for Ubuntu or CentOS, this guide shows how to build Shadowsocks from the You BeginThe commands in this guide require root privileges. To run the steps as an elevated user with sudo privileges, prepend each command with sudo. If two commands are presented in the same instance (separated by &&), remember to use sudo after the && (ex. sudo [command] && sudo [command]). To create a standard user account with sudo privileges, complete the
Add a Limited User Account section of our Securing your Server guide. A working firewall is a necessary security measure. Firewall instructions
are provided for UFW, FirewallD, and Iptables. To configure a firewall on a Linode, visit one of the following guides:How to Configure a Firewall with UFWIntroduction to FirewallD on CentOSWhat Is SOCKS5 Proxy Service? SOCKS5 is an internet protocol of SOCKS that helps to route packets through a proxy between a client and a server. To carry out a secure communication, SOCKS5 uses three different modes of authentication: Null authentication, GSS-API based authentication, and a username-password based SOCKS5 uses a NULL authentication, any request between client and server connects to the set proxy without requiring any authentication. With GSS API authentication, a client’s or server’s identity is verified at the OS level to authenticate. A username and password-based authentication uses credentials to connect to the Is Shadowsocks? Shadowsocks is an open source, free encryption protocol client designed to securely transmit information between clients and servers. It uses asynchronous input-output and is event-driven to deliver speed. Shadowsocks isn’t a proxy, but it enables connecting to 3rd party SOCKS5 proxy connections. It also supports UDP stall the Shadowsocks ServerHow Do You Run ShadowSocks On Ubuntu? To run and install Shadowsocks on Ubuntu Server follow these steps:Download and update the packages to the newest versions on Ubuntu apt update && apt upgrade -yuf
Install dependencies on the Ubuntu server by running the following command: apt install -y –no-install-recommends gettext build-essential autoconf libtool libpcre3-dev
asciidoc xmlto libev-dev libudns-dev automake libmbedtls-dev
libsodium-dev git python-m2crypto libc-ares-dev
Navigate to the /opt directory on Ubuntu and download the Shadowsocks Git module: cd /opt
git clone cd shadowsocks-libev
git submodule update –init –recursive
Install Shadowsocks-libev:. /. /configure
make && make install
How Do You Run ShadowSocks On CentOS 7? To run and install Shadowsocks on CentOS7 follow these steps:Download and update the packages to the newest versions yum update && yum upgrade -y
yum install epel-release -y
Install dependencies on CentOS7 yum install -y gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto udns-devel
libev-devel libsodium-devel mbedtls-devel git m2crypto c-ares-devel
Navigate to the /opt directory on CentOS7 and download the Shadowsocks Git module: cd /opt
git submodule update –init –recursive
How Do You Use Shadowsocks Libev? Shadowsocks libev is a lightweight, purely C-based proxy implementation for embedded devices. To use Shadowsocks libev after its installation, simply add a system user to Shadowsocks, create a directory with its configuration nfigure the Shadowsocks ServerCreate a new system user for Shadowsocks:Ubuntu 16. 04 adduser –system –no-create-home –group shadowsocks
CentOS 7 adduser –system –no-create-home -s /bin/false shadowsocks
Create a new directory for the configuration file: mkdir -m 755 /etc/shadowsocks
Create the Shadowsocks configuration file located at /etc/shadowsocks/ Paste the contents listed below into the file, noting the instructions in the
Breakdown table for each property. Follow these instructions to determine the value you should set for each /etc/shadowsocks/shadowsocks. json1
2
3
4
5
6
7
8
{
“server”:”your_public_IP_address”,
“server_port”:8388,
“password”:”your_password”,
“timeout”:300,
“method”:”aes-256-gcm”,
“fast_open”: true} BreakdownPropertyDescriptionPossible ValuesserverEnter the server’s public IP determinedserver_portShadowsocks listens on this port. Use the default value of determinedpasswordConnection password. Set a strong determinedtimeoutConnection timeout in seconds. The default value should be sufficient determinedmethodEncryption method. Using AEAD algorithms is
Stream Ciphers and
AEAD Ciphersfast_openReduces latency when turned on. Can only be used with kernel versions 3. 7. 1 or higher. Check the kernel version with uname, falsenameserverName servers for internal DNS determinedOptimize ShadowsocksApply the following optimizations to the system kernel to provide for a smooth running Shadowsocks the /etc/sysctl. d/ system optimization file and paste the contents shown below into the file:CautionThese settings provide the optimal kernel configuration for Shadowsocks. If you have previously configured the system kernel settings for any reason, make sure no conflicts /etc/sysctl. d/ 1
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# max open files
= 51200
# max read buffer
= 67108864
# max write buffer
# default read buffer
= 65536
# default write buffer
# max processor input queue
= 4096
# max backlog
# resist SYN flood attacks
p_syncookies = 1
# reuse timewait sockets when safe
p_tw_reuse = 1
# turn off fast timewait sockets recycling
p_tw_recycle = 0
# short FIN timeout
p_fin_timeout = 30
# short keepalive time
p_keepalive_time = 1200
# outbound port range
net. ipv4. ip_local_port_range = 10000 65000
# max SYN backlog
p_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
p_max_tw_buckets = 5000
# turn on TCP Fast Open on both client and server side
p_fastopen = 3
# TCP receive buffer
p_rmem = 4096 87380 67108864
# TCP write buffer
p_wmem = 4096 65536 67108864
# turn on path MTU discovery
p_mtu_probing = 1
# for high-latency network
p_congestion_control = hybla
# for low-latency network, use cubic instead
p_congestion_control = cubicApply optimizations:sysctl –system
Create a Shadowsocks Systemd ServiceThe Shadowsocks systemd service allows the daemon to automatically start on system boot and run in the a systemd file with the following content:File: /etc/systemd/system/rvice 1
[Unit]
Description=Shadowsocks proxy server
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks/ -a shadowsocks -v start
ExecStop=/usr/local/bin/ss-server -c /etc/shadowsocks/ -a shadowsocks -v stop
[Install]
Enable and start rvice:systemctl daemon-reload
systemctl enable shadowsocks
systemctl start shadowsocks
Open Firewall Port for Shadowsocks ClientDepending on your preference, you may use either the iptables, UFW, or firewalld (CentOS 7 only) commands to complete this port 8388 for the Shadowsocks Client:Iptablesiptables -4 -A INPUT -p tcp –dport 8388 -m comment –comment “Shadowsocks server listen port” -j ACCEPT
UFWufw allow proto tcp to 0. 0. 0/0 port 8388 comment “Shadowsocks server listen port”
FirewallDfirewall-cmd –permanent –zone=public –add-rich-rule=’
rule family=”ipv4″
port protocol=”tcp” port=”8388″ accept’
firewall-cmd –reload
Install a Shadowsocks ClientThe second stage to a Shadowsocks setup is to install a client on the user’s device. This could include a computer, mobile device, tablet, and even home network router. Supported operating systems include Windows, macOS, iOS, Linux, Android, and Shadowsocks ClientDownload the
ShadowsocksX-NG GUI Client for macOS:Launch the application on your Mac. The app preferences is available from a new status menu bar icon. Select the Server Preferences menu item:In the Server Preferences window, click the + (plus-sign) button in the lower left. Enter the details for your Shadowsocks Linode. Be sure to select the same port and encryption scheme that you listed in your Linode’s file. Afterwards, close the window:In the Shadowsocks menu, make sure that Shadowsocks is turned on and that the Global Mode item is selected:Verify that the Shadowsocks connection is active by visiting an IP address lookup website like
When the connection is working as expected, the website lists the Shadowsocks Linode’s public dows Shadowsocks ClientNavigate to the
Windows Shadowsocks page. Click on under Downloads. Extract the contents of the file into any folder and run Shadowsocks runs as a background process. Locate the Shadowsocks icon in the taskbar (it may be in the Hidden Icons taskbar menu), right-click on the Shadowsocks icon, then click on Edit Servers. Enter the information that you saved in the file:Right-click on the Shadowsocks icon again. Mouse over PAC and select both Local PAC and Secure Local confirm that the Linode’s IP address is selected, mouse over that the Shadowsocks connection is active by visiting an IP address lookup website like
When the connection is working as expected, the website lists the Shadowsocks Linode’s public Do You Know If SOCKS5 Proxy Is Working? To check if the SOCKS5 proxy is working, open the terminal and run the netstat command to see if there is an open port:netstat -tlnp
If the SOCKS5 proxy is working, you should see an output similar to below in the terminal:tcp 0 0 232. 222. 333. 414:8888 0. 0:* LISTEN
Another way to test whether SOCKS5 proxy is working is by using the curl command on the right port of the proxy. For a SOCKS5 proxy hosted at 232. 414 listening at port 8080, run the following command in the terminal:timeout 5 curl -x socks5232. 414:8080 If the SOCKS5 proxy isn’t working properly on a proxy hosted at 232. 414, it returns a timeout on our to Go from HereAfter the Shadowsocks server is online, configure a client on your mobile phone, tablet, or any other devices you use. The
Shadowsocks client download page supports all mainstream InformationYou may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted adowsocks officialShadowsocks-libev GitHubThis page was originally published on
Thursday, December 7, 2017.
How to install and configure Shadowsocks server - Hostens

How to install and configure Shadowsocks server – Hostens

Shadowsocks is a free and light socks5 web proxy. It is mostly used to bypass some network censorship and restrictions on the Internet.
Installation
Preparation for the install, generally updating the system and installing epel release. Afterward, we install additional tools that will be necessary for socks5:
yum update -y
yum install epel-release -y
yum install -y gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto udns-devel libev-devel libsodium-devel mbedtls-devel git m2crypto c-ares-devel
We download the Shadowsocks from GIT and install it:
/opt
git clone git submodule update –init –recursive. /. /configure
make && make install
Configuring the Shadowsocks
Adding a new system user for Shadowsocks.
adduser –system –no-create-home -s /bin/false shadowsocks
Creating a directory and configuration file.
mkdir -m 755 /etc/shadowsocks
touch & nano /etc/shadowsocks/
Configuration file content should consist of the following lines, while values are adjusted to your situation:
{
“server”:”your_server_IP”,
“server_port”:8388,
“password”:”your_password”,
“timeout”:300,
“method”:”aes-256-gcm”,
“fast_open”: true}
A short explanation of the options for your config file:
server – enter your server’s public IP;
server port– enter any available port that you will be using to connect to Shadowsocks proxy at your server;
password – a password that you will use to connect to the Shadowsocks server from your device;
timeout – a value that determines when to close the session when inactive;
method – an encryption method. AEAD cipher seems to be the most secure option, like “aes-256-gcm“, but you can browse other stream ciphers here;
fast_open – it can be “true” or “false” values. If you are using a kernel higher than 3. 7. 1 (Linux VPS), it reduces latency when “true“. Otherwise, not necessary.
Once you configured the Shadowsocks, it’s convenient to create it as Systemd service:
touch & nano /etc/systemd/system/rvice
Configuration file content is below, just copy it:
[Unit]
Description=Shadowsocks proxy server
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks/ -a shadowsocks -v start
ExecStop=/usr/local/bin/ss-server -c /etc/shadowsocks/ -a shadowsocks -v stop
[Install]
Start the service:
systemctl daemon-reload
systemctl enable shadowsocks
systemctl start shadowsocks
Alternatively you can use “stop“, “restart” or “status” options as well.
All of our VPS servers use iptables, so you will have to adjust iptables settings to allow traffic via your Shadowsocks port:
iptables -4 -A INPUT -p tcp –dport 8388 -m comment –comment “Shadowsocks” -j ACCEPT
That is it. Shadowsocks is installed, configured, and hopefully running on your server. In order to connect to it, you will need a Shadowsocks client on your device. You can find a client for almost any device here. Install it and connect to your Shadowsocks server. You will need the server details that are configured on file “/etc/shadowsocks/“.
More information can be found below:
Official site
Github
Quick Guide - Shadowsocks

Quick Guide – Shadowsocks

Config FileShadowsocks accepts JSON format configs like this:{
“server”:”my_server_ip”,
“server_port”:8388,
“local_port”:1080,
“password”:”barfoo! “,
“method”:”chacha20-ietf-poly1305″}Explanation of each field:server: your hostname or server IP (IPv4/IPv6). server_port: server port number. local_port: local port ssword: a password used to encrypt encryption method. Encryption MethodThe strongest option is an AEAD cipher. The recommended choice is “chacha20-ietf-poly1305” or “aes-256-gcm”. Other stream ciphers are implemented but do not provide integrity and authenticity. Unless otherwise specified the encryption method defaults to “table”, which is not and QR codeShadowsocks for Android / iOS also accepts BASE64 encoded URI format configs: ssBASE64-ENCODED-STRING-WITHOUT-PADDING#TAGWhere the plain URI should be: ssmethod:[email protected]:portNote that the above URI doesn’t follow RFC3986. It means the password here should be plain text, not example, we have a server at 192. 168. 100. 1:8888 using bf-cfb encryption method and password test/[email protected]#:. Then, with the plain URI ssbf-cfb:test/[email protected]#:@192. 1:8888, we can generate the BASE64 encoded URI: > ( “ss” + btoa(“bf-cfb:test/[email protected]#:@192. 1:8888”))
ssYmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODgTo help organize and identify these URIs, you can append a tag after the BASE64 encoded string: ssYmYtY2ZiOnRlc3QvIUAjOkAxOTIuMTY4LjEwMC4xOjg4ODg#example-serverThis URI can also be encoded to QR code. Then, just scan it with your Android / iOS devices:Try it yourselfSIP002There is also a new URI scheme proposed in SIP002. Any client or server which supports SIP003 plugin should use SIP002 URI scheme instead.

Frequently Asked Questions about shadowsocks server config

How do you set up a Shadowsocks server?

How to set up the Shadowsocks protocol on Android?Get your Shadowsocks credentials.Select your location.Install Shadowsocks client.Set up the connection.Make sure your connection was successful.Aug 25, 2021

How do I test Shadowsocks server?

Here are two methods to verify the server ports from the client:Test the opening port on the server by the command-line tool: nc : # -w 5: timeout in 5 seconds nc -z -w 5 <ss_server_ip> <user_port> A successful test output looks like this: … Using the Shadowsocks manager API:Sep 26, 2018

How do I run Shadowsocks server on Ubuntu?

Installing and running shadowsocks on Ubuntu ServerInstall the the shadowsocks-libev package from apt repository. sudo apt update sudo apt install shadowsocks-libev.Save ss. json as /etc/shadowsocks-libev/config. … Replace server_port and password in ss. json with your own choices.Restart the shadowsocks-libev service.

Leave a Reply