В этой небольшой статье я показываю, как поднять свой ShadowSocks сервер и тем самым обезопасить своё пребывание в Интернете. Статья является исключительно ознакомительной и не призывает использовать данный инструмент для нарушения законов!
Сервер ShadowSocks
Инструкция подразумевает, что у вас уже есть купленный VPS на Debian-подобном дистрибутиве.Для начала скачаем установочный bash и установим ShadowSocks сервер:
wget https://raw.githubusercontent.com/Vndroid/shadowsocks-install/master/shadowsocks.sh chmod +x shadowsocks.sh ./shadowsocks.sh install 2>&1 | tee shadowsocks.log
Конфиг файл в /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 Вдруг пригодится кому