В данной статье рассмотрим как настроить существующее подключение к OpenVPN серверу, которое могло или может перестать работать, через shadowsocks (Outline VPN) туннель на OpenWRT любых версий с помощью openvpn-openssl и shadowsocks-libev.
Понадобятся:
Существующий сервер OpenVPN и настроенный клиент на OpenWRT
Конфиг shadowsocks (Outline) вашего либо чужого сервера.
Свободные 650кб памяти в роутере
UPD. 18.09.2023 Shadowsocks-libev на версиях 22.03 и выше имеет сломанный пакет ss-redir, но он нам сегодня не понадобится. Shadowsocks-libev и его пакет ss-redir нормально работают на OpenWRT 22.03 и выше, но требуют дополнительной настройки. В этой инструкции ss-redir использоваться не будет
Оглавление:
Установка Shadowsocks-libev
Настройка туннеля shadowsocks
Настройка клиента OpenVPN
Предисловие
Данную статья родилась сегодня, 10.09.2023, так как обнаружил что мои настроенные клиенты OpenVPN перестали выходить на связь в сети Билайна и Ростелекома (причём OpenVPN имел uptime около 40 дней, но после перезагрузки клиента трафик ходить перестал, но IP адрес получил успешно), в обоих случаях картина одинаковая, что резонно наводит на мысли о блокировках.
1. Установка Shadowsocks-libev
На примере Mikrotik RB750gr3 с установленной OpenWRT 21.02.3
Сначала установим необходимые пакеты:
opkg update
opkg install shadowsocks-libev-config shadowsocks-libev-ss-local shadowsocks-libev-ss-rules luci-app-shadowsocks-libev
Либо перейдите в Система - Менеджер пакетов и установите пакеты:
shadowsocks-libev-config
shadowsocks-libev-ss-local
shadowsocks-libev-ss-rules
luci-app-shadowsocks-libev
Далее переходим в Службы - Shadowsocks-libev
Далее во вкладку Remote Servers
Удаляем конфигурацию по умолчанию SSS0 и нажимаем Import Links (на версиях старше 21.02 данная кнопка отсутствует, в этом случае воспользуйтесь инструкцией в начале раздела 3, после добавления вернитесь к п.2 этой страницы).
В случае Outline VPN конфигурация получается так:
Открываем Outline Manager, добавляем или открываем уже существующий ключ кнопкой на иллюстрации
Копируем ключ доступа.
Вставляем конфигурацию Shadowsocks (Outline)
Нажимаем Import
Применяем изменения.
Соединение с сервером shadowsocks установлено.
2. Настройка туннеля Shadowsocks
Далее переходим во вкладку Local Instances
Редактируем конфигурацию ss_local (всё остальное при желании можно удалить или оставить)
Из выпадающего списка выбираете свою конфигурацию, убираете галку в поле отключить
Сохраняете
Применяем изменения
Если после Применения изменений появился статус Running: yes, значит всё заработало, если нет, вероятно не установлен один из пакетов (shadowsocks-libev-ss-rules)
ss-local отвечает за запуск socks5 прокси сервера на роутере, в нашем случае на порту 1080, трафик по умолчанию не переадресовывается в прокси.
Далее переходим к настройке клиента OpenVPN
3. Настройка клиента OpenVPN
Далее переходим во вкладку VPN - OpenVPN
Вносим изменения в текущую конфигурацию
После строки remote, добавляем на новой строке запись socks-proxy 127.0.0.1 1080
Теперь OpenVPN клиент будет подключаться к серверу через socks5 прокси который мы настроили ранее.
Сохраняем.
Перезапускаем соединение двойным нажатием кнопки Start/Stop.
Проверяем работу OpenVPN.
При использовании точечного обхода блокировок нелишним будет добавить статический маршрут до сервера shadowsocks (Outline):
Переходим в Сеть - Статические маршруты
И добавляем маршрут до вашего сервера
Не забываем проверить доступность сервера после добавления маршрута
ping $ВАШ_Shadowsocks_Outline_IP
Послесловие
Так получилось, что все предыдущие статьи я писал не испытывая проблем на практике, но начиная со вчерашнего дня вся теория стала использоваться по назначению, приведенный в статье способ является малозатратным, но есть вероятность последующей блокировки и shadowsocks тоже. Рекомендую ознакомится с существующими методами обхода (пока об этом ещё можно писать):