ss — shadowsocks, cf — cloudflare Зачем оно надо: Для пущей обфускации трафика при наличии только одного сервера — пакеты будут идти до нескольких адресов cf при каждом соединении. Дано: Предполагается, что сервер связки ss+cf уже настроен и исправно работает. Также предполагается, что у тебя есть несколько свободных доменов первого уровня — anuspsa.ru, не anus.psa.ru — такое ограничение Free версии cf. Домены можно взять либо бесплатно у freenom, либо купить где-то задешево. В первом случае понадобится напердолить перенаправление не-ss трафика на веб-сервер с каким-нибудь фейколендингом по гайду https://pastebin.com/CpKBhNC3, чтобы домен не отобрали за неиспользование. Во втором случае можно полуркать гугл на предмет акций. В 2019 году таковая действует на reg.ru: https://www.reg.ru/company/promotions/5123 Решение: 1. Нужно повторить действия по привязке из этого гайда для каждого из своих доменов: http://telegra.ph/shadowsocks-over-cloudflare-05-17 tl;dr: 1.1 В cf для каждого домена добавить A запись на внешний IP сервера с ss 1.2 В панели управления доменами (где они регистрировались) для каждого домена указать NS записи cf, которые он дает при привязке (вида marty.ns.cloudflare.com) 1.3 В cf для каждого домена по пути "Firewall —> Settings" для "Security" указать "Essentially Off". 1.3.1 Если будут проблемы при использовании — по тому же пути отключить "Browser Integrity Check", и в "Crypto -> SSL" выбрать "Off". В оригинальном гайде выше этот совет был, пусть будет и тут. 1.4 Дополнение касательно портов, с которыми работает cf: HTTP: 80 8080 8880 2052 2082 2086 2095 HTTPS: 443 2053 2083 2087 2096 8443 В случае, если на VPS закрыты 80 и 443 порты (такое всегда бывает на днищесерверах), нужно искать в панели управления VPS опцию "Domain Forwarding", и добавлять туда домены для tcp трафика на 80 и 443 портах. Аналогичное при желании проводится с другими портами, приведенными выше. 2. После привязки нужно запилить на компьютере конфиги с новыми используемыми доменами в качестве адресов сервера. Предполагается, что ты уже знаешь, как это делается. Локальные порты должны быть разными, их нужно запомнить, они понадобятся чуть позже. 3. Клиент на виндовс поддерживает балансировку нагрузки из коробки (в гуе вкладка "Servers -> Load Balance"), о нем не пишем. Для линукса воспользуемся haproxy. Установка зависит от пакетного менеджера твоего дистрибутива. Предполагается, что ты знаешь, как им пользоваться: pacman -S haproxy Поправим конфиг: vim /etc/haproxy/haproxy.cfg Удалим старое содержимое: gg Shift+v Shift+g d i Копипастим туда следующее (в vim через Shift+Insert): global defaults log global mode tcp option dontlognull timeout connect 300000ms timeout client 300000ms timeout server 30000ms frontend localproxy bind *:4444 default_backend ss_proxies backend ss_proxies balance roundrobin server proxy1 127.0.0.1:1001 server proxy2 127.0.0.1:1002 server proxy3 127.0.0.1:1003 Подробное описание функций в конфиге есть здесь: http://cbonte.github.io/haproxy-dconv/ Внимание стоит обратить на строчки: bind *:4444 — здесь задается свободный локальный порт сокс-прокси на пеке, к которому будем подключаться в браузере или где-то еще. Увидеть занятые порты и чем они заняты можно через netstat -ltp server proxy(1-3) localhost:100(1-3) — здесь нужно указать локальные порты, использованные в конфигах ss+cf из пункта 2. Сохраняем конфиг haproxy и выходим из vim: Esc :wq Enter 4. Добавляем haproxy в загрузку в системе и перезапускаем на случай, если уже было запущено: systemctl enable haproxy systemctl restart haproxy 5. Запускаем ss с конфигами, в которых прописаны новые домены — ты уже знаешь, как это делается. Если нет — несколько раз nohup ss-local -c /etc/shadowsocks/config.json со своими путями до конфигов. Nohup перед командой нужен для отвязки ss от процесса терминала, в котором ты запускаешь ss. 6. В настройках прокси для приложений старый порт с ss+cf нужно сменить на тот, который указывали в конфиге haproxy в разделе frontend (4444). Прокси socks5. Поскольку к бесплатной версии cf можно подключить бесконечно большое количество доменов, и в backend для haproxy с алгоритмом roundrobin можно добавить до 4095 подключений, то количество используемых инстанций ss+cf ограничивается ресурсами пекарни, желанием возиться с большим количеством доменов, и желанием заниматься хуйней в целом. Стоит заметить, что подключением к порту, на котором висит haproxy могут пользоваться другие устройства в общей локальной сети. Т.е. если компьютер с телефонами и ноутбуками подключены к одному роутеру, то в теории можно пользоваться ss проксей и с них, указывая в настройках прокси порт haproxy (4444) и адрес компьютера с haproxy в локальной сети (ifconfig | grep inet на компьютере). Схожего эффекта с распределением запросов через разные серверы cf можно добиться при помощи .pac скрипта в браузере с указанными локальными адресами ss+cf: https://help.getfoxyproxy.org/index.php/knowledge-base/rotate-ips/ На legacy версии 4.6.5 FoxyProxy такое работает, но выводит неотключаемое уведомление с ошибкой, поэтому ваш покорный слуга забил свой обфусцированный болт на этот вариант.