Outline VPN это проект компании Jigsaw, дочерней компании Google. Outline использует протокол Shadowsocks для связи между клиентом и сервером. Трафик шифруется с помощью шифра IETF ChaCha20 и аутентифицируется с помощью IETF Poly1305.
Развёртывание Outline VPN на VDS или собственном сервере довольно простое, инструкция есть на официальном сайте проекта:
Outline VPN - Access to the free and open internet (getoutline.org)
и на Хабре:
Outline: Делаем свой личный VPN от Google за 5$ в месяц (и за 1€ для продвинутых) / Хабр (habr.com)
Проблема в том, что официальной инструкции для использования Outline на OpenWRT нету, но так как Outline VPN основан на Shadowsocks мы будет использовать пакеты:
shadowsocks-libev-ss-local
shadowsocks-libev-ss-redir
shadowsocks-libev-ss-rules
shadowsocks-libev-ss-tunnel
И для настройки в интерфейсе LUCI
luci-app-shadowsocks-libev
Устанавливаем пакеты:
opkg update
opkg install shadowsocks-libev-ss-local shadowsocks-libev-ss-redir shadowsocks-libev-ss-rules shadowsocks-libev-ss-tunnel
opkg install luci-app-shadowsocks-libev
Далее нам потребуется ключ доступа к Outline
Запускаем Outline Manager
Добавляем ключ либо используем существующий
Копируем ключ доступа, в нём содержатся IP адрес сервера и порт подключения и пароль в зашифрованном виде
ss://[пароль-шифрованный]@IP:Port/?outline=1
Далее на примере LUCI (OpenWRT 19.07)
Переходим в раздел Службы - Shadowsocks-libev
Переходим во вкладку Remote Servers
Сюда вставляем IP адрес, порт сервера
Для получения пароля нужен декодер формата Base64, например Base64 Decode and Encode - Online
Вставляем полученный пароль и выбираем нужный метод шифрования из выпадающего списка после чего убираем галку из поля Отключить.
Применяем изменения
В актуальной версии OpenWRT в разделе Remote Servers есть опция Ссылка на импорт, туда просто вставляем наш код доступа из Outline и получаем готовую запись в конфиге.
Далее возвращаемся на вкладку Local Instances
Здесь мы видим шаблоны созданные по умолчанию, нам нужен шаблон ss_redir
Для начала перейдем в ss_redir.hj (или ss_redir.hi или можно создать новый, это не принципиально)
Проверяем чтобы в графе Remote Server был сервер с данными Outline, убираем галку напротив Отключить
Далее переходим на вкладку Redir Rules
Проверяем чтобы ss-redir for TCP и UDP соответствовал выбранному ранее пункту (hj, hi или тому который вы сделали)
По умолчанию весь трафик будет идти через прокси, поэтому оставляем вариант forward, убеждаемся что нет галки напротив Отключить и переходим на вкладку Source Settings
Здесь оставляем настройки по умолчанию, далее переходим в Destination Settings
Здесь задаём для Dst default - forward (по умолчанию весь трафик будет идти через прокси, о других вариантах будет в конце статьи)
Нажимаем Применить и проверяем работу.
Так будет выглядеть конфиг /etc/config/shadowsocks-libev
config server 'sss0'
option server '$OUTLINE_IP'
option server_port '$PORT'
option method 'chacha20-ietf-poly1305'
option password '$DECRYPTED_PASSWORD'
config ss_tunnel
option server 'sss0'
option local_address '0.0.0.0'
option mode 'tcp_and_udp'
option timeout '60'
config ss_redir 'hj'
option server 'sss0'
option local_address '0.0.0.0'
option local_port '1100'
option mode 'tcp_and_udp'
option timeout '60'
option fast_open '1'
option verbose '1'
option reuse_port '1'
config ss_rules 'ss_rules'
option src_default 'checkdst'
option dst_forward_recentrst '0'
option redir_tcp 'hj'
option redir_udp 'hj'
option local_default 'forward'
option dst_default 'forward'
При желании можно использовать Outline только для списка адресов (например списки antifilter.download)
В этом случае в общих настройках меняем forward на check-dst
В разделе Destination Settings меняем политику по умолчанию Dst default на bypass а в пункт Dst ip/net forward file добавляем ваш список адресов/подсетей которые должны работать через прокси.
Нажимаем Применить и проверяем работоспособность.
Комментарии (5)
Sigest
17.07.2023 08:21А кто может подсказать?
Есть у меня Outline сервер, уже 2 года ему. На всех девайсах пользовался клиентом - на десктопе, мобильном. Все работает нормально.
Также в наличии OpenWRT рутоер.Сделал по инструкции из этой статьи, но не работает в полной мере. Не работает DNS. Пинги по айпи самое главное идут, но по доменному имени ни один сайт не доступен. В Outline Manager по роутеровскому клиенту трафик виден, видно что идут пакеты. Я могу конечно в настройках сетевой карты прописать DNSы, но хочется чтобы без костылей работало.
foxyrus
Лучше не доверять декодирование строки с паролем сторонним сервисам, а заюзать свою консоль
Orbit67
О каком либо доверии многие даже не ведают, основной критерий для них это удобство.
Andrevich Автор
Согласен с вами абсолютно
Andrevich Автор
Кстати, все пароли в удобоваримом виде хранятся в файле /opt/outline/persisted-state/outline-ss-server/config.yml . Если уж задействовать консоль, можно оттуда вытащить