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
![](https://habrastorage.org/getpro/habr/upload_files/53c/aa1/8a3/53caa18a387b40b1c5ac7e28e7c4a3e6.png)
Добавляем ключ либо используем существующий
![](https://habrastorage.org/getpro/habr/upload_files/361/534/f63/361534f630e72383f5cecc7759b05109.png)
Копируем ключ доступа, в нём содержатся IP адрес сервера и порт подключения и пароль в зашифрованном виде
ss://[пароль-шифрованный]@IP:Port/?outline=1
Далее на примере LUCI (OpenWRT 19.07)
Переходим в раздел Службы - Shadowsocks-libev
![](https://habrastorage.org/getpro/habr/upload_files/095/d50/e94/095d50e9439dd44112435e07cfbbadfe.png)
Переходим во вкладку Remote Servers
![](https://habrastorage.org/getpro/habr/upload_files/e6a/ef0/fde/e6aef0fdec082cc356a86bb3eef641a1.png)
Сюда вставляем IP адрес, порт сервера
Для получения пароля нужен декодер формата Base64, например Base64 Decode and Encode - Online
![Красным подчеркнут пароль, слева от него метод шифрования Красным подчеркнут пароль, слева от него метод шифрования](https://habrastorage.org/getpro/habr/upload_files/204/5c8/d4a/2045c8d4a205a1a41facd625aa1023de.png)
Вставляем полученный пароль и выбираем нужный метод шифрования из выпадающего списка после чего убираем галку из поля Отключить.
Применяем изменения
В актуальной версии OpenWRT в разделе Remote Servers есть опция Ссылка на импорт, туда просто вставляем наш код доступа из Outline и получаем готовую запись в конфиге.
![](https://habrastorage.org/getpro/habr/upload_files/839/06f/61f/83906f61fd6da7e6bbfdf52c2fba54c1.png)
Далее возвращаемся на вкладку Local Instances
![](https://habrastorage.org/getpro/habr/upload_files/c2c/c10/4e1/c2cc104e170395a47a9729567bbf533f.png)
Здесь мы видим шаблоны созданные по умолчанию, нам нужен шаблон ss_redir
Для начала перейдем в ss_redir.hj (или ss_redir.hi или можно создать новый, это не принципиально)
![](https://habrastorage.org/getpro/habr/upload_files/84e/37a/585/84e37a585c27dded054cbe4d90649c9a.png)
Проверяем чтобы в графе Remote Server был сервер с данными Outline, убираем галку напротив Отключить
Далее переходим на вкладку Redir Rules
![](https://habrastorage.org/getpro/habr/upload_files/52d/8f6/ff6/52d8f6ff6b9264aede70c392ac4cd211.png)
Проверяем чтобы ss-redir for TCP и UDP соответствовал выбранному ранее пункту (hj, hi или тому который вы сделали)
По умолчанию весь трафик будет идти через прокси, поэтому оставляем вариант forward, убеждаемся что нет галки напротив Отключить и переходим на вкладку Source Settings
![](https://habrastorage.org/getpro/habr/upload_files/aa1/a6a/ce1/aa1a6ace1c5a0d17a4b4e3b778935472.png)
Здесь оставляем настройки по умолчанию, далее переходим в Destination Settings
![](https://habrastorage.org/getpro/habr/upload_files/3be/7a5/3da/3be7a53daf32d79f1fc49c57b74764ce.png)
Здесь задаём для 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
![](https://habrastorage.org/getpro/habr/upload_files/388/176/13a/38817613af2f748585cedd9696d8ced1.png)
В разделе Destination Settings меняем политику по умолчанию Dst default на bypass а в пункт Dst ip/net forward file добавляем ваш список адресов/подсетей которые должны работать через прокси.
![](https://habrastorage.org/getpro/habr/upload_files/f55/0a1/978/f550a1978c90dc8d26dc02b80fbdf38a.png)
Нажимаем Применить и проверяем работоспособность.
Комментарии (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 . Если уж задействовать консоль, можно оттуда вытащить