В этой небольшой статье я показываю, как поднять свой ShadowSocks сервер и тем самым обезопасить своё пребывание в Интернете. Статья является исключительно ознакомительной и не призывает использовать данный инструмент для нарушения законов!
Арендуем сервер под ShadowSocks
Можно арендовать VPS на XorekCloud в Европе за копейки, с самым стартовым конфигом.При установке лучше выбрать Ubuntu до 22.04 версии.
Установка
Для начала скачаем установочный bash и установим ShadowSocks сервер.Первый вариант для Debian до 10 версии и Ubuntu до 20.04:
wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/Vndroid/shadowsocks-install/master/shadowsocks.sh chmod +x shadowsocks.sh ./shadowsocks.sh install 2>&1 | tee shadowsocks.log
Второй вариант подходит для Debian 11 и выше и Ubuntu 22.04 и выше:
wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh chmod +x shadowsocks.sh ./shadowsocks.sh 2>&1 | tee shadowsocks.log
Возможные ошибки
[Error] libsodium install failed!
Решается одним из нижеописанных способов:pecl install -f libsodium
apt install libsodium libsodium-dev
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz && tar -xzf LATEST.tar.gz && cd libsodium-stable/ && ./configure && make && make check && make install && pecl install -f libsodium
Настройка ShadowSocks приложения
Далее настраиваем конфигурацию ShadowSocks сервера.Конфиг файл в /etc/shadowsocks.conf полностью заменяем на:
{
"server": "0.0.0.0",
"server_port": 3785,
"local_port": 1080,
"password": "barfoo",
"timeout": 20,
"method": "aes-256-gcm",
"fast_open": true,
"mode": "tcp_only",
"nameserver": "8.8.8.8"
}
Здесь мы указали порт 3785 и пароль barfoo, а также метод шифрования aes-256-gcm – эти данные нам понадобятся при создании строки конфигурации для клиента. Также мы указали DNS сервер гугла 8.8.8.8, его при желании можно заменить на любой другой, например Cloudflare 1.1.1.1.Сразу устанавливаем net-tools для манипуляций с сетевой подсистемой:
apt install net-tools
Разрешаем подключение к 3785 порту:
iptables -4 -A INPUT -p tcp --dport 3785 -m comment --comment "Shadowsocks server listen port" -j ACCEPT ufw allow proto tcp to 0.0.0.0/0 port 3785 comment "Shadowsocks server listen port" sudo ufw allow 3785/udp && sudo ufw allow OpenSSH && sudo ufw disable && sudo ufw enableМы указали в конфиге /etc/shadowsocks.conf режим tcp_only, но несмотря на это разрешаем доступ к 3785 udp порту. Дело в том, что на некоторых серверах я наблюдал проблемы, если этого не сделать. Поэтому будем воспроизводить этот карго-культ.
В конце файла параметров ядра /etc/sysctl.conf указываем такие настройки:
fs.file-max = 51200 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.core.netdev_max_backlog = 250000 net.core.somaxconn = 4096 net.core.default_qdisc = fq net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_fastopen = 3 net.ipv4.tcp_mem = 25600 51200 102400 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.ipv4.tcp_mtu_probing = 1 net.ipv4.tcp_congestion_control = hybla
Далее командуем мантру:
sysctl --system && /etc/init.d/shadowsocks restart
После этого мы можем удостовериться, открыт ли наш tcp/udp порт 3785:
netstat -tlpn
Пкм по значку в трее настроенного клиента шадоусокса — серверы — поделиться конфигурацией сервера. внизу ss:// bla bla bla. Копируем и вставляем в клиент Outline на ios Вдруг пригодится кому
И еще… не могли бы вы выложить код этой утилиты в открытый доступ? В текущее время вбивать какие-либо доступы на сторонние сайты слишком опасно(( Надеюсь на понимание…
Не мог бы. Если надо, можете самостоятельно скопировать из кода страницы…
[ERROR] Sorry,debian bookworm is too old or unsupport, please update to retry.
Пробывал 10,11 и 12 Debian
#############################################################
# shadowsocks python server install for Debian / Ubuntu #
# Thanks: @clowwindy <> #
# Author: Wave WorkShop <waveworkshop@outlook.com> #
# Github: #
#############################################################
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Reading package lists…
Building dependency tree…
The following NEW packages will be installed:
bc lsb-release
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 116 kB of archives.
After this operation, 264 kB of additional disk space will be used.
Get:1 bookworm/main amd64 bc amd64 1.07.1-3+b1 [110 kB]
Get:2 bookworm/main amd64 lsb-release all 12.0-1 [6416 B]
Fetched 116 kB in 1s (121 kB/s)
Selecting previously unselected package bc.
(Reading database… 19150 files and directories currently installed.)
Preparing to unpack .../bc_1.07.1-3+b1_amd64.deb…
Unpacking bc (1.07.1-3+b1)…
Selecting previously unselected package lsb-release.
Preparing to unpack .../lsb-release_12.0-1_all.deb…
Unpacking lsb-release (12.0-1)…
Setting up bc (1.07.1-3+b1)…
Setting up lsb-release (12.0-1)…
Processing triggers for man-db (2.11.2-2)…
[ERROR] Sorry,debian bookworm is too old or unsupport, please update to retry.
root@Outline:~#
«mode»: «tcp_only» или «tcp_and_udp»
это не параметр доступа к самому серверу, а режим ретрансляции, только tcp или еще и udp
в этом фишка шадоусокса, он умеет не только tcp прогонять, как классический прокси, но и udp, поэтому он может работать в роли впн сервера, например для андроид устройств
а для подключения достаточно tcp
что должно отличаться? server_port или local_port?
сделал два server_port, два local_port и в итоге для обоих конфигов
Sep 10 12:10:12 my-srv ss-server[6799]: 2024-09-10 22:10:12 ERROR: fast_open_connect: Invalid argument
Sep 10 12:10:12 my-srv ss-server[6799]: 2024-09-10 22:10:12 ERROR: getpeername: Transport endpoint is not connected
[Error] libsodium install failed!
Где копать?
Та же ошибка
или так:
либо в крайнем случае так:
apt install php-pear
Debian & Ubuntu одинаковые ошибки
nano /etc/shadowsocks-libev/config.json
зачем эта вся лабуда?)
Возможно стоит прописать в туториале:
sudo chmod +x /etc/init.d/shadowsocks
На момент 17.07.2025 не работает уже этот вариант с обходом блокировок в России? У меня отвалился впн, арендовал новый сервер, по новой настроил, все прошло без ошибок, но также не работает.
Поставил Ubuntu 20.04 — инструкция подходит, всё корректно работает.