Что такое Shadowsocks и зачем он нужен на роутере
Shadowsocks — это легковесный прокси-протокол, разработанный для обхода интернет-цензуры и обеспечения приватности. В отличие от традиционных VPN, он маскирует трафик под обычный HTTPS, что делает его менее заметным для систем глубокого анализа пакетов (DPI). Основные преимущества Shadowsocks: высокая скорость, низкая задержка, простота настройки и надёжное шифрование.
Установка Shadowsocks на роутер Keenetic позволяет защитить все устройства домашней сети одновременно — от смартфонов и ноутбуков до Smart TV и игровых консолей. Вам не нужно настраивать каждое устройство отдельно: весь трафик, проходящий через роутер, автоматически направляется через прокси для выбранных доменов или IP-адресов. Это особенно удобно, если в семье несколько человек, и каждый использует свои гаджеты.
Подготовка роутера Keenetic к установке
Перед началом установки убедитесь, что ваш роутер Keenetic поддерживает USB-накопители и работает на актуальной версии KeeneticOS. Для установки Shadowsocks потребуется флешка или внешний диск, отформатированный в файловой системе ext4. Если у вас нет возможности отформатировать накопитель в ext4, можно использовать утилиты вроде MiniTool Partition Wizard Free или встроенные средства Linux.
Также важно включить в настройках роутера компонент «Сервер SMB» — он понадобится для доступа к USB-диску по сети. В разделе «Общие настройки» добавьте компоненты «Протокол IPv6», «Модули ядра подсистемы Netfilter» и «Пакет расширения Xtables-addons для Netfilter». После установки каждого компонента роутер будет перезагружаться — это нормально. Убедитесь, что у вас есть доступ к административной панели и известны параметры вашего Shadowsocks-сервера (адрес, порт, пароль, метод шифрования).
Установка Entware на USB-накопитель
Entware — это репозиторий пакетов для встраиваемых Linux-систем, который позволяет устанавливать дополнительное ПО на роутер. Для установки Entware на Keenetic выполните следующие шаги:
- Скачайте установочный скрипт mipsel с официального сайта Keenetic.
- Вставьте отформатированную флешку в USB-порт роутера.
- Зайдите в раздел «Управление» → «Приложения» и выберите вашу флешку.
- Создайте папку install и импортируйте в неё скачанный файл mipsel.
- Перейдите в «Управление» → «OPKG», выберите флешку, удалите сценарий, если он есть, и нажмите «Сохранить».
- Подождите около минуты, затем снова зайдите в «Приложения» — вы увидите, что Entware установлен (появится несколько папок).
После установки Entware подключитесь к роутеру по SSH с помощью PuTTY. Введите логин root и пароль keenetic (по умолчанию). Сразу смените пароль командой passwd. Затем выполните opkg update для обновления списка пакетов.
Установка Shadowsocks и необходимых пакетов
Для работы Shadowsocks на Keenetic потребуется установить несколько пакетов через opkg. Подключитесь к роутеру по SSH и выполните команду:
opkg install mc bind-dig cron dnsmasq-full ipset iptables shadowsocks-libev-ss-redir shadowsocks-libev-configПакет shadowsocks-libev-ss-redir содержит перенаправляющий клиент ss-redir, который позволяет прозрачно перехватывать трафик. Пакет shadowsocks-libev-config содержит базовые конфигурационные файлы.
После установки проверьте поддержку ipset с типом hash:net командой:
ipset create test hash:netЕсли команда не выдала ошибок, всё в порядке. В противном случае придётся использовать hash:ip, но тогда вы не сможете разблокировать целые подсети. Создайте скрипт /opt/etc/ndm/fs.d/100-ipset.sh, который будет создавать множество unblock при загрузке роутера:
#!/bin/sh
[ "$1" != "start" ] && exit 0
ipset create unblock hash:net -exist
exit 0Не забудьте сделать его исполняемым: chmod +x /opt/etc/ndm/fs.d/100-ipset.sh.
Настройка конфигурационного файла Shadowsocks
Конфигурационный файл Shadowsocks находится в /opt/etc/shadowsocks.json. Вам нужно отредактировать его, указав параметры вашего сервера. Обычно провайдер VPN предоставляет ключ в формате ss://, который содержит закодированную информацию. Раскодируйте его с помощью онлайн-инструментов или вручную.
Пример конфигурации:
{
"server": ["ваш_сервер"],
"mode": "tcp_and_udp",
"server_port": 8388,
"password": "ваш_пароль",
"timeout": 86400,
"method": "chacha20-ietf-poly1305",
"local_address": "::",
"local_port": 1082,
"fast_open": false,
"ipv6_first": true
}Обратите внимание: в поле server можно указать IP-адрес или доменное имя. local_port — это порт, на котором будет слушать ss-redir. В нашем примере используется порт 1082, но вы можете выбрать любой свободный.
После редактирования файла сохраните его. Затем отредактируйте скрипт запуска /opt/etc/init.d/S22shadowsocks, заменив ss-local на ss-redir, чтобы использовать перенаправление трафика.
Создание списка доменов для обхода блокировок
Чтобы Shadowsocks перенаправлял трафик только для нужных сайтов, создайте файл /opt/etc/unblock.txt. В каждой строке можно указать доменное имя, IP-адрес, диапазон или CIDR-подсеть. Строки, начинающиеся с #, игнорируются.
Пример содержимого:
### Торрент-трекеры
rutracker.org
kinozal.tv
### Соцсети
facebook.com
twitter.com
instagram.com
### Пример IP
195.82.146.214
### Пример CIDR
103.21.244.0/22На основе этого списка создаются два скрипта: unblock_ipset.sh — для заполнения ipset-множества unblock IP-адресами, и unblock_dnsmasq.sh — для генерации конфигурации dnsmasq, которая будет направлять DNS-запросы для этих доменов в ipset.
Скрипт unblock_ipset.sh использует dig для резолва доменов и добавляет полученные IP-адреса в ipset. Скрипт unblock_dnsmasq.sh создаёт файл /opt/etc/unblock.dnsmasq с правилами вида ipset=/домен/unblock. Оба скрипта должны быть исполняемыми.
Настройка маршрутизации трафика через iptables
Для перенаправления трафика с устройств локальной сети в Shadowsocks необходимо настроить правила iptables. Создайте скрипт /opt/etc/ndm/netfilter.d/100-redirect.sh со следующим содержимым:
#!/bin/sh
[ "$type" == "ip6tables" ] && exit 0
if [ -z "$(iptables-save 2>/dev/null | grep unblock)" ]; then
ipset create unblock hash:net -exist
iptables -I PREROUTING -w -t nat -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 1082
iptables -I PREROUTING -w -t nat -i br0 -p udp -m set --match-set unblock dst -j REDIRECT --to-port 1082
fi
if [ -z "$(iptables-save 2>/dev/null | grep "udp --dport 53 -j DNAT")" ]; then
iptables -w -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.1.1
fi
if [ -z "$(iptables-save 2>/dev/null | grep "tcp --dport 53 -j DNAT")" ]; then
iptables -w -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.1.1
fi
exit 0Этот скрипт добавляет правила, которые перенаправляют TCP и UDP трафик, предназначенный для адресов из множества unblock, на локальный порт ss-redir (1082). Также он перенаправляет DNS-запросы на роутер, чтобы dnsmasq мог корректно резолвить домены из списка.
Не забудьте сделать скрипт исполняемым: chmod +x /opt/etc/ndm/netfilter.d/100-redirect.sh.
Настройка dnsmasq и автоматическое обновление списков
Для корректной работы DNS-резолва и интеграции с ipset необходимо настроить dnsmasq. Очистите файл /opt/etc/dnsmasq.conf и запишите в него:
user=nobody
bogus-priv
no-negcache
clear-on-reload
bind-dynamic
listen-address=192.168.1.1
listen-address=127.0.0.1
min-port=4096
cache-size=1536
expand-hosts
log-async
conf-file=/opt/etc/unblock.dnsmasq
server=8.8.8.8Здесь conf-file подключает сгенерированный файл unblock.dnsmasq, а server=8.8.8.8 указывает использовать публичный DNS-сервер Google. Вы можете заменить его на любой другой.
Для автоматического обновления списка доменов добавьте задание в cron. Отредактируйте /opt/etc/crontab и добавьте строку:
00 06 * * * root /opt/bin/unblock_ipset.shЭто будет обновлять ipset каждый день в 6 утра. Также создайте скрипт unblock_update.sh, который можно запускать вручную после изменения unblock.txt:
#!/bin/sh
ipset flush unblock
/opt/bin/unblock_dnsmasq.sh
/opt/etc/init.d/S56dnsmasq restart
/opt/bin/unblock_ipset.sh &Не забудьте сделать его исполняемым.
Проверка работы и устранение неполадок
После завершения настройки перезагрузите роутер. Проверьте, что Shadowsocks запущен:
ps | grep ss-redirЕсли процесс не запущен, проверьте логи:
logread | grep shadowsocksУбедитесь, что ipset-множество unblock заполнено:
ipset list unblock | headДля проверки обхода блокировок зайдите на сайт 2ip.ru с любого устройства в сети — ваш IP-адрес должен соответствовать IP-адресу Shadowsocks-сервера. Если сайт не открывается, проверьте, добавлен ли его домен в unblock.txt, и выполните unblock_update.sh.
Частая проблема — несовместимость типа ipset. Если вы использовали hash:ip, убедитесь, что в скриптах нет упоминаний hash:net. Также проверьте, что в конфигурации dnsmasq указан правильный IP-адрес роутера (обычно 192.168.1.1).
Безопасность и альтернативные подходы
При использовании Shadowsocks важно выбирать надёжного провайдера. Бесплатные сервисы могут быть небезопасными и собирать ваши данные. Лучше использовать платные VPN-сервисы с хорошей репутацией или развернуть собственный сервер на зарубежном VPS.
Также стоит учитывать, что Shadowsocks не является полной анонимностью — он скрывает факт использования прокси, но не шифрует трафик на уровне приложений. Для максимальной защиты комбинируйте его с HTTPS и другими мерами.
Если у вас возникли сложности с установкой, вы можете рассмотреть альтернативные методы: использование прошивок OpenWRT или DD-WRT, которые поддерживают Shadowsocks из коробки, или настройку VPN-клиента на уровне отдельных устройств. Однако установка на роутер остаётся наиболее удобным решением для всей домашней сети.
Вопросы и ответы
Какие модели Keenetic поддерживают установку Shadowsocks?
Установка Shadowsocks возможна на любые модели Keenetic с поддержкой USB-накопителей и актуальной версией KeeneticOS. Обычно это роутеры серий Giga, Ultra, Viva, Omni и другие, имеющие USB-порт. Проверить поддержку можно в официальной документации или в интерфейсе роутера: если в разделе «Управление» есть пункт «Приложения», значит, установка Entware и Shadowsocks возможна.
Можно ли установить Shadowsocks без USB-накопителя?
Технически можно установить Entware во внутреннюю память роутера, но это не рекомендуется из-за ограниченного объёма и риска повреждения файловой системы при перезагрузках. USB-накопитель обеспечивает стабильность и достаточное пространство для пакетов и конфигурационных файлов. Если у вас нет флешки, лучше приобрести недорогой накопитель — это надёжнее.
Как добавить новый сайт в список обхода блокировок?
Отредактируйте файл /opt/etc/unblock.txt, добавив домен или IP-адрес в новую строку. Затем выполните команду /opt/bin/unblock_update.sh, чтобы пересоздать конфигурацию dnsmasq и обновить ipset. После этого изменения вступят в силу без перезагрузки роутера.
Что делать, если после настройки не работает интернет?
Проверьте, что ss-redir запущен и слушает порт 1082. Убедитесь, что в конфигурации shadowsocks.json указаны правильные параметры сервера. Проверьте правила iptables: возможно, они перехватывают весь трафик, а не только нужный. Временно отключите скрипт 100-redirect.sh и проверьте, восстановится ли доступ. Также проверьте, что dnsmasq запущен и слушает порт 53.
Какой метод шифрования лучше выбрать для Shadowsocks?
Рекомендуется использовать современные методы, такие как chacha20-ietf-poly1305 или aes-256-gcm. Они обеспечивают хороший баланс между скоростью и безопасностью. Устаревшие методы, например aes-128-cfb, менее безопасны и могут быть уязвимы. Убедитесь, что ваш сервер поддерживает выбранный метод.
Можно ли использовать Shadowsocks на Keenetic для всех устройств одновременно?
Да, это одно из главных преимуществ установки на роутер. Все устройства, подключённые к роутеру (по Wi-Fi или кабелю), автоматически используют Shadowsocks для трафика, попадающего в список unblock. Это удобно для защиты всей домашней сети без настройки каждого устройства отдельно.
Как проверить, что трафик действительно идёт через Shadowsocks?
Зайдите на сайт 2ip.ru или аналогичный сервис с любого устройства в сети. Если ваш IP-адрес совпадает с IP-адресом Shadowsocks-сервера, значит, трафик перенаправляется корректно. Также можно использовать команду curl --socks5 127.0.0.1:1082 ifconfig.me на роутере, но это требует дополнительной настройки.