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)


  1. foxyrus
    17.07.2023 08:21
    +2

    Лучше не доверять декодирование строки с паролем сторонним сервисам, а заюзать свою консоль


    1. Orbit67
      17.07.2023 08:21

      О каком либо доверии многие даже не ведают, основной критерий для них это удобство.


    1. Andrevich Автор
      17.07.2023 08:21

      Согласен с вами абсолютно


    1. Andrevich Автор
      17.07.2023 08:21

      Кстати, все пароли в удобоваримом виде хранятся в файле /opt/outline/persisted-state/outline-ss-server/config.yml . Если уж задействовать консоль, можно оттуда вытащить


  1. Sigest
    17.07.2023 08:21

    А кто может подсказать?

    Есть у меня Outline сервер, уже 2 года ему. На всех девайсах пользовался клиентом - на десктопе, мобильном. Все работает нормально.

    Также в наличии OpenWRT рутоер.Сделал по инструкции из этой статьи, но не работает в полной мере. Не работает DNS. Пинги по айпи самое главное идут, но по доменному имени ни один сайт не доступен. В Outline Manager по роутеровскому клиенту трафик виден, видно что идут пакеты. Я могу конечно в настройках сетевой карты прописать DNSы, но хочется чтобы без костылей работало.