В этой небольшой статье я показываю, как поднять свой 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
Get:2
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!
Где копать?
Та же ошибка
или так:
либо в крайнем случае так: