Skip to content

Latest commit

 

History

History
173 lines (107 loc) · 7.87 KB

README.ru.md

File metadata and controls

173 lines (107 loc) · 7.87 KB

English | Русский

Клиент WireGuard для роутеров на прошивке Padavan

Один исполняемый файл, требующий для работы только стандартный файл конфигурации WireGuard.

Необходимые условия

  1. Прошивка с поддержкой WireGuard.
    Например padavan-ng от Алексея, установленная и работающая на роутере

  2. Возможность выполнять команды на роутере.
    Предпочтительнее через SSH, но можно и в веб-интерфейсе роутера.

    Подробнее

    Включите SSH сервер в веб-интерфейсе роутера: АдминистрированиеСервисыВключить SSH-сервер?Да

    Для доступа по SSH используются те же данные, что и для входа в веб-интерфейс.

    В Linux, Mac OS и Windows 10+ SSH клиент обычно предустановлен, просто откройте терминал и выполните подключение:

    В более старых версиях Windows можно использовать PuTTY, Tabby или другие SSH клиенты.

    При установленном SSH клиенте часто можно подключиться, просто перейдя по ссылке

    Вставьте её в адресную строку браузера вручную и нажмите Enter — GitHub не позволяет делать активные ссылки с нестандартными протоколами.

  3. Возможность копировать файлы на роутер.
    Обычно для этого используется SFTP, он работает на базе SSH.

    Подробнее

    В Windows можно использовать WinSCP, в Mac OS — Cyberduck. В Linux поддержка SFTP обычно встроена в ваш файловый менеджер, загляните в раздел "Сеть" или "Другие места".

    Подключиться обычно можно, просто перейдя по ссылке

    sftp://[email protected]/etc/storage/
    

    Вставьте её в адресную строку браузера вручную и нажмите Enter — GitHub не позволяет делать активные ссылки с нестандартными протоколами.

Установка и настройка WireGuard клиента

Я в основном буду использовать команды во избежание неверной интерпретации, но операции с файлами / папками, конечно, можно также выполнить и через SFTP.

  1. Если у вас установлена предыдущая версия клиента Wireguard, состоявшая из нескольких .sh файлов, её требуется отключить / удалить. Пока можно просто переместить папку с ним, не удаляя:

    mv /etc/storage/wireguard /etc/storage/wireguard.bak
  2. Создайте папку wireguard в /etc/storage на роутере:

    mkdir /etc/storage/wireguard
  3. Скопируйте в неё файл client.sh:

    wget https://github.com/shvchk/padavan-wireguard-client/raw/main/client.sh -O /etc/storage/wireguard/client.sh

    [!WARNING]
    Рекомендую проверить скрипт client.sh перед запуском. Это хорошая практика перед запуском любого кода на вашем устройстве, особенно удалённого кода.

  4. Сделайте его исполняемым:

    chmod +x /etc/storage/wireguard/client.sh
  5. Скопируйте конфигурацию клиента WireGuard в /etc/storage/wireguard

    Имя файла конфигурации будет использовано в качестве имени интерфейса. Например, для файла wg0.conf будет создан интерфейс wg0.

    [!IMPORTANT]
    Имя должно содержать только латинские буквы, цифры и / или символы _ = + . -, быть короче 16 символов и заканчиваться на .conf. В случае наличия нескольких файлов конфигурации, будет использован первый по алфавиту.

  6. Запустите клиент WireGuard:

    /etc/storage/wireguard/client.sh start
  7. Проверьте, работает ли интернет на роутере и ваших устройствах:

    ping -c 3 -W 1 1.1.1.1
  8. В случае проблем, выключите клиент WireGuard:

    /etc/storage/wireguard/client.sh stop
  9. После того, как вы убедились, что всё хорошо работает, настройте автозапуск:

    /etc/storage/wireguard/client.sh autostart enable
  10. Сохраните изменения:

    mtd_storage.sh save
  11. Перезагрузите роутер

Удаление

/etc/storage/wireguard/client.sh stop
/etc/storage/wireguard/client.sh autostart disable
rm -rf /etc/storage/wireguard
mtd_storage.sh save

Добавление исключений

Исключения можно добавлить в одном из этих файлов:

  • /etc/storage/started_script.sh (в веб интерфейсе: ПерсонализацияСкриптыВыполнить после полного запуска маршрутизатора)

  • /etc/storage/post_iptables_script.sh (в веб интерфейсе: ПерсонализацияСкриптыВыполнить после перезапуска правил брандмауэра)

Сначала добавьте небольшую вспомогательную функцию:

direct() {
  ip rule del $1 $2 || :
  ip rule add $1 $2 table main pref 30
}

Затем её можно использовать так: direct <to|from> <IP-адрес|подсеть>. Например:

  • Направить напрямую трафик к IP 9.9.9.9: direct to 9.9.9.9

  • Направить напрямую трафик к подсети 1.2.0.0/16: direct to 1.2.0.0/16

  • Направить напрямую трафик от IP 192.168.1.11: direct from 192.168.1.11

  • Направить напрямую трафик от подсети 10.11.12.0/24: direct to 10.11.12.0/24

Таких правил можно добавить сколько угодно, по одному на строку.

При редактировании через SSH не забудьте записать изменения в постоянную память:

mtd_storage.sh save